forked from angular-ui/angular-ui-router-bower
-
Notifications
You must be signed in to change notification settings - Fork 0
/
karma.conf.js
105 lines (83 loc) · 2.7 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');
}
var webpackConfig = module.exports = {
resolve: {
modules: ['node_modules'],
extensions: ['.js', '.jsx', '.ts', '.tsx']
},
devtool: 'inline-source-map',
module: {
rules: [
{ test: /\.tsx?$/, loader: 'ts-loader', options: { transpileOnly: true } }
]
},
stats: false,
plugins: [
new ForkTsCheckerWebpackPlugin(),
],
externals: [ 'angular' ]
};
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",
// possible values: 'dots', 'progress'
reporters: 'dots',
colors: true,
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: ['PhantomJS'],
frameworks: ['jasmine'],
plugins: [
require('karma-webpack'),
require('karma-sourcemap-loader'),
require('karma-jasmine'),
require('karma-phantomjs-launcher'),
require('karma-chrome-launcher')
],
webpack: webpackConfig,
webpackMiddleware: {
stats: { chunks: false },
},
/* 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'],
},
});
};