@@ -40,6 +40,7 @@ var uglify = require('gulp-uglify');
4040var shouldLog = require ( './tools/build/logging' ) ;
4141var tslint = require ( 'gulp-tslint' ) ;
4242var dartSdk = require ( './tools/build/dart' ) ;
43+ var sauceConf = require ( './sauce.conf' ) ;
4344
4445require ( './tools/check-environment' ) ( {
4546 requiredNpmVersion : '>=2.9.0' ,
@@ -530,13 +531,35 @@ gulp.task('test.all.dart', shell.task(['./scripts/ci/test_dart.sh']))
530531// These tests run in the browser and are allowed to access
531532// HTML DOM APIs.
532533function getBrowsersFromCLI ( ) {
534+ var isSauce = false ;
533535 var args = minimist ( process . argv . slice ( 2 ) ) ;
534- return [ args . browsers ?args . browsers :'DartiumWithWebPlatform' ]
536+ var rawInput = args . browsers ?args . browsers :'DartiumWithWebPlatform' ;
537+ var inputList = rawInput . replace ( ' ' , '' ) . split ( ',' ) ;
538+ var outputList = [ ] ;
539+ for ( var i = 0 ; i < inputList . length ; i ++ ) {
540+ var input = inputList [ i ] ;
541+ if ( sauceConf . customLaunchers . hasOwnProperty ( input ) ) {
542+ //Non-sauce browsers case: overrides everything, ignoring other options
543+ outputList = [ input ] ;
544+ isSauce = false ;
545+ break ;
546+ } else if ( sauceConf . customLaunchers . hasOwnProperty ( "SL_" + input . toUpperCase ( ) ) ) {
547+ isSauce = true ;
548+ outputList . push ( "SL_" + input . toUpperCase ( ) ) ;
549+ } else if ( sauceConf . aliases . hasOwnProperty ( input . toUpperCase ( ) ) ) {
550+ outputList = outputList . concat ( sauceConf . aliases [ input ] ) ;
551+ isSauce = true ;
552+ } else {
553+ throw new Error ( 'ERROR: unknown browser found in getBrowsersFromCLI()' ) ;
554+ }
555+ }
556+ return {
557+ browsersToRun : outputList . filter ( function ( item , pos , self ) { return self . indexOf ( item ) == pos ; } ) ,
558+ isSauce : isSauce
559+ }
535560}
536561
537-
538- gulp . task ( 'test.unit.js' , [ 'build.js.dev' ] , function ( neverDone ) {
539-
562+ gulp . task ( 'test.unit.js' , [ 'build.js.dev' ] , function ( done ) {
540563 runSequence (
541564 '!test.unit.js/karma-server' ,
542565 function ( ) {
@@ -548,6 +571,16 @@ gulp.task('test.unit.js', ['build.js.dev'], function (neverDone) {
548571 ) ;
549572} ) ;
550573
574+ gulp . task ( 'test.unit.js.sauce' , [ 'build.js.dev' ] , function ( done ) {
575+ var browserConf = getBrowsersFromCLI ( ) ;
576+ if ( browserConf . isSauce ) {
577+ karma . server . start ( { configFile : __dirname + '/karma-js.conf.js' ,
578+ singleRun : true , browserNoActivityTimeout : 240000 , captureTimeout : 120000 , reporters : [ 'dots' ] , browsers : browserConf . browsersToRun } ,
579+ function ( err ) { done ( ) ; process . exit ( err ? 1 : 0 ) } ) ;
580+ } else {
581+ throw new Error ( 'ERROR: no Saucelabs browsers provided, add them with the --browsers option' ) ;
582+ }
583+ } ) ;
551584
552585gulp . task ( '!test.unit.js/karma-server' , function ( ) {
553586 karma . server . start ( { configFile : __dirname + '/karma-js.conf.js' , reporters : 'dots' } ) ;
@@ -598,13 +631,21 @@ gulp.task('!test.unit.dart/karma-server', function() {
598631
599632
600633gulp . task ( 'test.unit.js/ci' , function ( done ) {
634+ var browserConf = getBrowsersFromCLI ( ) ;
635+ karma . server . start ( { configFile : __dirname + '/karma-js.conf.js' ,
636+ singleRun : true , reporters : [ 'dots' ] , browsers : browserConf . browsersToRun } , done ) ;
637+ } ) ;
638+
639+ gulp . task ( 'test.unit.js.sauce/ci' , function ( done ) {
601640 karma . server . start ( { configFile : __dirname + '/karma-js.conf.js' ,
602- singleRun : true , reporters : [ 'dots' ] , browsers : getBrowsersFromCLI ( ) } , done ) ;
641+ singleRun : true , browserNoActivityTimeout : 240000 , captureTimeout : 120000 , reporters : [ 'dots' , 'saucelabs' ] , browsers : sauceConf . aliases . CI } ,
642+ function ( err ) { done ( ) ; process . exit ( err ? 1 : 0 ) } ) ;
603643} ) ;
604644
605645gulp . task ( 'test.unit.dart/ci' , function ( done ) {
646+ var browserConf = getBrowsersFromCLI ( ) ;
606647 karma . server . start ( { configFile : __dirname + '/karma-dart.conf.js' ,
607- singleRun : true , reporters : [ 'dots' ] , browsers : getBrowsersFromCLI ( ) } , done ) ;
648+ singleRun : true , reporters : [ 'dots' ] , browsers : browserConf . browsersToRun } , done ) ;
608649} ) ;
609650
610651
0 commit comments