import { argv } from 'yargs' import config from '../config' import webpackConfig from './webpack.config' import _debug from 'debug' const debug = _debug('app:karma') debug('Create configuration.') const karmaConfig = { basePath: '../', // project root in relation to bin/karma.js files: [ { pattern: `./${config.dir_test}/test-bundler.js`, watched: false, served: true, included: true } ], singleRun: !argv.watch, frameworks: ['mocha'], reporters: ['mocha'], preprocessors: { [`${config.dir_test}/test-bundler.js`]: ['webpack'] }, browsers: ['PhantomJS'], webpack: { devtool: 'cheap-module-source-map', resolve: { ...webpackConfig.resolve, alias: { ...webpackConfig.resolve.alias, sinon: 'sinon/pkg/sinon.js' } }, plugins: webpackConfig.plugins, module: { noParse: [ /\/sinon\.js/ ], loaders: webpackConfig.module.loaders.concat([ { test: /sinon(\\|\/)pkg(\\|\/)sinon\.js/, loader: 'imports?define=>false,require=>false' } ]) }, // Enzyme fix, see: // https://github.com/airbnb/enzyme/issues/47 externals: { ...webpackConfig.externals, 'react/addons': true, 'react/lib/ExecutionEnvironment': true, 'react/lib/ReactContext': 'window' }, sassLoader: webpackConfig.sassLoader }, webpackMiddleware: { noInfo: true }, coverageReporter: { reporters: config.coverage_reporters } } if (config.globals.__COVERAGE__) { karmaConfig.reporters.push('coverage') karmaConfig.webpack.module.preLoaders = [{ test: /\.(js|jsx)$/, include: new RegExp(config.dir_client), loader: 'isparta', exclude: /node_modules/ }] } // cannot use `export default` because of Karma. module.exports = (cfg) => cfg.set(karmaConfig)