var path = require('path'); var basePath = '../../'; var absoluteBasePath = path.resolve(path.join(__dirname, basePath)); /* global process */ // configures browsers to run test against // any of [ 'ChromeHeadless', 'Chrome', 'Firefox', 'IE', 'PhantomJS' ] var browsers = (process.env.TEST_BROWSERS || 'PhantomJS') .replace(/^\s+|\s+$/, '') .split(/\s*,\s*/g) .map(function(browser) { if (browser === 'ChromeHeadless') { process.env.CHROME_BIN = require('puppeteer').executablePath(); // workaround https://github.com/GoogleChrome/puppeteer/issues/290 if (process.platform === 'linux') { return 'ChromeHeadless_Linux'; } } return browser; }); module.exports = function(karma) { karma.set({ basePath: basePath, frameworks: [ 'mocha', 'sinon-chai' ], files: [ 'test/suite.js' ], preprocessors: { 'test/suite.js': [ 'webpack', 'env' ] }, reporters: [ 'spec' ], customLaunchers: { ChromeHeadless_Linux: { base: 'ChromeHeadless', flags: [ '--no-sandbox', '--disable-setuid-sandbox' ], debug: true } }, browsers: browsers, browserNoActivityTimeout: 30000, singleRun: true, autoWatch: false, webpack: { mode: 'development', module: { rules: [ { test: /\.css|\.bpmn$/, use: 'raw-loader' } ] }, resolve: { mainFields: [ 'dev:module', 'browser', 'module', 'main' ], modules: [ 'node_modules', absoluteBasePath ] } } }); };