// Karma configuration module.exports = function(config) { // bundler to test: webpack, browserify var bundler = process.env.BUNDLER || 'webpack'; var frameworks = ['mocha']; // main bundle preprocessors var preprocessors = []; // webworker bundle preprocessors (always use webpack) var workerPreprocessors = ['webpack', 'sourcemap']; // files/patterns to load var files = [ 'tests/karma/index.js', // for webworkers { pattern: 'lib/prime.worker.js', watched: false, included: false, served: true, nocache: false } ]; if(bundler === 'browserify') { frameworks.push(bundler); preprocessors.push(bundler); } else if(bundler === 'webpack') { preprocessors.push(bundler); preprocessors.push('sourcemap'); files.push('tests/karma/web-worker-rsa.js'); } else { throw Error('Unknown bundler'); } config.set({ // base path that will be used to resolve all patterns (eg. files, exclude) basePath: '', // frameworks to use // available frameworks: https://npmjs.org/browse/keyword/karma-adapter frameworks: frameworks, // list of files / patterns to load in the browser files: files, // list of files to exclude exclude: [ ], // preprocess matching files before serving them to the browser // available preprocessors: // https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { 'tests/unit/**.js': preprocessors, 'tests/karma/**.js': preprocessors, 'lib/prime.worker.js': workerPreprocessors }, webpack: { devtool: 'inline-source-map', node: { Buffer: false, process: false, crypto: false, setImmediate: false } }, browserify: { debug: true //transform: ['uglifyify'] }, // test results reporter to use // possible values: 'dots', 'progress' // available reporters: https://npmjs.org/browse/keyword/karma-reporter //reporters: ['progress'], reporters: ['mocha'], // web server port port: 9876, // 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: false, // start these browsers // available browser launchers: // https://npmjs.org/browse/keyword/karma-launcher //browsers: ['ChromeHeadless', 'Chrome', 'Firefox', 'Safari'], browsers: ['ChromeHeadless'], customLaunchers: { IE9: { base: 'IE', 'x-ua-compatible': 'IE=EmulateIE9' }, IE8: { base: 'IE', 'x-ua-compatible': 'IE=EmulateIE8' } }, // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits singleRun: true, // Concurrency level // how many browser should be started simultaneous concurrency: Infinity, // Mocha client: { mocha: { // increase from default 2s timeout: 20000 } }, // Proxied paths proxies: { '/forge/prime.worker.js': '/base/lib/prime.worker.js' } }); };