| const isDocker = require('is-docker')(); | |
| module.exports = function(config) { | |
| // Set the default values to be what are needed when testing the | |
| // WebAssembly build locally. | |
| let cfg = { | |
| // frameworks to use | |
| // available frameworks: https://npmjs.org/browse/keyword/karma-adapter | |
| frameworks: ['jasmine'], | |
| // list of files / patterns to load in the browser | |
| files: [ | |
| { pattern: 'npm-wasm/bin/test/pathkit.wasm', included:false, served:true}, | |
| { pattern: 'tests/*.json', included:false, served:true}, | |
| 'tests/testReporter.js', | |
| 'npm-wasm/bin/test/pathkit.js', | |
| 'tests/pathkitinit.js', | |
| 'tests/*.spec.js' | |
| ], | |
| proxies: { | |
| '/pathkit/': '/base/npm-wasm/bin/test/' | |
| }, | |
| // test results reporter to use | |
| // possible values: 'dots', 'progress' | |
| // available reporters: https://npmjs.org/browse/keyword/karma-reporter | |
| reporters: ['progress'], | |
| // web server port | |
| port: 4444, | |
| // 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: true, | |
| browserDisconnectTimeout: 20000, | |
| browserNoActivityTimeout: 20000, | |
| // start these browsers | |
| browsers: ['Chrome'], | |
| // Continuous Integration mode | |
| // if true, Karma captures browsers, runs the tests and exits | |
| singleRun: false, | |
| // Concurrency level | |
| // how many browser should be started simultaneous | |
| concurrency: Infinity, | |
| }; | |
| if (isDocker) { | |
| // See https://hackernoon.com/running-karma-tests-with-headless-chrome-inside-docker-ae4aceb06ed3 | |
| cfg.browsers = ['ChromeHeadlessNoSandbox'], | |
| cfg.customLaunchers = { | |
| ChromeHeadlessNoSandbox: { | |
| base: 'ChromeHeadless', | |
| flags: [ | |
| // Without this flag, we see an error: | |
| // Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted | |
| '--no-sandbox', | |
| // may help tests be less flaky | |
| // https://peter.sh/experiments/chromium-command-line-switches/#browser-test | |
| '--browser-test', | |
| // This can also help avoid crashes/timeouts: | |
| // https://github.com/GoogleChrome/puppeteer/issues/1834 | |
| '--disable-dev-shm-usage', | |
| ], | |
| }, | |
| }; | |
| } | |
| if (process.env.ASM_JS) { | |
| console.log('asm.js is under test'); | |
| cfg.files = [ | |
| { pattern: 'npm-asmjs/bin/test/pathkit.js.mem', included:false, served:true}, | |
| { pattern: 'tests/*.json', included:false, served:true}, | |
| 'tests/testReporter.js', | |
| 'npm-asmjs/bin/test/pathkit.js', | |
| 'tests/pathkitinit.js', | |
| 'tests/*.spec.js' | |
| ]; | |
| cfg.proxies = { | |
| '/pathkit/': '/base/npm-asmjs/bin/test/' | |
| }; | |
| } else { | |
| console.log('wasm is under test'); | |
| } | |
| config.set(cfg); | |
| } |