forked from Semantic-Org/Semantic-UI-React
-
Notifications
You must be signed in to change notification settings - Fork 0
/
karma.conf.babel.js
93 lines (85 loc) · 2.68 KB
/
karma.conf.babel.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import puppeteerPkg from 'puppeteer/package.json'
import Downloader from 'puppeteer/utils/ChromiumDownloader'
import config from './config'
import webpackConfig from './webpack.config.babel'
const revision = puppeteerPkg.puppeteer.chromium_revision
const revisionInfo = Downloader.revisionInfo(Downloader.currentPlatform(), revision)
process.env.CHROME_BIN = revisionInfo.executablePath
const formatError = (msg) => {
// filter out empty lines and node_modules
if (!msg.trim() || /~/.test(msg)) return ''
// indent the error beneath the it() message
let newLine = ` ${msg}`
if (newLine.includes('webpack:///')) {
// remove webpack:///
newLine = newLine.replace('webpack:///', '')
// remove bundle location, showing only the source location
newLine = newLine.slice(0, newLine.indexOf(' <- '))
}
return `${newLine}\n`
}
export default (karmaConfig) => {
karmaConfig.set({
basePath: process.cwd(),
browsers: ['ChromeHeadless'],
client: {
mocha: {
reporter: 'html', // change Karma's debug.html to mocha web reporter
ui: 'bdd',
},
},
coverageReporter: {
reporters: [
{ type: 'lcov', dir: 'coverage', subdir: '.' },
{ type: 'text-summary' },
],
includeAllSources: true,
},
customLaunchers: {
puppeteer: {
base: 'ChromeHeadless',
flags: [
// Avoid "Maximum call stack size exceeded" errors on CircleCI
'--stack-trace-limit 50000',
],
},
},
files: [
'./test/tests.bundle.js',
],
formatError,
frameworks: ['mocha'],
reporters: ['mocha', 'coverage'],
singleRun: true,
preprocessors: {
// do not include 'coverage' preprocessor for karma-coverage
// code is already instrumented by babel-plugin-__coverage__
'./test/tests.bundle.js': ['webpack'],
},
webpack: {
entry: './test/tests.bundle.js',
externals: {
...webpackConfig.externals,
// These are internal deps specific to React 0.13 required() by enzyme
// They shouldn't be requiring these at all, issues and fix proposed
// https://github.com/airbnb/enzyme/issues/285
'react/lib/ExecutionEnvironment': true,
'react/lib/ReactContext': true,
// this is a React 0.13 dep required by enzyme
// ignore it since we don't have it
'react/addons': true,
},
devtool: config.compiler_devtool,
module: webpackConfig.module,
plugins: webpackConfig.plugins,
resolve: webpackConfig.resolve,
},
webpackServer: {
progress: false,
stats: config.compiler_stats,
debug: true,
noInfo: false,
quiet: false,
},
})
}