1
+
2
+ // Unique place to configure the browsers which are used in the different CI jobs in Sauce Labs (SL)
3
+ // and BrowserStack (BS).
4
+ // If the target is set to null, then the browser is not run anywhere during CI.
5
+ // If a category becomes empty (e.g. BS and required), then the corresponding job must be commented
6
+ // out in Travis configuration.
7
+ const configuration = {
8
+ 'Chrome' : { unitTest : { target : 'SL' } , e2e : { target : null } } ,
9
+ 'Firefox' : { unitTest : { target : 'SL' } , e2e : { target : null } } ,
10
+ 'ChromeBeta' : { unitTest : { target : null } , e2e : { target : null } } ,
11
+ 'FirefoxBeta' : { unitTest : { target : null } , e2e : { target : null } } ,
12
+ 'ChromeDev' : { unitTest : { target : null } , e2e : { target : null } } ,
13
+ 'FirefoxDev' : { unitTest : { target : null } , e2e : { target : null } } ,
14
+ 'IE9' : { unitTest : { target : null } , e2e : { target : null } } ,
15
+ 'IE10' : { unitTest : { target : null } , e2e : { target : null } } ,
16
+ 'IE11' : { unitTest : { target : null } , e2e : { target : null } } ,
17
+ 'Edge' : { unitTest : { target : 'SL' } , e2e : { target : null } } ,
18
+ 'Android4.1' : { unitTest : { target : null } , e2e : { target : null } } ,
19
+ 'Android4.2' : { unitTest : { target : null } , e2e : { target : null } } ,
20
+ 'Android4.3' : { unitTest : { target : null } , e2e : { target : null } } ,
21
+ 'Android4.4' : { unitTest : { target : null } , e2e : { target : null } } ,
22
+ 'Android5' : { unitTest : { target : null } , e2e : { target : null } } ,
23
+ 'Safari7' : { unitTest : { target : null } , e2e : { target : null } } ,
24
+ 'Safari8' : { unitTest : { target : null } , e2e : { target : null } } ,
25
+ 'Safari9' : { unitTest : { target : 'BS' } , e2e : { target : null } } ,
26
+ 'iOS7' : { unitTest : { target : null } , e2e : { target : null } } ,
27
+ 'iOS8' : { unitTest : { target : null } , e2e : { target : null } } ,
28
+ 'iOS9' : { unitTest : { target : 'BS' } , e2e : { target : null } } ,
29
+ 'WindowsPhone' : { unitTest : { target : 'BS' } , e2e : { target : null } }
30
+ } ;
31
+
32
+ exports . customLaunchers = {
33
+ 'ChromeNoSandbox' : {
34
+ base : 'Chrome' ,
35
+ flags : [ '--no-sandbox' ]
36
+ } ,
37
+ 'SL_CHROME' : {
38
+ base : 'SauceLabs' ,
39
+ browserName : 'chrome' ,
40
+ version : 'latest'
41
+ } ,
42
+ 'SL_CHROMEBETA' : {
43
+ base : 'SauceLabs' ,
44
+ browserName : 'chrome' ,
45
+ version : 'beta'
46
+ } ,
47
+ 'SL_CHROMEDEV' : {
48
+ base : 'SauceLabs' ,
49
+ browserName : 'chrome' ,
50
+ version : 'dev'
51
+ } ,
52
+ 'SL_FIREFOX' : {
53
+ base : 'SauceLabs' ,
54
+ browserName : 'firefox' ,
55
+ version : 'latest'
56
+ } ,
57
+ 'SL_FIREFOXBETA' : {
58
+ base : 'SauceLabs' ,
59
+ browserName : 'firefox' ,
60
+ version : 'beta'
61
+ } ,
62
+ 'SL_FIREFOXDEV' : {
63
+ base : 'SauceLabs' ,
64
+ browserName : 'firefox' ,
65
+ version : 'dev'
66
+ } ,
67
+ 'SL_SAFARI7' : {
68
+ base : 'SauceLabs' ,
69
+ browserName : 'safari' ,
70
+ platform : 'OS X 10.9' ,
71
+ version : '7'
72
+ } ,
73
+ 'SL_SAFARI8' : {
74
+ base : 'SauceLabs' ,
75
+ browserName : 'safari' ,
76
+ platform : 'OS X 10.10' ,
77
+ version : '8'
78
+ } ,
79
+ 'SL_SAFARI9' : {
80
+ base : 'SauceLabs' ,
81
+ browserName : 'safari' ,
82
+ platform : 'OS X 10.11' ,
83
+ version : '9.0'
84
+ } ,
85
+ 'SL_IOS7' : {
86
+ base : 'SauceLabs' ,
87
+ browserName : 'iphone' ,
88
+ platform : 'OS X 10.10' ,
89
+ version : '7.1'
90
+ } ,
91
+ 'SL_IOS8' : {
92
+ base : 'SauceLabs' ,
93
+ browserName : 'iphone' ,
94
+ platform : 'OS X 10.10' ,
95
+ version : '8.4'
96
+ } ,
97
+ 'SL_IOS9' : {
98
+ base : 'SauceLabs' ,
99
+ browserName : 'iphone' ,
100
+ platform : 'OS X 10.10' ,
101
+ version : '9.1'
102
+ } ,
103
+ 'SL_IE9' : {
104
+ base : 'SauceLabs' ,
105
+ browserName : 'internet explorer' ,
106
+ platform : 'Windows 2008' ,
107
+ version : '9'
108
+ } ,
109
+ 'SL_IE10' : {
110
+ base : 'SauceLabs' ,
111
+ browserName : 'internet explorer' ,
112
+ platform : 'Windows 2012' ,
113
+ version : '10'
114
+ } ,
115
+ 'SL_IE11' : {
116
+ base : 'SauceLabs' ,
117
+ browserName : 'internet explorer' ,
118
+ platform : 'Windows 8.1' ,
119
+ version : '11'
120
+ } ,
121
+ 'SL_EDGE' : {
122
+ base : 'SauceLabs' ,
123
+ browserName : 'microsoftedge' ,
124
+ platform : 'Windows 10' ,
125
+ version : '14'
126
+ } ,
127
+ 'SL_ANDROID4.1' : {
128
+ base : 'SauceLabs' ,
129
+ browserName : 'android' ,
130
+ platform : 'Linux' ,
131
+ version : '4.1'
132
+ } ,
133
+ 'SL_ANDROID4.2' : {
134
+ base : 'SauceLabs' ,
135
+ browserName : 'android' ,
136
+ platform : 'Linux' ,
137
+ version : '4.2'
138
+ } ,
139
+ 'SL_ANDROID4.3' : {
140
+ base : 'SauceLabs' ,
141
+ browserName : 'android' ,
142
+ platform : 'Linux' ,
143
+ version : '4.3'
144
+ } ,
145
+ 'SL_ANDROID4.4' : {
146
+ base : 'SauceLabs' ,
147
+ browserName : 'android' ,
148
+ platform : 'Linux' ,
149
+ version : '4.4'
150
+ } ,
151
+ 'SL_ANDROID5' : {
152
+ base : 'SauceLabs' ,
153
+ browserName : 'android' ,
154
+ platform : 'Linux' ,
155
+ version : '5.1'
156
+ } ,
157
+
158
+ 'BS_CHROME' : {
159
+ base : 'BrowserStack' ,
160
+ browser : 'chrome' ,
161
+ os : 'OS X' ,
162
+ os_version : 'Yosemite'
163
+ } ,
164
+ 'BS_FIREFOX' : {
165
+ base : 'BrowserStack' ,
166
+ browser : 'firefox' ,
167
+ os : 'Windows' ,
168
+ os_version : '10'
169
+ } ,
170
+ 'BS_SAFARI7' : {
171
+ base : 'BrowserStack' ,
172
+ browser : 'safari' ,
173
+ os : 'OS X' ,
174
+ os_version : 'Mavericks'
175
+ } ,
176
+ 'BS_SAFARI8' : {
177
+ base : 'BrowserStack' ,
178
+ browser : 'safari' ,
179
+ os : 'OS X' ,
180
+ os_version : 'Yosemite'
181
+ } ,
182
+ 'BS_SAFARI9' : {
183
+ base : 'BrowserStack' ,
184
+ browser : 'safari' ,
185
+ os : 'OS X' ,
186
+ os_version : 'El Capitan'
187
+ } ,
188
+ 'BS_IOS7' : {
189
+ base : 'BrowserStack' ,
190
+ device : 'iPhone 5S' ,
191
+ os : 'ios' ,
192
+ os_version : '7.0' ,
193
+ resolution : '1024x768'
194
+ } ,
195
+ 'BS_IOS8' : {
196
+ base : 'BrowserStack' ,
197
+ device : 'iPhone 6' ,
198
+ os : 'ios' ,
199
+ os_version : '8.3' ,
200
+ resolution : '1024x768'
201
+ } ,
202
+ 'BS_IOS9' : {
203
+ base : 'BrowserStack' ,
204
+ device : 'iPhone 6S' ,
205
+ os : 'ios' ,
206
+ os_version : '9.0' ,
207
+ resolution : '1024x768'
208
+ } ,
209
+ 'BS_IE9' : {
210
+ base : 'BrowserStack' ,
211
+ browser : 'ie' ,
212
+ browser_version : '9.0' ,
213
+ os : 'Windows' ,
214
+ os_version : '7'
215
+ } ,
216
+ 'BS_IE10' : {
217
+ base : 'BrowserStack' ,
218
+ browser : 'ie' ,
219
+ browser_version : '10.0' ,
220
+ os : 'Windows' ,
221
+ os_version : '8'
222
+ } ,
223
+ 'BS_IE11' : {
224
+ base : 'BrowserStack' ,
225
+ browser : 'ie' ,
226
+ browser_version : '11.0' ,
227
+ os : 'Windows' ,
228
+ os_version : '10'
229
+ } ,
230
+ 'BS_EDGE' : {
231
+ base : 'BrowserStack' ,
232
+ browser : 'edge' ,
233
+ os : 'Windows' ,
234
+ os_version : '10'
235
+ } ,
236
+ 'BS_WINDOWSPHONE' : {
237
+ base : 'BrowserStack' ,
238
+ device : 'Nokia Lumia 930' ,
239
+ os : 'winphone' ,
240
+ os_version : '8.1'
241
+ } ,
242
+ 'BS_ANDROID5' : {
243
+ base : 'BrowserStack' ,
244
+ device : 'Google Nexus 5' ,
245
+ os : 'android' ,
246
+ os_version : '5.0'
247
+ } ,
248
+ 'BS_ANDROID4.4' : {
249
+ base : 'BrowserStack' ,
250
+ device : 'HTC One M8' ,
251
+ os : 'android' ,
252
+ os_version : '4.4'
253
+ } ,
254
+ 'BS_ANDROID4.3' : {
255
+ base : 'BrowserStack' ,
256
+ device : 'Samsung Galaxy S4' ,
257
+ os : 'android' ,
258
+ os_version : '4.3'
259
+ } ,
260
+ 'BS_ANDROID4.2' : {
261
+ base : 'BrowserStack' ,
262
+ device : 'Google Nexus 4' ,
263
+ os : 'android' ,
264
+ os_version : '4.2'
265
+ } ,
266
+ 'BS_ANDROID4.1' : {
267
+ base : 'BrowserStack' ,
268
+ device : 'Google Nexus 7' ,
269
+ os : 'android' ,
270
+ os_version : '4.1'
271
+ }
272
+ } ;
273
+
274
+ exports . platformMap = {
275
+ 'saucelabs' : buildConfiguration ( 'unitTest' , 'SL' ) ,
276
+ 'browserstack' : buildConfiguration ( 'unitTest' , 'BS' ) ,
277
+ } ;
278
+
279
+
280
+ /** Decode the token for Travis to use. */
281
+ function decode ( str ) {
282
+ return ( str || '' ) . split ( '' ) . reverse ( ) . join ( '' ) ;
283
+ }
284
+
285
+ /** Setup the access keys */
286
+ if ( process . env . TRAVIS ) {
287
+ process . env . SAUCE_ACCESS_KEY = decode ( process . env . SAUCE_ACCESS_KEY ) ;
288
+ process . env . BROWSER_STACK_ACCESS_KEY = decode ( process . env . BROWSER_STACK_ACCESS_KEY ) ;
289
+ }
290
+
291
+ /**
292
+ * Build a list of configuration for the specified type and tunnel target.
293
+ * @returns {string[] }
294
+ */
295
+ function buildConfiguration ( type , target ) {
296
+ return Object . keys ( configuration )
297
+ . map ( item => [ item , configuration [ item ] [ type ] ] )
298
+ . filter ( ( [ item , conf ] ) => conf . target == target )
299
+ . map ( ( [ item , conf ] ) => `${ target } _${ item . toUpperCase ( ) } ` ) ;
300
+ }
0 commit comments