Home | History | Annotate | Download | only in pathkit
      1 const isDocker = require('is-docker')();
      2 
      3 module.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',
     16       'perf/*.bench.js'
     17     ],
     18 
     19     proxies: {
     20       '/pathkit/': '/base/npm-wasm/bin/'
     21     },
     22 
     23     // test results reporter to use
     24     // possible values: 'dots', 'progress'
     25     // available reporters: https://npmjs.org/browse/keyword/karma-reporter
     26     reporters: ['dots'],
     27 
     28     // web server port
     29     port: 4444,
     30 
     31     // enable / disable colors in the output (reporters and logs)
     32     colors: true,
     33 
     34     // level of logging
     35     // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
     36     logLevel: config.LOG_INFO,
     37 
     38     // enable / disable watching file and executing tests whenever any file changes
     39     autoWatch: true,
     40 
     41     browserDisconnectTimeout: 10000,
     42     browserNoActivityTimeout: 10000,
     43 
     44     // start these browsers
     45     browsers: ['Chrome'],
     46 
     47     // Continuous Integration mode
     48     // if true, Karma captures browsers, runs the tests and exits
     49     singleRun: false,
     50 
     51     // Concurrency level
     52     // how many browser should be started simultaneous
     53     concurrency: Infinity,
     54   };
     55 
     56   if (isDocker) {
     57     // See https://hackernoon.com/running-karma-tests-with-headless-chrome-inside-docker-ae4aceb06ed3
     58     cfg.browsers = ['ChromeHeadlessNoSandbox'],
     59     cfg.customLaunchers = {
     60         ChromeHeadlessNoSandbox: {
     61             base: 'ChromeHeadless',
     62             flags: [
     63             // Without this flag, we see an error:
     64             // Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted
     65                 '--no-sandbox'
     66             ],
     67         },
     68     };
     69   }
     70 
     71   if (process.env.ASM_JS) {
     72     console.log('asm.js is under test');
     73     cfg.files = [
     74       { pattern: 'npm-asmjs/bin/pathkit.js.mem', included:false, served:true},
     75       'perf/perfReporter.js',
     76       'npm-asmjs/bin/pathkit.js',
     77       'perf/*.bench.js'
     78     ];
     79 
     80     cfg.proxies = {
     81       '/pathkit/': '/base/npm-asmjs/bin/'
     82     };
     83   } else {
     84     console.log('wasm is under test');
     85   }
     86 
     87   config.set(cfg);
     88 }
     89