1cb93a386Sopenharmony_ciconst isDocker = require('is-docker')(); 2cb93a386Sopenharmony_ci 3cb93a386Sopenharmony_cimodule.exports = function(config) { 4cb93a386Sopenharmony_ci // Set the default values to be what are needed when testing the 5cb93a386Sopenharmony_ci // WebAssembly build locally. 6cb93a386Sopenharmony_ci let cfg = { 7cb93a386Sopenharmony_ci // frameworks to use 8cb93a386Sopenharmony_ci // available frameworks: https://npmjs.org/browse/keyword/karma-adapter 9cb93a386Sopenharmony_ci frameworks: ['jasmine'], 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci // list of files / patterns to load in the browser 12cb93a386Sopenharmony_ci files: [ 13cb93a386Sopenharmony_ci { pattern: 'npm-wasm/bin/pathkit.wasm', included:false, served:true}, 14cb93a386Sopenharmony_ci 'perf/perfReporter.js', 15cb93a386Sopenharmony_ci 'npm-wasm/bin/pathkit.js', 16cb93a386Sopenharmony_ci 'tests/pathkitinit.js', 17cb93a386Sopenharmony_ci 'perf/*.bench.js' 18cb93a386Sopenharmony_ci ], 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_ci proxies: { 21cb93a386Sopenharmony_ci '/pathkit/': '/base/npm-wasm/bin/' 22cb93a386Sopenharmony_ci }, 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_ci // test results reporter to use 25cb93a386Sopenharmony_ci // possible values: 'dots', 'progress' 26cb93a386Sopenharmony_ci // available reporters: https://npmjs.org/browse/keyword/karma-reporter 27cb93a386Sopenharmony_ci reporters: ['dots'], 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_ci // web server port 30cb93a386Sopenharmony_ci port: 4444, 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_ci // enable / disable colors in the output (reporters and logs) 33cb93a386Sopenharmony_ci colors: true, 34cb93a386Sopenharmony_ci 35cb93a386Sopenharmony_ci // level of logging 36cb93a386Sopenharmony_ci // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 37cb93a386Sopenharmony_ci logLevel: config.LOG_INFO, 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ci // enable / disable watching file and executing tests whenever any file changes 40cb93a386Sopenharmony_ci autoWatch: true, 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_ci browserDisconnectTimeout: 20000, 43cb93a386Sopenharmony_ci browserNoActivityTimeout: 20000, 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_ci // start these browsers 46cb93a386Sopenharmony_ci browsers: ['Chrome'], 47cb93a386Sopenharmony_ci 48cb93a386Sopenharmony_ci // Continuous Integration mode 49cb93a386Sopenharmony_ci // if true, Karma captures browsers, runs the tests and exits 50cb93a386Sopenharmony_ci singleRun: false, 51cb93a386Sopenharmony_ci 52cb93a386Sopenharmony_ci // Concurrency level 53cb93a386Sopenharmony_ci // how many browser should be started simultaneous 54cb93a386Sopenharmony_ci concurrency: Infinity, 55cb93a386Sopenharmony_ci }; 56cb93a386Sopenharmony_ci 57cb93a386Sopenharmony_ci if (isDocker) { 58cb93a386Sopenharmony_ci // See https://hackernoon.com/running-karma-tests-with-headless-chrome-inside-docker-ae4aceb06ed3 59cb93a386Sopenharmony_ci cfg.browsers = ['ChromeHeadlessNoSandbox'], 60cb93a386Sopenharmony_ci cfg.customLaunchers = { 61cb93a386Sopenharmony_ci ChromeHeadlessNoSandbox: { 62cb93a386Sopenharmony_ci base: 'ChromeHeadless', 63cb93a386Sopenharmony_ci flags: [ 64cb93a386Sopenharmony_ci // Without this flag, we see an error: 65cb93a386Sopenharmony_ci // Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted 66cb93a386Sopenharmony_ci '--no-sandbox', 67cb93a386Sopenharmony_ci // may help tests be less flaky 68cb93a386Sopenharmony_ci // https://peter.sh/experiments/chromium-command-line-switches/#browser-test 69cb93a386Sopenharmony_ci '--browser-test', 70cb93a386Sopenharmony_ci // This can also help avoid crashes/timeouts: 71cb93a386Sopenharmony_ci // https://github.com/GoogleChrome/puppeteer/issues/1834 72cb93a386Sopenharmony_ci '--disable-dev-shm-usage', 73cb93a386Sopenharmony_ci ], 74cb93a386Sopenharmony_ci }, 75cb93a386Sopenharmony_ci }; 76cb93a386Sopenharmony_ci } 77cb93a386Sopenharmony_ci 78cb93a386Sopenharmony_ci if (process.env.ASM_JS) { 79cb93a386Sopenharmony_ci console.log('asm.js is under test'); 80cb93a386Sopenharmony_ci cfg.files = [ 81cb93a386Sopenharmony_ci { pattern: 'npm-asmjs/bin/pathkit.js.mem', included:false, served:true}, 82cb93a386Sopenharmony_ci 'perf/perfReporter.js', 83cb93a386Sopenharmony_ci 'npm-asmjs/bin/pathkit.js', 84cb93a386Sopenharmony_ci 'tests/pathkitinit.js', 85cb93a386Sopenharmony_ci 'perf/*.bench.js' 86cb93a386Sopenharmony_ci ]; 87cb93a386Sopenharmony_ci 88cb93a386Sopenharmony_ci cfg.proxies = { 89cb93a386Sopenharmony_ci '/pathkit/': '/base/npm-asmjs/bin/' 90cb93a386Sopenharmony_ci }; 91cb93a386Sopenharmony_ci } else { 92cb93a386Sopenharmony_ci console.log('wasm is under test'); 93cb93a386Sopenharmony_ci } 94cb93a386Sopenharmony_ci 95cb93a386Sopenharmony_ci config.set(cfg); 96cb93a386Sopenharmony_ci} 97