-
Notifications
You must be signed in to change notification settings - Fork 3k
/
karma.conf.js
105 lines (84 loc) · 2.87 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
// Karma configuration file
var karma = require('karma');
var ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
var DEFAULT_NG_VERSION = '1.6';
/**
* This returns a Karma 'files configuration'.
* http://karma-runner.github.io/0.8/config/files.html
*
* Specifies which files can be served by the Karma web server
*
* included: true -- files that are always served to the browser (like <script> tag)
* included: false -- files *available to be served* by karma, for instance via require()
*/
function karmaServedFiles(ngVersion) {
// Returns necessary files for a specific version of angular
function angular(version) {
console.log('Using Angular ' + ngVersion + ' from test/angular/' + version + '/angular.js');
return [
'test/angular/' + version + '/angular.js',
'test/angular/' + version + '/angular-mocks.js',
'test/angular/' + version + '/angular-animate.js',
];
}
var angularFiles = angular(ngVersion).map(function (pattern) {
return { watched: false, included: true, nocache: true, pattern: pattern };
});
return angularFiles.concat('test/index.js');
}
module.exports = function (config) {
var ngVersion = config.ngversion || DEFAULT_NG_VERSION;
config.set({
singleRun: true,
autoWatch: false,
autoWatchInterval: 0,
// level of logging
// possible values: LOG_DISABLE, LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG
logLevel: 'warn',
reporters: ['super-dots', 'mocha'],
colors: true,
mochaReporter: {
output: 'minimal',
},
port: 8080,
// base path, that will be used to resolve files and exclude
basePath: '.',
// Start these browsers, currently available:
// Chrome, ChromeCanary, Firefox, Opera, Safari, PhantomJS
browsers: ['ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: { base: 'ChromeHeadless', flags: ['--no-sandbox'] },
},
frameworks: ['jasmine'],
plugins: [
require('karma-webpack'),
require('karma-sourcemap-loader'),
require('karma-super-dots-reporter'),
require('karma-mocha-reporter'),
require('karma-jasmine'),
require('karma-chrome-launcher'),
],
webpack: {
mode: 'development',
resolve: {
modules: ['node_modules'],
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
devtool: 'inline-source-map',
module: {
rules: [{ test: /\.tsx?$/, loader: 'ts-loader', options: { transpileOnly: true } }],
},
plugins: [new ForkTsCheckerWebpackPlugin()],
externals: ['angular'],
},
webpackMiddleware: {
stats: 'minimal',
},
/* Files *available to be served* by karma, i.e., anything that will be require()'d */
files: karmaServedFiles(ngVersion),
preprocessors: {
'test/index.js': ['webpack', 'sourcemap'],
'../src/ng1': ['webpack', 'sourcemap'],
},
});
};