@@ -36,6 +36,20 @@ var args = {
3636 // or 'chrome' or 'firefox' or 'ie' or 'phantomjs'
3737} ;
3838
39+ var skipNoDesktop = function ( task ) {
40+ if ( [ 'linux' , 'freebsd' , 'sunos' ] . indexOf ( process . platform ) >= 0 ) {
41+ if ( ! process . env . DESKTOP_SESSION ) {
42+ console . log (
43+ chalk . yellow (
44+ 'Skipping task ' + task + ' because there is no desktop environment'
45+ )
46+ ) ;
47+ return true ;
48+ }
49+ }
50+ return false ;
51+ } ;
52+
3953_ . merge ( args , require ( 'yargs' ) . argv ) ;
4054
4155if ( ! args . tags ) {
@@ -48,6 +62,9 @@ if (args.sauce && args.selenium !== 'external') {
4862}
4963
5064var seleniumStart = function ( cb ) {
65+ if ( skipNoDesktop ( 'selenium-start' ) ) {
66+ return cb ( ) ;
67+ }
5168 var seleniumHandler ;
5269 switch ( args . selenium ) {
5370 case 'external' :
@@ -112,44 +129,40 @@ myTasks.push({
112129 deps : [ 'build' , 'selenium-start' , 'middle-tier-start' ] ,
113130 func : function ( cb ) {
114131 try {
132+ var skip = skipNoDesktop ( 'e2e' ) ;
133+
115134 var haveClosed = false ;
116135
117136 require ( 'gulp' ) . doneCallback = function ( err ) {
118137 process . exit ( err ? 1 : 0 ) ;
119138 } ;
120139
121- process . on ( 'exit' , function ( err ) {
140+ var done = function ( err ) {
122141 if ( ! haveClosed ) {
123- err = err ? new Error ( err ) : null ;
142+ err = err && ! Error . prototype . isPrototypeOf ( err ) ?
143+ new Error ( err ) :
144+ null ;
124145 ctx . closeActiveServers ( function ( ) { cb ( err ) ; } ) ;
125146 haveClosed = true ;
126147 }
127- } ) ;
148+ } ;
128149
129- ctx . startServer (
130- ctx . paths . browser . buildDir ,
131- ctx . options . envs . e2e . addresses . webApp . port
132- ) ;
150+ process . on ( 'exit' , done ) ;
151+
152+ if ( ! skip ) {
153+ ctx . startServer (
154+ ctx . paths . browser . buildDir ,
155+ ctx . options . envs . e2e . addresses . webApp . port
156+ ) ;
133157
134- protractorRun ( function ( err ) {
135- haveClosed = true ;
136- ctx . closeActiveServers ( function ( ) {
137- cb ( err ) ;
138- setTimeout ( function ( ) {
139- process . exit ( ) ;
140- } , 500 ) ;
141- } ) ;
142- } ) ;
158+ protractorRun ( done ) ;
159+ }
160+ else {
161+ done ( ) ;
162+ }
143163 }
144164 catch ( err ) {
145- haveClosed = true ;
146- ctx . closeActiveServers ( function ( ) {
147- console . log ( err ) ;
148- cb ( err ) ;
149- setTimeout ( function ( ) {
150- process . exit ( ) ;
151- } , 500 ) ;
152- } ) ;
165+ done ( err ) ;
153166 }
154167 }
155168} ) ;
0 commit comments