This repository has been archived by the owner on Aug 18, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
karma.conf.js
135 lines (102 loc) · 3.67 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// Karma configuration
// Generated on Wed Dec 30 2015 15:40:11 GMT-0800 (PST)
var webpack = require('webpack');
var webpackConfig = require('./webpack.config');
webpackConfig.entry = undefined;
webpackConfig.output = undefined;
webpackConfig.devtool = 'inline-source-map';
webpackConfig.plugins.push(new webpack.IgnorePlugin(/ReactContext|react\/addons/));
module.exports = function(config) {
var options = {
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: [
'mocha',
],
// list of files / patterns to load in the browser
files: [
'node_modules/babel-polyfill/dist/polyfill.js',
'test/client/**/*.spec.js?(x)'
],
// list of files to exclude
exclude: [
],
// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
'test/**/*.spec.js?(x)': ['webpack', 'sourcemap']
},
webpack: webpackConfig,
webpackMiddleware: {
// Don't spam Karma with output.
noInfo: true
},
// test results reporter to use
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
reporters: ['mocha'],
// web server port
port: 9876,
// enable / disable colors in the output (reporters and logs)
colors: true,
// Make Karma insert a Content-Security-Policy that disables all resource
// loads that don't original from the same origin. This enforces
// hermeticity in the test by terminating network loads if the page
// happens to have a reference to something like Google analytics.
// In PhantomJS, this is particularly critical because there will be no
// resource cache. Test times dropped from ~4s to ~1s with this.
customHeaders: [
],
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_DEBUG,
// enable / disable watching file and executing tests whenever any file changes
autoWatch: true,
// start these browsers
// available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
browsers: ['PhantomJS'],
customLaunchers: {
'PhantomJS_debug': {
base: 'PhantomJS',
debug: true
}
},
// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false,
captureTimeout: 120000,
// to avoid DISCONNECTED messages when connecting
// TODO(awong): look into why browser was timing out
browserNoActivityTimeout: 60000, //default 10000
proxies: {
},
// Concurrency level
// how many browser should be started simultaneous
concurrency: Infinity
};
// If saucelabs credentials are set, then configure a sauce labs run instead
// of a phantomjs run.
if (process.env.SAUCE_USERNAME) {
options.customLaunchers = {
'SL_Chrome': {
base: 'SauceLabs',
browserName: 'chrome',
}
}
options.reporters.push('saucelabs');
options.captureTimeout = 120000;
options.browsers = Object.keys(options.customLaunchers);
options.singleRun = true;
options.sauceLabs = {
testName: 'HCA Karma Tests',
username: process.env.SAUCE_USERNAME,
accessKey: process.env.SAUCE_ACCESS_KEY,
};
if (process.env.TRAVIS_JOB_NUMBER) {
options.sauceLabs.tunnelIdentifier = process.env.TRAVIS_JOB_NUMBER;
options.sauceLabs.startConnect = false;
}
}
config.set(options);
};