// Karma configuration module.exports = function(config) { var browser = (process.env.BROWSER === '' || process.env.BROWSER === 'chrome') ? 'Chrome_no_sandbox' : process.env.BROWSER var travis = process.env.TRAVIS; var files = function() { // List of tests that can run in 'any' browser. var filteredFiles = [ // Application files. 'src/web_app/js/adapter.js', 'src/web_app/js/constants.js', 'src/web_app/js/util.js', 'src/web_app/js/sdputils.js', 'src/web_app/js/enums.js', 'src/web_app/js/analytics.js', 'src/web_app/js/appcontroller.js', 'src/web_app/js/appwindow.js', 'src/web_app/js/call.js', 'src/web_app/js/infobox.js', 'src/web_app/js/loopback.js', 'src/web_app/js/peerconnectionclient.js', 'src/web_app/js/roomselection.js', 'src/web_app/js/signalingchannel.js', 'src/web_app/js/stats.js', 'src/web_app/js/storage.js', 'src/web_app/js/windowport.js', // Test files. 'src/web_app/js/testpolyfills.js', 'src/web_app/js/test_mocks.js', 'src/web_app/js/appcontroller_test.js', 'src/web_app/js/analytics_test.js', 'src/web_app/js/call_test.js', 'src/web_app/js/infobox_test.js', 'src/web_app/js/peerconnectionclient_test.js', 'src/web_app/js/remotewebsocket_test.js', 'src/web_app/js/roomselection_test.js', 'src/web_app/js/sdputils_test.js', 'src/web_app/js/signalingchannel_test.js', 'src/web_app/js/utils_test.js' ]; return filteredFiles; } let chromeFlags = [ '--use-fake-device-for-media-stream', '--use-fake-ui-for-media-stream', '--no-sandbox', '--headless', '--disable-gpu', '--remote-debugging-port=9222' ]; config.set({ // 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: ['jasmine'], // list of files / patterns to load in the browser // Make sure to have them in the correct order. files: files(), // list of files to exclude exclude: [ ], // preprocess matching files before serving them to the browser // available preprocessors: // https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { // Enable this with the autoWatch feature below if you want eslint to run // on each file change. // 'src/web_app/js/*.js': ['eslint'] }, eslint: { stopOnError: false, stopOnWarning: false, showWarnings: true, engine: { configFile: 'build/.eslintrc' } }, // Capture browser JavaScript console log output. client: { // Enable console capture on travis only. captureConsole: (travis) ? true : false }, // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter reporters: ['progress'], // 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 // Enable full logging on travis only. logLevel: (travis) ? config.LOG_DEBUG : config.LOG_DISABLE, // enable / disable watching file and executing tests whenever any file // changes autoWatch: false, // start these browsers // available browser launchers: // https://npmjs.org/browse/keyword/karma-launcher browsers: [browser[0].toUpperCase() + browser.substr(1)], customLaunchers: { Chrome_no_sandbox: { base: 'Chrome', flags: chromeFlags } }, // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: true, // Concurrency level // how many browser should be started simultaneous concurrency: 1 }) }