| // Karma configuration |
| |
| module.exports = (config) => { |
| const customLaunchers = {}; |
| let browsers = []; |
| let useSauce = false; |
| |
| // use Sauce when running on Travis |
| if (process.env.TRAVIS_JOB_NUMBER) { |
| useSauce = true; |
| } |
| |
| if (useSauce && process.env.TEST_BROWSER_NAME && process.env.TEST_BROWSER_NAME != 'PhantomJS') { |
| const names = process.env.TEST_BROWSER_NAME.split(','); |
| const platforms = process.env.TEST_BROWSER_OS.split(','); |
| const versions = process.env.TEST_BROWSER_VERSION |
| ? process.env.TEST_BROWSER_VERSION.split(',') |
| : [null]; |
| |
| for (let i = 0; i < names.length; i++) { |
| for (let j = 0; j < platforms.length; j++) { |
| for (let k = 0; k < versions.length; k++) { |
| let launcher_name = 'sl_' + platforms[j].replace(/[^a-zA-Z0-9]/g, '') + '_' + names[i]; |
| if (versions[k]) { |
| launcher_name += '_' + versions[k]; |
| } |
| |
| customLaunchers[launcher_name] = { |
| base: 'SauceLabs', |
| browserName: names[i], |
| platform: platforms[j], |
| }; |
| |
| if (versions[i]) { |
| customLaunchers[launcher_name].version = versions[k]; |
| } |
| } |
| } |
| } |
| |
| browsers = Object.keys(customLaunchers); |
| } else { |
| useSauce = false; |
| //browsers = ['PhantomJS']; |
| browsers = []; |
| } |
| |
| const my_conf = { |
| |
| // base path that will be used to resolve all patterns (eg. files, exclude) |
| basePath: '', |
| |
| // frameworks to use |
| // available frameworks: https://npmjs.org/browse/keyword/karma-adapter |
| frameworks: ['mocha', 'sinon-chai'], |
| |
| // list of files / patterns to load in the browser (loaded in order) |
| files: [ |
| { pattern: 'app/localization.js', included: false }, |
| { pattern: 'app/webutil.js', included: false }, |
| { pattern: 'core/**/*.js', included: false }, |
| { pattern: 'vendor/pako/**/*.js', included: false }, |
| { pattern: 'vendor/browser-es-module-loader/dist/*.js*', included: false }, |
| { pattern: 'tests/test.*.js', included: false }, |
| { pattern: 'tests/fake.*.js', included: false }, |
| { pattern: 'tests/assertions.js', included: false }, |
| 'vendor/promise.js', |
| 'tests/karma-test-main.js', |
| ], |
| |
| client: { |
| mocha: { |
| // replace Karma debug page with mocha display |
| 'reporter': 'html', |
| 'ui': 'bdd' |
| } |
| }, |
| |
| // list of files to exclude |
| exclude: [ |
| ], |
| |
| customLaunchers: customLaunchers, |
| |
| // start these browsers |
| // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher |
| browsers: browsers, |
| |
| // test results reporter to use |
| // possible values: 'dots', 'progress' |
| // available reporters: https://npmjs.org/browse/keyword/karma-reporter |
| reporters: ['mocha'], |
| |
| |
| // web server port |
| port: 9876, |
| |
| |
| // enable / disable colors in the output (reporters and logs) |
| colors: true, |
| |
| |
| // level of logging |
| // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG |
| logLevel: config.LOG_INFO, |
| |
| |
| // enable / disable watching file and executing tests whenever any file changes |
| autoWatch: false, |
| |
| // Continuous Integration mode |
| // if true, Karma captures browsers, runs the tests and exits |
| singleRun: true, |
| |
| // Increase timeout in case connection is slow/we run more browsers than possible |
| // (we currently get 3 for free, and we try to run 7, so it can take a while) |
| captureTimeout: 240000, |
| |
| // similarly to above |
| browserNoActivityTimeout: 100000, |
| }; |
| |
| if (useSauce) { |
| my_conf.reporters.push('saucelabs'); |
| my_conf.captureTimeout = 0; // use SL timeout |
| my_conf.sauceLabs = { |
| testName: 'noVNC Tests (all)', |
| startConnect: false, |
| tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER |
| }; |
| } |
| |
| config.set(my_conf); |
| }; |