react-ab-test
Version:
A/B testing React components and debug tools. Isomorphic with a simple, universal interface. Well documented and lightweight. Tested in popular browsers and Node.js. Includes helpers for Mixpanel and Segment.com.
148 lines (147 loc) • 3.76 kB
JavaScript
var path = require("path");
module.exports = function (karma) {
var options = {
files: [
'tests.bundle.js'
],
frameworks: ['mocha'],
plugins: [
'karma-firefox-launcher',
'karma-chrome-launcher',
'karma-mocha',
'karma-coveralls',
'karma-coverage',
'karma-sourcemap-loader',
'karma-webpack',
'karma-browserstack-launcher'
],
preprocessors: {
'tests.bundle.js': ['webpack', 'sourcemap']
},
customLaunchers: {
Chrome_without_localstorage: {
base: 'Chrome',
flags: ['--disable-local-storage']
},
bs_windows_7_ie_9: {
base: 'BrowserStack',
os: 'Windows',
os_version: '7',
browser: 'ie',
browser_version : '9.0'
},
bs_windows_7_ie_10: {
base: 'BrowserStack',
os: 'Windows',
os_version: '7',
browser: 'ie',
browser_version : '10.0'
},
bs_windows_7_ie_11: {
base: 'BrowserStack',
os: 'Windows',
os_version: '7',
browser: 'ie',
browser_version : '11.0'
},
bs_windows_7_opera_latest: {
base: 'BrowserStack',
os: 'Windows',
os_version: '7',
browser: 'opera',
browser_version : 'latest'
},
bs_windows_7_firefox_latest: {
base: 'BrowserStack',
os: 'Windows',
os_version: '7',
browser: 'firefox',
browser_version : 'latest'
},
bs_windows_7_chrome_latest: {
base: 'BrowserStack',
os: 'Windows',
os_version: '7',
browser: 'chrome',
browser_version : 'latest'
},
bs_osx_yosemite_safari: {
base: 'BrowserStack',
os: 'OS X',
os_version: 'Yosemite',
browser: 'safari',
browser_version : 'latest'
},
bs_android_5_default: {
base: 'BrowserStack',
os_version: "5.0",
device: "Google Nexus 5",
browser_version: null,
os: "android",
browser: "android"
},
bs_ios_8_default: {
base: 'BrowserStack',
os_version: "8.3",
device: "iPhone 6",
browser_version: null,
os: "ios",
browser: "iphone"
}
},
reporters: ['dots', 'coverage'],
coverageReporter: {
type: 'lcov',
dir: 'coverage/'
},
singleRun: true,
webpack: {
resolve: {
extensions: ['', '.js', '.jsx']
},
devtool: 'inline-source-map',
module: {
loaders: [
{
test: /\.jsx$/,
exclude: /(node_modules|lib|example)/,
loader: 'babel',
query: {
cacheDirectory: true,
presets: ["stage-1", "es2015", "react"]
}
}, {
exclude: /(node_modules|lib|example)/,
loader: 'regenerator-loader',
test: /\.jsx$/
}, {
include: path.resolve('src'),
loader: 'isparta',
test: /\.jsx$/
}
]
}
},
browserNoActivityTimeout: 30000,
browserDisconnectTolerance: 2,
webpackMiddleware: {
noInfo: true,
}
};
if(process.env.BROWSERSTACK_USERNAME && process.env.BROWSERSTACK_ACCESS_KEY) {
options.browserStack = {
username: process.env.BROWSERSTACK_USERNAME,
accessKey: process.env.BROWSERSTACK_ACCESS_KEY,
pollingTimeout: 10000
};
options.browsers = Object.keys(options.customLaunchers).filter(function(key){
return key.indexOf("bs_") !== -1;
});
} else {
options.browsers = ['Chrome'];
}
if(process.env.COVERALLS_REPO_TOKEN) {
options.reporters.push('coveralls');
}
karma.set(options);
};