karma.conf.js
const path = require('path');
const packageJson = require('./package');
const init = {
webpack: {
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/,
},
{
test: /\.json$/,
loader: 'json',
},
],
},
resolve: {
extensions: ['', '.js', '.json'],
},
devtool: 'inline-source-map',
},
webpackMiddleware: {
quiet: true,
noInfo: true,
},
files: [
'test/index.js',
],
preprocessors: {
'test/**/*.js': ['webpack', 'sourcemap'],
},
colors: true,
browsers: ['Chrome'],
frameworks: ['mocha'],
client: {
mocha: {
timeout: 10000,
},
},
reporters: ['mocha'],
plugins: [
'karma-phantomjs-launcher',
'karma-chrome-launcher',
'karma-sauce-launcher',
'karma-mocha',
'karma-webpack',
'karma-sourcemap-loader',
'karma-mocha-reporter',
'karma-coverage',
],
};
switch (process.env.npm_lifecycle_event) {
case 'test':
if (process.env.TRAVIS) {
init.browsers = ['PhantomJS'];
init.phantomjsLauncher = {
exitOnResourceError: true,
};
}
init.singleRun = true;
init.webpack.module.loaders.push({
test: /\.js$/,
loader: 'isparta',
include: path.resolve('src'),
});
init.reporters.push('coverage');
init.coverageReporter = {
reporters: [
{
type: 'lcov',
dir: 'coverage',
subdir: '.',
},
{
type: 'text',
},
],
};
break;
case 'test-cloud':
init.singleRun = true;
init.reporters = ['dots', 'saucelabs'];
init.customLaunchers = {
sl_chrome: {
base: 'SauceLabs',
browserName: 'chrome',
version: '35',
},
sl_firefox: {
base: 'SauceLabs',
browserName: 'firefox',
version: '40',
},
sl_ios_safari: {
base: 'SauceLabs',
browserName: 'iphone',
version: '7.1',
},
sl_android: {
base: 'SauceLabs',
browserName: 'android',
version: '4.4',
},
sl_ie: {
base: 'SauceLabs',
browserName: 'internet explorer',
version: '10',
},
};
init.browsers = Object.keys(init.customLaunchers);
init.sauceLabs = {
recordVideo: true,
recordScreenshots: true,
testName: packageJson.name,
};
init.browserNoActivityTimeout = 100000;
break;
}
module.exports = (config) => {
config.set(init);
};