1+ // Unique place to configure the browsers which are used in the different CI jobs in Sauce Labs (SL) and BrowserStack (BS).
2+ // If the target is set to null, then the browser is not run anywhere during CI.
3+ // If a category becomes empty (e.g. BS and required), then the corresponding job must be commented out in Travis configuration.
4+ var CIconfiguration = {
5+ 'Chrome' : { unitTest : { target : 'SL' , required : true } , e2e : { target : null , required : true } } ,
6+ 'Firefox' : { unitTest : { target : 'SL' , required : true } , e2e : { target : null , required : true } } ,
7+ 'ChromeBeta' : { unitTest : { target : 'SL' , required : true } , e2e : { target : null , required : true } } ,
8+ 'FirefoxBeta' : { unitTest : { target : 'SL' , required : true } , e2e : { target : null , required : true } } ,
9+ 'ChromeDev' : { unitTest : { target : null , required : true } , e2e : { target : null , required : true } } ,
10+ 'FirefoxDev' : { unitTest : { target : null , required : true } , e2e : { target : null , required : true } } ,
11+ 'IE9' : { unitTest : { target : 'SL' , required : false } , e2e : { target : null , required : true } } ,
12+ 'IE10' : { unitTest : { target : 'SL' , required : true } , e2e : { target : null , required : true } } ,
13+ 'IE11' : { unitTest : { target : 'SL' , required : true } , e2e : { target : null , required : true } } ,
14+ 'Edge' : { unitTest : { target : 'SL' , required : true } , e2e : { target : null , required : true } } ,
15+ 'Android4.1' : { unitTest : { target : 'SL' , required : false } , e2e : { target : null , required : true } } ,
16+ 'Android4.2' : { unitTest : { target : 'SL' , required : false } , e2e : { target : null , required : true } } ,
17+ 'Android4.3' : { unitTest : { target : 'SL' , required : false } , e2e : { target : null , required : true } } ,
18+ 'Android4.4' : { unitTest : { target : 'SL' , required : false } , e2e : { target : null , required : true } } ,
19+ 'Android5' : { unitTest : { target : 'SL' , required : false } , e2e : { target : null , required : true } } ,
20+ 'Safari7' : { unitTest : { target : 'BS' , required : false } , e2e : { target : null , required : true } } ,
21+ 'Safari8' : { unitTest : { target : 'BS' , required : false } , e2e : { target : null , required : true } } ,
22+ 'Safari9' : { unitTest : { target : 'BS' , required : false } , e2e : { target : null , required : true } } ,
23+ 'iOS7' : { unitTest : { target : 'BS' , required : true } , e2e : { target : null , required : true } } ,
24+ 'iOS8' : { unitTest : { target : 'BS' , required : false } , e2e : { target : null , required : true } } ,
25+ // TODO(mlaval): iOS9 deactivated as not reliable, reactivate after https://github.com/angular/angular/issues/5408
26+ 'iOS9' : { unitTest : { target : null , required : false } , e2e : { target : null , required : true } } ,
27+ 'WindowsPhone' : { unitTest : { target : 'BS' , required : false } , e2e : { target : null , required : true } }
28+ } ;
29+
130var customLaunchers = {
231 'DartiumWithWebPlatform' : {
332 base : 'Dartium' ,
@@ -47,7 +76,7 @@ var customLaunchers = {
4776 platform : 'OS X 10.10' ,
4877 version : '8'
4978 } ,
50- 'SL_SAFARI9.0 ' : {
79+ 'SL_SAFARI9' : {
5180 base : 'SauceLabs' ,
5281 browserName : 'safari' ,
5382 platform : 'OS X 10.11' ,
@@ -119,7 +148,7 @@ var customLaunchers = {
119148 platform : 'Linux' ,
120149 version : '4.4'
121150 } ,
122- 'SL_ANDROID5.1 ' : {
151+ 'SL_ANDROID5' : {
123152 base : 'SauceLabs' ,
124153 browserName : 'android' ,
125154 platform : 'Linux' ,
@@ -239,21 +268,18 @@ var customLaunchers = {
239268 }
240269} ;
241270
242- // iOS9 deactivated as not reliable in both providers
243- // TODO(mlaval): reactivate after https://github.com/angular/angular/issues/5408
244-
245271var sauceAliases = {
246272 'ALL' : Object . keys ( customLaunchers ) . filter ( function ( item ) { return customLaunchers [ item ] . base == 'SauceLabs' ; } ) ,
247- 'DESKTOP' : [ 'SL_CHROME' , 'SL_FIREFOX' , 'SL_IE9' , 'SL_IE10' , 'SL_IE11' , 'SL_EDGE' , 'SL_SAFARI7' , 'SL_SAFARI8' , 'SL_SAFARI9.0 ' ] ,
248- 'MOBILE' : [ 'SL_ANDROID4.1' , 'SL_ANDROID4.2' , 'SL_ANDROID4.3' , 'SL_ANDROID4.4' , 'SL_ANDROID5.1 ' , 'SL_IOS7' , 'SL_IOS8' , 'SL_IOS9' ] ,
249- 'ANDROID' : [ 'SL_ANDROID4.1' , 'SL_ANDROID4.2' , 'SL_ANDROID4.3' , 'SL_ANDROID4.4' , 'SL_ANDROID5.1 ' ] ,
273+ 'DESKTOP' : [ 'SL_CHROME' , 'SL_FIREFOX' , 'SL_IE9' , 'SL_IE10' , 'SL_IE11' , 'SL_EDGE' , 'SL_SAFARI7' , 'SL_SAFARI8' , 'SL_SAFARI9' ] ,
274+ 'MOBILE' : [ 'SL_ANDROID4.1' , 'SL_ANDROID4.2' , 'SL_ANDROID4.3' , 'SL_ANDROID4.4' , 'SL_ANDROID5' , 'SL_IOS7' , 'SL_IOS8' , 'SL_IOS9' ] ,
275+ 'ANDROID' : [ 'SL_ANDROID4.1' , 'SL_ANDROID4.2' , 'SL_ANDROID4.3' , 'SL_ANDROID4.4' , 'SL_ANDROID5' ] ,
250276 'IE' : [ 'SL_IE9' , 'SL_IE10' , 'SL_IE11' ] ,
251277 'IOS' : [ 'SL_IOS7' , 'SL_IOS8' , 'SL_IOS9' ] ,
252- 'SAFARI' : [ 'SL_SAFARI7' , 'SL_SAFARI8' , 'SL_SAFARI9.0 ' ] ,
278+ 'SAFARI' : [ 'SL_SAFARI7' , 'SL_SAFARI8' , 'SL_SAFARI9' ] ,
253279 'BETA' : [ 'SL_CHROMEBETA' , 'SL_FIREFOXBETA' ] ,
254280 'DEV' : [ 'SL_CHROMEDEV' , 'SL_FIREFOXDEV' ] ,
255- 'CI ' : [ 'SL_CHROME' , ' SL_FIREFOX' , 'SL_CHROMEDEV' , 'SL_FIREFOXBETA' , 'SL_IE9' , 'SL_IE10' , 'SL_IE11' , 'SL_EDGE' ,
256- 'SL_ANDROID4.1' , 'SL_ANDROID4.2 ', 'SL_ANDROID4.3 ' , 'SL_ANDROID4.4' , 'SL_ANDROID5.1' ]
281+ 'CI_REQUIRED ' : buildConfiguration ( 'unitTest' , 'SL' , true ) ,
282+ 'CI_OPTIONAL' : buildConfiguration ( 'unitTest ', 'SL ' , false )
257283} ;
258284
259285var browserstackAliases = {
@@ -264,7 +290,8 @@ var browserstackAliases = {
264290 'IE' : [ 'BS_IE9' , 'BS_IE10' , 'BS_IE11' ] ,
265291 'IOS' : [ 'BS_IOS7' , 'BS_IOS8' , 'BS_IOS9' ] ,
266292 'SAFARI' : [ 'BS_SAFARI7' , 'BS_SAFARI8' , 'BS_SAFARI9' ] ,
267- 'CI' : [ 'BS_SAFARI7' , 'BS_SAFARI8' , 'BS_SAFARI9' , 'BS_IOS7' , 'BS_IOS8' , 'BS_WINDOWSPHONE' ]
293+ 'CI_REQUIRED' : buildConfiguration ( 'unitTest' , 'BS' , true ) ,
294+ 'CI_OPTIONAL' : buildConfiguration ( 'unitTest' , 'BS' , false )
268295} ;
269296
270297module . exports = {
@@ -277,3 +304,14 @@ if (process.env.TRAVIS) {
277304 process . env . SAUCE_ACCESS_KEY = process . env . SAUCE_ACCESS_KEY . split ( '' ) . reverse ( ) . join ( '' ) ;
278305 process . env . BROWSER_STACK_ACCESS_KEY = process . env . BROWSER_STACK_ACCESS_KEY . split ( '' ) . reverse ( ) . join ( '' ) ;
279306}
307+
308+ function buildConfiguration ( type , target , required ) {
309+ return Object . keys ( CIconfiguration )
310+ . filter ( ( item ) => {
311+ var conf = CIconfiguration [ item ] [ type ] ;
312+ return conf . required === required && conf . target === target ;
313+ } )
314+ . map ( ( item ) => {
315+ return target + '_' + item . toUpperCase ( ) ;
316+ } ) ;
317+ }
0 commit comments