1
- module . exports = function ( config ) {
1
+ const webpackTestConfig = require ( './webpack.test.config' ) ;
2
+
3
+ module . exports = function karmaConfig ( config ) {
4
+ let browsers = [ ] ;
5
+ const customLaunchers = { } ;
6
+
7
+ function createCustomLauncher ( browser , version , platform ) {
8
+ return {
9
+ base : 'SauceLabs' ,
10
+ browserName : browser ,
11
+ version,
12
+ platform
13
+ } ;
14
+ }
15
+
16
+ if ( process . env . SAUCE_USERNAME || process . env . SAUCE_ACCESS_KEY ) {
17
+ const OPTIONS = [
18
+ 'SAUCE_CHROME' ,
19
+ 'SAUCE_FIREFOX' ,
20
+ 'SAUCE_SAFARI' ,
21
+ 'SAUCE_IE' ,
22
+ 'SAUCE_EDGE' ,
23
+ ] ;
24
+
25
+ let runAll = true ;
26
+
27
+ OPTIONS . forEach ( ( opt ) => {
28
+ if ( process . env [ opt ] ) {
29
+ runAll = false ;
30
+ }
31
+ } ) ;
32
+
33
+ // Chrome
34
+ if ( runAll || process . env . SAUCE_CHROME ) {
35
+ customLaunchers . SL_Chrome = createCustomLauncher ( 'chrome' ) ;
36
+ }
37
+
38
+ // Firefox
39
+ if ( runAll || process . env . SAUCE_FIREFOX ) {
40
+ customLaunchers . SL_Firefox = createCustomLauncher ( 'firefox' ) ;
41
+ }
42
+
43
+ // Safari
44
+ if ( runAll || process . env . SAUCE_SAFARI ) {
45
+ customLaunchers . SL_Safari10 = createCustomLauncher ( 'safari' , 10 ) ;
46
+ customLaunchers . SL_Safari10 = createCustomLauncher ( 'safari' , 9 ) ;
47
+ }
48
+
49
+ // IE
50
+ if ( runAll || process . env . SAUCE_IE ) {
51
+ customLaunchers . SL_IE11 = createCustomLauncher ( 'internet explorer' , 11 , 'Windows 10' ) ;
52
+ }
53
+
54
+ // Edge
55
+ if ( runAll || process . env . SAUCE_EDGE ) {
56
+ customLaunchers . SL_Edge = createCustomLauncher ( 'microsoftedge' , null , 'Windows 10' ) ;
57
+ }
58
+
59
+ browsers = Object . keys ( customLaunchers ) ;
60
+ } else {
61
+ browsers = [ ( process . env . CONTINUOUS_INTEGRATION ) ? 'Firefox' : 'Chrome' ] ;
62
+ }
63
+
2
64
config . set ( {
3
65
4
66
basePath : '' ,
@@ -10,10 +72,10 @@ module.exports = function(config) {
10
72
] ,
11
73
12
74
preprocessors : {
13
- 'specs/spec_index.js' : [ 'webpack' , 'sourcemap' ]
75
+ 'specs/spec_index.js' : [ 'webpack' , 'sourcemap' ]
14
76
} ,
15
77
16
- webpack : require ( './webpack.test.config' ) ,
78
+ webpack : webpackTestConfig ,
17
79
18
80
webpackMiddleware : {
19
81
stats : 'errors-only'
@@ -39,10 +101,21 @@ module.exports = function(config) {
39
101
40
102
autoWatch : true ,
41
103
42
- browsers : [ ( process . env . CONTINUOUS_INTEGRATION ) ? 'Firefox' : 'Chrome' ] ,
104
+ browsers,
105
+ customLaunchers,
106
+
107
+ // Increase timeouts to prevent the issue with disconnected tests (https://goo.gl/nstA69)
108
+ captureTimeout : 4 * 60 * 1000 ,
109
+ browserDisconnectTimeout : 10000 ,
110
+ browserDisconnectTolerance : 1 ,
111
+ browserNoActivityTimeout : 4 * 60 * 1000 ,
43
112
44
- captureTimeout : 60000 ,
113
+ singleRun : ( process . env . CONTINUOUS_INTEGRATION ) ,
45
114
46
- singleRun : ( process . env . CONTINUOUS_INTEGRATION )
115
+ // SauceLabs config
116
+ sauceLabs : {
117
+ recordScreenshots : false ,
118
+ public : 'public'
119
+ }
47
120
} ) ;
48
121
} ;
0 commit comments