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