-
Notifications
You must be signed in to change notification settings - Fork 44
/
karma.conf.js
81 lines (80 loc) · 2.04 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
const path = require('path');
const webpack = require('webpack');
const webpackConfig = require('./webpack.config');
const nodeExternals = require('webpack-node-externals');
module.exports = function (config) {
let sauceLaunchers = {
chrome: {
base: 'Chrome',
flags: ['--use-fake-ui-for-media-stream', '--use-fake-device-for-media-stream']
},
firefox: {
base: 'Firefox',
prefs: {
'media.navigator.permission.disabled': true,
'media.navigator.streams.fake': true,
'app.update.enabled': false,
}
}
};
let browser;
if (process.env.BROWSER === 'safari') {
browser = process.env.BVER === 'unstable' ? 'SafariTechPreview' : 'Safari'
} else {
browser = process.env.BROWSER || 'chrome';
}
config.set({
hostname: '127.0.0.1',
basePath: './test',
files: [{ pattern: '*.spec.ts'}],
autoWatch: true,
singleRun: true,
frameworks: ['jasmine'],
customLaunchers: sauceLaunchers,
colors: true,
browsers: [browser],
preprocessors: {
'*.spec.ts': ['webpack', 'sourcemap'],
},
webpack: {
module: {
rules: [{
test: /\.tsx?$/,
use: [
{
loader: 'ts-loader',
options: {
transpileOnly: true,
}
},
],
}],
},
resolve: webpackConfig.resolve,
devtool: 'inline-source-map',
plugins: [
new webpack.SourceMapDevToolPlugin({
filename: null,
test: /\.(ts|js)(x?)$/ // to allow webpack to pass sourcemap if the file is ts or js.
})
],
},
webpackMiddleware: {
stats: 'errors-only'
},
mime: {
'text/x-typescript': ['ts']
},
junitReporter: {
outputFile: 'test_out/unit.xml',
suite: 'unit'
},
sauceLabs: {
startConnect: false,
tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER,
username: process.env.SAUCE_USERNAME,
accessKey: process.env.SAUCE_ACCESS_KEY
},
reporters: ['mocha', 'saucelabs']
});
};