@@ -7,6 +7,10 @@ var chai = require('chai');
7
7
var expect = chai . expect ;
8
8
var conf = require ( 'ember-cli/tests/helpers/conf' ) ;
9
9
var sh = require ( 'shelljs' ) ;
10
+ var treeKill = require ( 'tree-kill' ) ;
11
+ var child_process = require ( 'child_process' ) ;
12
+ var Promise = require ( 'ember-cli/lib/ext/promise' ) ;
13
+ var execPromise = Promise . denodeify ( child_process . exec ) ;
10
14
var ng = require ( '../helpers/ng' ) ;
11
15
var root = path . join ( process . cwd ( ) , 'tmp' ) ;
12
16
@@ -115,6 +119,39 @@ describe('Basic end-to-end Workflow', function () {
115
119
} ) ;
116
120
} ) ;
117
121
122
+ it ( 'Serve and run e2e tests after initial build' , function ( ) {
123
+ this . timeout ( 420000 ) ;
124
+
125
+ var ngServePid ;
126
+
127
+ function executor ( resolve , reject ) {
128
+ var serveFailedMsg = 'ng serve command failed' ;
129
+ var e2eFailedMsg = 'ng serve command failed' ;
130
+ var child = child_process . exec ( 'ng serve' ) ;
131
+ ngServePid = child . pid ;
132
+
133
+ child . stdout . on ( 'data' , ( data ) => {
134
+ if ( / ^ B u i l d s u c c e s s f u l / . test ( data ) ) {
135
+ resolve ( execPromise ( 'ng e2e' ) . catch ( ( ) => Promise . reject ( e2eFailedMsg ) ) ) ;
136
+ } else if ( / f a i l e d w i t h : / . test ( data ) ) {
137
+ reject ( serveFailedMsg ) ;
138
+ }
139
+ } ) ;
140
+
141
+ child . stderr . on ( 'data' , ( ) => reject ( serveFailedMsg ) ) ;
142
+ child . on ( 'close' , ( code ) => code === 0 ? resolve ( ) : reject ( serveFailedMsg ) ) ;
143
+ }
144
+
145
+ return new Promise ( executor )
146
+ . then ( ( ) => {
147
+ if ( ngServePid ) treeKill ( ngServePid ) ;
148
+ } )
149
+ . catch ( ( msg ) => {
150
+ if ( ngServePid ) treeKill ( ngServePid ) ;
151
+ throw new Error ( msg ) ;
152
+ } ) ;
153
+ } ) ;
154
+
118
155
it ( 'Can create a test component using `ng generate component test-component`' , function ( ) {
119
156
this . timeout ( 10000 ) ;
120
157
return ng ( [ 'generate' , 'component' , 'test-component' ] ) . then ( function ( ) {
@@ -373,4 +410,37 @@ describe('Basic end-to-end Workflow', function () {
373
410
expect ( 'build failed where it should have succeeded' ) . to . equal ( '' ) ;
374
411
} ) ;
375
412
} ) ;
413
+
414
+ it ( 'Serve and run e2e tests after final build' , function ( ) {
415
+ this . timeout ( 420000 ) ;
416
+
417
+ var ngServePid ;
418
+
419
+ function executor ( resolve , reject ) {
420
+ var serveFailedMsg = 'ng serve command failed' ;
421
+ var e2eFailedMsg = 'ng serve command failed' ;
422
+ var child = child_process . exec ( `${ ngBin } serve` ) ;
423
+ ngServePid = child . pid ;
424
+
425
+ child . stdout . on ( 'data' , ( data ) => {
426
+ if ( / ^ B u i l d s u c c e s s f u l / . test ( data ) ) {
427
+ resolve ( execPromise ( `${ ngBin } e2e` ) . catch ( ( ) => Promise . reject ( e2eFailedMsg ) ) ) ;
428
+ } else if ( / f a i l e d w i t h : / . test ( data ) ) {
429
+ reject ( serveFailedMsg ) ;
430
+ }
431
+ } ) ;
432
+
433
+ child . stderr . on ( 'data' , ( ) => reject ( serveFailedMsg ) ) ;
434
+ child . on ( 'close' , ( code ) => code === 0 ? resolve ( ) : reject ( serveFailedMsg ) ) ;
435
+ }
436
+
437
+ return new Promise ( executor )
438
+ . then ( ( ) => {
439
+ if ( ngServePid ) treeKill ( ngServePid ) ;
440
+ } )
441
+ . catch ( ( msg ) => {
442
+ if ( ngServePid ) treeKill ( ngServePid ) ;
443
+ throw new Error ( msg ) ;
444
+ } ) ;
445
+ } ) ;
376
446
} ) ;
0 commit comments