2016-10-04 11:50:26 +02:00
|
|
|
/*eslint no-var:0, object-shorthand:0 */
|
|
|
|
|
|
|
|
var coverage = String(process.env.COVERAGE)!=='false',
|
2016-11-08 15:07:07 +01:00
|
|
|
ci = String(process.env.CI).match(/^(1|true)$/gi),
|
|
|
|
pullRequest = !String(process.env.TRAVIS_PULL_REQUEST).match(/^(0|false|undefined)$/gi),
|
|
|
|
realBrowser = String(process.env.BROWSER).match(/^(1|true)$/gi),
|
|
|
|
sauceLabs = realBrowser && ci && !pullRequest,
|
|
|
|
performance = !coverage && !realBrowser && String(process.env.PERFORMANCE)!=='false',
|
2016-10-04 11:50:26 +02:00
|
|
|
webpack = require('webpack');
|
|
|
|
|
|
|
|
var sauceLabsLaunchers = {
|
|
|
|
sl_chrome: {
|
|
|
|
base: 'SauceLabs',
|
2016-11-08 15:07:07 +01:00
|
|
|
browserName: 'chrome',
|
|
|
|
platform: 'Windows 10'
|
2016-10-04 11:50:26 +02:00
|
|
|
},
|
|
|
|
sl_firefox: {
|
|
|
|
base: 'SauceLabs',
|
2016-11-08 15:07:07 +01:00
|
|
|
browserName: 'firefox',
|
|
|
|
platform: 'Windows 10'
|
2016-10-04 11:50:26 +02:00
|
|
|
},
|
2016-11-08 15:07:07 +01:00
|
|
|
sl_safari: {
|
2016-10-04 11:50:26 +02:00
|
|
|
base: 'SauceLabs',
|
2016-11-08 15:07:07 +01:00
|
|
|
browserName: 'safari',
|
|
|
|
platform: 'OS X 10.11'
|
|
|
|
},
|
|
|
|
sl_edge: {
|
|
|
|
base: 'SauceLabs',
|
|
|
|
browserName: 'MicrosoftEdge',
|
|
|
|
platform: 'Windows 10'
|
2016-10-04 11:50:26 +02:00
|
|
|
},
|
|
|
|
sl_ie_11: {
|
|
|
|
base: 'SauceLabs',
|
|
|
|
browserName: 'internet explorer',
|
2016-11-08 15:07:07 +01:00
|
|
|
version: '11.103',
|
|
|
|
platform: 'Windows 10'
|
2016-10-04 11:50:26 +02:00
|
|
|
},
|
|
|
|
sl_ie_10: {
|
|
|
|
base: 'SauceLabs',
|
|
|
|
browserName: 'internet explorer',
|
2016-11-08 15:07:07 +01:00
|
|
|
version: '10.0',
|
|
|
|
platform: 'Windows 7'
|
2016-10-04 11:50:26 +02:00
|
|
|
},
|
|
|
|
sl_ie_9: {
|
|
|
|
base: 'SauceLabs',
|
|
|
|
browserName: 'internet explorer',
|
2016-11-08 15:07:07 +01:00
|
|
|
version: '9.0',
|
|
|
|
platform: 'Windows 7'
|
2016-10-04 11:50:26 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2016-11-08 15:07:07 +01:00
|
|
|
var travisLaunchers = {
|
|
|
|
chrome_travis: {
|
|
|
|
base: 'Chrome',
|
|
|
|
flags: ['--no-sandbox']
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
var localBrowsers = realBrowser ? Object.keys(travisLaunchers) : ['PhantomJS'];
|
|
|
|
|
2016-10-04 11:50:26 +02:00
|
|
|
module.exports = function(config) {
|
|
|
|
config.set({
|
2016-11-08 15:07:07 +01:00
|
|
|
browsers: sauceLabs ? Object.keys(sauceLabsLaunchers) : localBrowsers,
|
2016-10-04 11:50:26 +02:00
|
|
|
|
|
|
|
frameworks: ['source-map-support', 'mocha', 'chai-sinon'],
|
|
|
|
|
|
|
|
reporters: ['mocha'].concat(
|
|
|
|
coverage ? 'coverage' : [],
|
|
|
|
sauceLabs ? 'saucelabs' : []
|
|
|
|
),
|
|
|
|
|
|
|
|
coverageReporter: {
|
|
|
|
reporters: [
|
|
|
|
{
|
|
|
|
type: 'text-summary'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
type: 'html',
|
|
|
|
dir: __dirname+'/../coverage'
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
|
|
|
|
mochaReporter: {
|
|
|
|
showDiff: true
|
|
|
|
},
|
|
|
|
|
|
|
|
browserLogOptions: { terminal: true },
|
|
|
|
browserConsoleLogOptions: { terminal: true },
|
|
|
|
|
|
|
|
browserNoActivityTimeout: 5 * 60 * 1000,
|
|
|
|
|
2016-11-08 15:07:07 +01:00
|
|
|
// Use only two browsers concurrently, works better with open source Sauce Labs remote testing
|
|
|
|
concurrency: 2,
|
|
|
|
|
2016-10-04 11:50:26 +02:00
|
|
|
// sauceLabs: {
|
|
|
|
// tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER || ('local'+require('./package.json').version),
|
|
|
|
// startConnect: false
|
|
|
|
// },
|
|
|
|
|
2016-11-08 15:07:07 +01:00
|
|
|
customLaunchers: sauceLabs ? sauceLabsLaunchers : travisLaunchers,
|
2016-10-04 11:50:26 +02:00
|
|
|
|
|
|
|
files: [
|
2016-11-08 15:07:07 +01:00
|
|
|
{ pattern: 'polyfills.js', watched: false },
|
2016-10-04 11:50:26 +02:00
|
|
|
{ pattern: '{browser,shared}/**.js', watched: false }
|
|
|
|
],
|
|
|
|
|
|
|
|
preprocessors: {
|
|
|
|
'**/*': ['webpack', 'sourcemap']
|
|
|
|
},
|
|
|
|
|
|
|
|
webpack: {
|
|
|
|
devtool: 'inline-source-map',
|
|
|
|
module: {
|
|
|
|
/* Transpile source and test files */
|
|
|
|
preLoaders: [
|
|
|
|
{
|
|
|
|
test: /\.jsx?$/,
|
|
|
|
exclude: /node_modules/,
|
|
|
|
loader: 'babel',
|
|
|
|
query: {
|
|
|
|
loose: 'all',
|
|
|
|
blacklist: ['es6.tailCall']
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
/* Only Instrument our source files for coverage */
|
|
|
|
loaders: [].concat( coverage ? {
|
|
|
|
test: /\.jsx?$/,
|
|
|
|
loader: 'isparta',
|
|
|
|
include: /src/
|
|
|
|
} : [])
|
|
|
|
},
|
|
|
|
resolve: {
|
2016-11-08 15:07:07 +01:00
|
|
|
// The React DevTools integration requires preact as a module
|
|
|
|
// rather than referencing source files inside the module
|
|
|
|
// directly
|
|
|
|
alias: { preact: '../src/preact' },
|
2016-10-04 11:50:26 +02:00
|
|
|
modulesDirectories: [__dirname, 'node_modules']
|
|
|
|
},
|
|
|
|
plugins: [
|
|
|
|
new webpack.DefinePlugin({
|
|
|
|
coverage: coverage,
|
|
|
|
NODE_ENV: JSON.stringify(process.env.NODE_ENV || ''),
|
|
|
|
ENABLE_PERFORMANCE: performance,
|
|
|
|
DISABLE_FLAKEY: !!String(process.env.FLAKEY).match(/^(0|false)$/gi)
|
|
|
|
})
|
|
|
|
]
|
|
|
|
},
|
|
|
|
|
|
|
|
webpackMiddleware: {
|
|
|
|
noInfo: true
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|