Skip to content

Commit c3cef52

Browse files
committed
Clean up Karma config
- Remove unused Firefox launcher - Don't run coverage by default locally - Use Babel for Karma config
1 parent 890bcf3 commit c3cef52

File tree

3 files changed

+153
-132
lines changed

3 files changed

+153
-132
lines changed

karma.conf.babel.js

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
import path from 'path'
2+
import webpack from 'webpack'
3+
4+
// Browsers to run on BrowserStack
5+
const CUSTOM_LAUNCHERS = {
6+
BS_Chrome: {
7+
base: 'BrowserStack',
8+
os: 'Windows',
9+
os_version: '8.1',
10+
browser: 'chrome',
11+
browser_version: '39.0'
12+
},
13+
BS_Firefox: {
14+
base: 'BrowserStack',
15+
os: 'Windows',
16+
os_version: '8.1',
17+
browser: 'firefox',
18+
browser_version: '32.0'
19+
},
20+
BS_Safari: {
21+
base: 'BrowserStack',
22+
os: 'OS X',
23+
os_version: 'Yosemite',
24+
browser: 'safari',
25+
browser_version: '8.0'
26+
},
27+
BS_MobileSafari: {
28+
base: 'BrowserStack',
29+
os: 'ios',
30+
os_version: '7.0',
31+
browser: 'iphone',
32+
real_mobile: false
33+
},
34+
// BS_InternetExplorer9: {
35+
// base: 'BrowserStack',
36+
// os: 'Windows',
37+
// os_version: '7',
38+
// browser: 'ie',
39+
// browser_version: '9.0'
40+
// },
41+
BS_InternetExplorer10: {
42+
base: 'BrowserStack',
43+
os: 'Windows',
44+
os_version: '8',
45+
browser: 'ie',
46+
browser_version: '10.0'
47+
},
48+
BS_InternetExplorer11: {
49+
base: 'BrowserStack',
50+
os: 'Windows',
51+
os_version: '8.1',
52+
browser: 'ie',
53+
browser_version: '11.0'
54+
}
55+
}
56+
57+
function setBrowserStack(config, project) {
58+
const { env } = process
59+
60+
if (env.USE_CLOUD) {
61+
config.set({
62+
customLaunchers: CUSTOM_LAUNCHERS,
63+
browsers: Object.keys(CUSTOM_LAUNCHERS),
64+
reporters: [ 'dots', 'coverage' ],
65+
browserDisconnectTimeout: 10000,
66+
browserDisconnectTolerance: 3,
67+
browserNoActivityTimeout: 30000,
68+
captureTimeout: 120000,
69+
browserStack: {
70+
username: env.BROWSER_STACK_USERNAME,
71+
accessKey: env.BROWSER_STACK_ACCESS_KEY,
72+
pollingTimeout: 10000,
73+
startTunnel: true
74+
}
75+
})
76+
77+
if (env.TRAVIS) {
78+
Object.assign(config.browserStack, {
79+
startTunnel: false,
80+
project,
81+
build: `TRAVIS #${env.TRAVIS_BUILD_NUMBER} (${env.TRAVIS_BUILD_ID})`,
82+
name: env.TRAVIS_JOB_NUMBER
83+
})
84+
}
85+
}
86+
}
87+
88+
export default config => {
89+
const { env } = process
90+
91+
const isCi = env.CONTINUOUS_INTEGRATION === 'true'
92+
const runCoverage = env.COVERAGE === 'true' || isCi
93+
94+
const coverageLoaders = []
95+
const coverageReporters = []
96+
97+
if (runCoverage) {
98+
coverageLoaders.push({
99+
test: /\.js$/,
100+
include: path.resolve('modules/'),
101+
exclude: /__tests__/,
102+
loader: 'isparta'
103+
})
104+
105+
coverageReporters.push('coverage')
106+
}
107+
108+
config.set({
109+
frameworks: [ 'mocha' ],
110+
111+
files: [ 'tests.webpack.js' ],
112+
113+
preprocessors: {
114+
'tests.webpack.js': [ 'webpack', 'sourcemap' ]
115+
},
116+
117+
webpack: {
118+
module: {
119+
loaders: [
120+
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },
121+
...coverageLoaders
122+
]
123+
},
124+
plugins: [
125+
new webpack.DefinePlugin({
126+
'process.env.NODE_ENV': JSON.stringify('test')
127+
})
128+
],
129+
devtool: 'inline-source-map'
130+
},
131+
132+
webpackMiddleware: {
133+
noInfo: true
134+
},
135+
136+
reporters: [ 'mocha', ...coverageReporters ],
137+
138+
coverageReporter: {
139+
reporters: [
140+
{ type: 'html', subdir: 'html' },
141+
{ type: 'lcovonly', subdir: '.' }
142+
]
143+
},
144+
145+
browsers: [ 'Chrome' ],
146+
147+
singleRun: isCi
148+
})
149+
150+
setBrowserStack(config, 'react-router')
151+
}

