karma.conf.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. module.exports = function(config) {
  2. // workaround for https://github.com/karma-runner/karma-sauce-launcher/issues/40
  3. var saucelabsBatchID = Number(process.env.SAUCELABS_BATCH) - 1;
  4. var saucelabsConcurrency = 4;
  5. var saucelabsBrowsers = [
  6. // mobile
  7. {platform: 'OS X 10.10', browserName: 'iPhone', version: '8.1'},
  8. //{platform: 'OS X 10.10 ', browserName: 'iPhone', version: '6.0'},
  9. {platform: 'OS X 10.10', browserName: 'iPad', version: '8.1'},
  10. //{platform: 'OS X 10.10', browserName: 'iPad', version: '6.0'},
  11. {platform: 'Linux', browserName: 'android', version: '4.4'},
  12. {platform: 'Linux', browserName: 'android', version: '4.3'},
  13. // desktop (safari)
  14. {platform: 'OS X 10.8', browserName: 'safari', version: 6},
  15. {platform: 'OS X 10.9', browserName: 'safari', version: 7},
  16. {platform: 'OS X 10.10', browserName: 'safari', version: 8},
  17. // desktop (chrome)
  18. {platform: 'OS X 10.10', browserName: 'chrome', version: 39},
  19. {platform: 'OS X 10.10', browserName: 'chrome', version: 38},
  20. {platform: 'OS X 10.10', browserName: 'chrome', version: 37},
  21. {platform: 'Windows 7', browserName: 'chrome', version: 39},
  22. {platform: 'Windows 7', browserName: 'chrome', version: 38},
  23. {platform: 'Windows 7', browserName: 'chrome', version: 37},
  24. // desktop (firefox)
  25. {platform: 'Windows 7', browserName: 'firefox', version: 35},
  26. {platform: 'Windows 8', browserName: 'firefox', version: 35},
  27. {platform: 'OS X 10.10', browserName: 'firefox', version: 34},
  28. {platform: 'OS X 10.10', browserName: 'firefox', version: 33},
  29. {platform: 'OS X 10.10', browserName: 'firefox', version: 32},
  30. // desktop (internet explorer)
  31. {platform: 'Windows 8', browserName: 'iexplore', version: 10},
  32. {platform: 'Windows 8.1', browserName: 'iexplore', version: 11},
  33. {platform: 'Windows 7', browserName: 'iexplore', version: 9}
  34. ];
  35. if (process.env.TARGET === 'saucelabs') {
  36. saucelabsBrowsers = saucelabsBrowsers.slice(saucelabsBatchID * saucelabsConcurrency, saucelabsBatchID * saucelabsConcurrency + saucelabsConcurrency);
  37. if (!saucelabsBrowsers.length) process.exit(0);
  38. }
  39. var customLaunchers = {};
  40. saucelabsBrowsers.forEach(function(browser, i) {
  41. browser.base = 'SauceLabs';
  42. customLaunchers['SL_' + i] = browser;
  43. });
  44. var targets = {
  45. 'saucelabs': Object.keys(customLaunchers),
  46. 'phantomjs': ['PhantomJS']
  47. };
  48. var reporters = ['mocha'];
  49. if (process.env.TRAVIS_CI) {
  50. reporters = process.env.TARGET === 'saucelabs'
  51. ? ['saucelabs', 'mocha']
  52. : ['mocha', 'coverage', 'coveralls']
  53. }
  54. var browsers = targets[process.env.TARGET || 'phantomjs'];
  55. if (process.env.BROWSERS) {
  56. browsers = process.env.BROWSERS.split(',');
  57. }
  58. config.set({
  59. frameworks: ['mocha', 'chai'],
  60. files: [
  61. 'dist/css/selectize.default.css',
  62. 'bower_components/jquery/jquery.js',
  63. 'bower_components/microplugin/src/microplugin.js',
  64. 'bower_components/sifter/sifter.js',
  65. 'test/support/*.js',
  66. 'src/contrib/*.js',
  67. 'src/constants.js',
  68. 'src/utils.js',
  69. 'src/selectize.js',
  70. 'src/defaults.js',
  71. 'src/selectize.jquery.js',
  72. 'test/*.js'
  73. ],
  74. preprocessors: {
  75. 'src/*.js': ['coverage']
  76. },
  77. coverageReporter: {
  78. type: process.env.TRAVIS_CI && process.env.TARGET === 'phantomjs' ? 'lcov' : 'text-summary',
  79. dir: 'coverage/'
  80. },
  81. sauceLabs: {
  82. recordVideo: false,
  83. startConnect: true,
  84. tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER,
  85. build: process.env.TRAVIS_BUILD_NUMBER,
  86. testName: process.env.COMMIT_MESSAGE,
  87. tags: ['selectize', 'test']
  88. },
  89. customLaunchers: customLaunchers,
  90. reporters: reporters,
  91. port: 8888,
  92. colors: true,
  93. captureTimeout: 0,
  94. logLevel: config.LOG_INFO,
  95. browsers: browsers,
  96. browserDisconnectTolerance: 2,
  97. browserDisconnectTimeout: 10000,
  98. browserNoActivityTimeout: 120000,
  99. singleRun: true
  100. });
  101. };