-
Notifications
You must be signed in to change notification settings - Fork 228
/
karma.conf.js
107 lines (91 loc) · 2.33 KB
/
karma.conf.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
const os = require('os');
const path = require('path');
const webpack = require('webpack');
const webpackConfig = require('./webpack.dev.js');
const ENTROPY_SIZE = 1000000;
const outputPath = `${path.join(os.tmpdir(), "_karma_webpack_")}${Math.floor(Math.random() * ENTROPY_SIZE)}`;
module.exports = function(config) {
config.set({
restartOnFileChange: true,
browsers: [ 'MyHeadlessChrome' ],
customLaunchers: {
MyHeadlessChrome: {
base: 'ChromeHeadless',
flags: [ '--no-sandbox' ]
}
},
frameworks: [
'webpack',
'mocha',
'chai'
],
plugins: [
'karma-webpack',
'karma-mocha',
'karma-chai',
'karma-chrome-launcher',
'karma-sourcemap-loader',
'karma-mocha-reporter',
'karma-coverage-istanbul-reporter',
// 'karma-coverage-istanbul-instrumenter'
],
files: [
'node_modules/codemirror/lib/codemirror.css',
'src/mergely.css',
'src/*.js',
'test/**/*.spec.js'
],
preprocessors: {
'node_modules/codemirror/lib/codemirror.js': [ 'webpack' ],
'test/*.spec.js': [ 'webpack' ],
// 'src/*.js': [ 'webpack', 'sourcemap', 'karma-coverage-istanbul-instrumenter' ]
'src/*.js': [ 'webpack', 'sourcemap' ]
},
reporters: [ 'mocha', 'coverage-istanbul' ],
coverageIstanbulReporter: {
reports: [ 'html', 'lcov', 'text-summary' ],
dir: path.join(__dirname, 'coverage'),
fixWebpackSourcePaths: false,
esModules: false,
// enforce percentage thresholds
// anything under these percentages will cause karma to fail
// with an exit code of 1 if not running in watch mode
thresholds: {
// set to `true` to not fail the test command when thresholds are not met
emitWarning: true,
global: { // thresholds for all files
statements: 94.09,
branches: 89.92,
functions: 92.67,
lines: 94.33
}
}
},
colors: true,
logLevel: config.LOG_DEBUG,
singleRun: true,
webpack: tweakWebpack(webpackConfig),
});
}
function tweakWebpack(webpackConfig) {
const config = {
...webpackConfig,
output: {
// https://github.com/scottohara/tvmanager/issues/99
path: outputPath
},
externals: {
CodeMirror: 'CodeMirror'
}
};
if (!config.plugins) {
config.plugins = [];
}
config.plugins.push(
new webpack.ProvidePlugin({
CodeMirror: 'codemirror'
})
);
config.devtool = 'inline-source-map';
return config;
}