karma.conf.js

Lines changed: 2 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1,131 +1,2 @@
1-
var webpack = require('webpack')
2-
var path = require('path')
3-
4-
module.exports = function (config) {
5-
// Browsers to run on BrowserStack
6-
var customLaunchers = {
7-
BS_Chrome: {
8-
base: 'BrowserStack',
9-
os: 'Windows',
10-
os_version: '8.1',
11-
browser: 'chrome',
12-
browser_version: '39.0'
13-
},
14-
BS_Firefox: {
15-
base: 'BrowserStack',
16-
os: 'Windows',
17-
os_version: '8.1',
18-
browser: 'firefox',
19-
browser_version: '32.0'
20-
},
21-
BS_Safari: {
22-
base: 'BrowserStack',
23-
os: 'OS X',
24-
os_version: 'Yosemite',
25-
browser: 'safari',
26-
browser_version: '8.0'
27-
},
28-
BS_MobileSafari: {
29-
base: 'BrowserStack',
30-
os: 'ios',
31-
os_version: '7.0',
32-
browser: 'iphone',
33-
real_mobile: false
34-
},
35-
// BS_InternetExplorer9: {
36-
// base: 'BrowserStack',
37-
// os: 'Windows',
38-
// os_version: '7',
39-
// browser: 'ie',
40-
// browser_version: '9.0'
41-
// },
42-
BS_InternetExplorer10: {
43-
base: 'BrowserStack',
44-
os: 'Windows',
45-
os_version: '8',
46-
browser: 'ie',
47-
browser_version: '10.0'
48-
},
49-
BS_InternetExplorer11: {
50-
base: 'BrowserStack',
51-
os: 'Windows',
52-
os_version: '8.1',
53-
browser: 'ie',
54-
browser_version: '11.0'
55-
}
56-
}
57-
58-
config.set({
59-
customLaunchers: customLaunchers,
60-
61-
browsers: [ 'Chrome' ],
62-
frameworks: [ 'mocha' ],
63-
reporters: [ 'mocha', 'coverage' ],
64-
65-
files: [
66-
'tests.webpack.js'
67-
],
68-
69-
preprocessors: {
70-
'tests.webpack.js': [ 'webpack', 'sourcemap' ]
71-
},
72-
73-
webpack: {
74-
devtool: 'inline-source-map',
75-
module: {
76-
loaders: [
77-
{ test: /\.js$/, exclude: /node_modules/, loader: 'babel' },
78-
{ test: /\.js$/, exclude: /__tests__/, include: path.resolve('modules/'), loader: 'isparta' }
79-
]
80-
},
81-
plugins: [
82-
new webpack.DefinePlugin({
83-
'process.env.NODE_ENV': JSON.stringify('test')
84-
})
85-
]
86-
},
87-
88-
webpackServer: {
89-
noInfo: true
90-
},
91-
92-
coverageReporter: {
93-
reporters: [
94-
{ type: 'html', subdir: 'html' },
95-
{ type: 'lcovonly', subdir: '.' }
96-
]
97-
}
98-
})
99-
100-
if (process.env.USE_CLOUD) {
101-
config.browsers = Object.keys(customLaunchers)
102-
config.reporters = [ 'dots', 'coverage' ]
103-
config.browserDisconnectTimeout = 10000
104-
config.browserDisconnectTolerance = 3
105-
config.browserNoActivityTimeout = 30000
106-
config.captureTimeout = 120000
107-
108-
if (process.env.TRAVIS) {
109-
var buildLabel = 'TRAVIS #' + process.env.TRAVIS_BUILD_NUMBER + ' (' + process.env.TRAVIS_BUILD_ID + ')'
110-
111-
config.browserStack = {
112-
username: process.env.BROWSER_STACK_USERNAME,
113-
accessKey: process.env.BROWSER_STACK_ACCESS_KEY,
114-
pollingTimeout: 10000,
115-
startTunnel: false,
116-
project: 'react-router',
117-
build: buildLabel,
118-
name: process.env.TRAVIS_JOB_NUMBER
119-
}
120-
121-
config.singleRun = true
122-
} else {
123-
config.browserStack = {
124-
username: process.env.BROWSER_STACK_USERNAME,
125-
accessKey: process.env.BROWSER_STACK_ACCESS_KEY,
126-
pollingTimeout: 10000,
127-
startTunnel: true
128-
}
129-
}
130-
}
131-
}
1+
require('babel-core/register')
2+
module.exports = require('./karma.conf.babel.js')

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@
6060
"karma-browserstack-launcher": "^0.1.4",
6161
"karma-chrome-launcher": "^0.2.0",
6262
"karma-coverage": "^0.5.3",
63-
"karma-firefox-launcher": "^0.1.6",
6463
"karma-mocha": "^0.2.0",
6564
"karma-mocha-reporter": "^1.1.1",
6665
"karma-sourcemap-loader": "^0.3.5",

0 commit comments

Comments
 (0)