11import { browser , by , element , ExpectedConditions } from 'protractor' ;
22import { isLoaded , login , logout , waitForUrlToChangeTo , delay } from './utils' ;
3- import { request as pushEventRequest , header as pushEventHeader }
4- from '../tests/e2e/webhooks/github/PushEvent' ;
5- import { requestOpened , requestReopened , header as pullRequestHeader }
6- from '../tests/e2e/webhooks/github/PullRequestEvent' ;
3+ import {
4+ request as pushEventRequest ,
5+ header as pushEventHeader
6+ } from '../tests/e2e/webhooks/github/PushEvent' ;
7+ import {
8+ requestOpened , requestReopened ,
9+ header as pullRequestHeader
10+ } from '../tests/e2e/webhooks/github/PullRequestEvent' ;
711import { sendGitHubRequest } from '../tests/e2e/utils/utils' ;
12+ import { killAllContainers } from '../src/api/docker' ;
813
914describe ( 'Builds' , ( ) => {
15+ beforeAll ( ( ) => login ( ) . then ( ( ) => browser . waitForAngularEnabled ( false ) ) ) ;
16+ afterAll ( ( ) => logout ( ) . then ( ( ) => browser . waitForAngularEnabled ( true ) ) ) ;
17+ afterEach ( ( ) => delay ( 5000 ) . then ( ( ) => killAllContainers ( ) ) ) ;
1018
11- beforeAll ( ( ) => {
12- login ( )
13- . then ( ( ) => browser . waitForAngularEnabled ( false ) ) ;
19+ afterEach ( ( ) => {
20+ return Promise . resolve ( ( ) => {
21+ return browser . wait ( ( ) => element . all ( by . css ( '.disabled' ) ) . count ( ) . then ( cnt => cnt === 0 ) ) ;
22+ } ) ;
1423 } ) ;
1524
16- afterAll ( ( ) => {
17- logout ( )
18- . then ( ( ) => browser . waitForAngularEnabled ( true ) ) ;
19- } ) ;
20-
21-
2225 it ( 'should open first page with zero builds' , ( ) => {
23- return browser . get ( '/' )
24- . then ( ( ) => browser . wait ( ( ) => element ( by . css ( '.is-info' ) ) . isPresent ( ) ) )
26+ return Promise . resolve ( )
27+ . then ( ( ) : any => browser . wait ( ( ) => element ( by . css ( '.is-info' ) ) . isPresent ( ) ) )
2528 . then ( ( ) => expect ( element ( by . css ( '.is-info' ) ) . getText ( ) )
2629 . toContain ( 'No builds has been runned yet.' ) ) ;
2730 } ) ;
@@ -34,85 +37,91 @@ describe('Builds', () => {
3437 it ( 'should redirect after click on first build' , ( ) => {
3538 return Promise . resolve ( )
3639 . then ( ( ) : any => browser . wait ( ( ) => element ( by . css ( '.list-item' ) ) . isPresent ( ) ) )
37- . then ( ( ) => {
38- return browser . wait (
39- ExpectedConditions . elementToBeClickable ( element ( by . css ( '.list-item' ) ) ) , 10000 ) ;
40- } )
4140 . then ( ( ) : any => element ( by . css ( '.list-item' ) ) . click ( ) )
4241 . then ( ( ) : any => waitForUrlToChangeTo ( 'http://localhost:6500/build/1' ) )
43- . then ( ( ) => browser . get ( '/' ) )
44- . then ( ( ) : any => browser . wait ( ( ) => element ( by . css ( '.stop-build' ) ) . isPresent ( ) ) )
45- . then ( ( ) : any => element ( by . css ( '.stop-build' ) ) . click ( ) )
42+ . then ( ( ) => browser . navigate ( ) . back ( ) )
43+ . then ( ( ) : any => browser . wait ( ( ) => {
44+ return element ( by . css ( '.list-item:nth-child(1) .stop-build' ) ) . isPresent ( ) ;
45+ } ) )
46+ . then ( ( ) : any => element ( by . css ( '.list-item:nth-child(1) .stop-build' ) ) . click ( ) )
4647 . then ( ( ) : any => browser . wait ( ( ) => {
47- return element . all ( by . css ( '.is-running' ) ) . count ( )
48- . then ( count => count === 0 ) ;
48+ return element . all ( by . css ( '.is-running' ) ) . count ( ) . then ( count => count === 0 ) ;
4949 } ) ) ;
5050 } ) ;
5151
5252 it ( 'should start new build (send open_pull_request event)' , ( ) => {
5353 return sendGitHubRequest ( requestOpened , pullRequestHeader )
54- . then ( ( ) => browser . get ( '/' ) )
55- . then ( ( ) : any => browser . wait ( ( ) => element ( by . css ( '.list-item:nth-child(1)' ) ) . isPresent ( ) ) )
56- . then ( ( ) : any => element ( by . css ( '.list-item:nth-child(1)' ) ) . click ( ) )
57- . then ( ( ) : any => waitForUrlToChangeTo ( 'http://localhost:6500/build/2' ) )
58- . then ( ( ) => browser . get ( '/' ) )
59- . then ( ( ) : any => browser . wait ( ( ) => element ( by . css ( '.stop-build' ) ) . isPresent ( ) ) )
60- . then ( ( ) : any => element . all ( by . css ( '.stop-build' ) ) . first ( ) . click ( ) )
54+ . then ( ( ) : any => browser . wait ( ( ) => element . all ( by . css ( '.list-item' ) ) . count ( ) . then ( cnt => {
55+ return cnt === 2 ;
56+ } ) ) )
6157 . then ( ( ) : any => browser . wait ( ( ) => {
62- return element . all ( by . css ( '.is-running' ) ) . count ( )
63- . then ( count => {
64- if ( count === 0 ) {
65- return true ;
66- } else {
67- return false ;
68- }
69- } ) ;
58+ return element . all ( by . css ( '.is-running' ) ) . count ( ) . then ( count => count === 1 ) ;
59+ } ) )
60+ . then ( ( ) : any => browser . wait ( ( ) => {
61+ return element . all ( by . css ( '.disabled' ) ) . count ( ) . then ( cnt => cnt === 0 ) ;
62+ } ) )
63+ . then ( ( ) : any => browser . wait ( ( ) => {
64+ return element ( by . css ( '.list-item:nth-child(1) .stop-build' ) ) . isPresent ( ) ;
65+ } ) )
66+ . then ( ( ) : any => element . all ( by . css ( '.list-item:nth-child(1) .stop-build' ) ) . first ( ) . click ( ) )
67+ . then ( ( ) : any => browser . wait ( ( ) => {
68+ return element . all ( by . css ( '.is-running' ) ) . count ( ) . then ( count => count === 0 ) ;
7069 } ) ) ;
7170 } ) ;
7271
7372 it ( 'should start new build (send reopen_pull_request event)' , ( ) => {
7473 return sendGitHubRequest ( requestReopened , pullRequestHeader )
75- . then ( ( ) => browser . get ( '/' ) )
76- . then ( ( ) : any => browser . wait ( ( ) => element ( by . css ( '.list-item:nth-child(1)' ) ) . isPresent ( ) ) )
77- . then ( ( ) : any => element ( by . css ( '.list-item:nth-child(1)' ) ) . click ( ) )
78- . then ( ( ) : any => waitForUrlToChangeTo ( 'http://localhost:6500/build/3' ) )
79- . then ( ( ) => browser . get ( '/' ) )
80- . then ( ( ) : any => browser . wait ( ( ) => element ( by . css ( '.stop-build' ) ) . isPresent ( ) ) )
74+ . then ( ( ) : any => browser . wait ( ( ) => element . all ( by . css ( '.list-item' ) ) . count ( ) . then ( cnt => {
75+ return cnt === 3 ;
76+ } ) ) )
77+ . then ( ( ) : any => browser . wait ( ( ) => {
78+ return element . all ( by . css ( '.is-running' ) ) . count ( ) . then ( count => count === 1 ) ;
79+ } ) )
80+ . then ( ( ) : any => browser . wait ( ( ) => {
81+ return element . all ( by . css ( '.disabled' ) ) . count ( ) . then ( cnt => cnt === 0 ) ;
82+ } ) )
83+ . then ( ( ) : any => browser . wait ( ( ) => {
84+ return element . all ( by . css ( '.list-item:nth-child(1) .stop-build' ) ) . first ( ) . isPresent ( ) ;
85+ } ) )
86+ . then ( ( ) : any => {
87+ return browser . wait ( ( ) => {
88+ const el = element ( by . css ( '.list-item:nth-child(1) .stop-build' ) ) ;
89+ return ExpectedConditions . elementToBeClickable ( el ) ;
90+ } ) ;
91+ } )
8192 . then ( ( ) : any => element . all ( by . css ( '.stop-build' ) ) . first ( ) . click ( ) )
8293 . then ( ( ) : any => browser . wait ( ( ) => {
83- return element . all ( by . css ( '.is-running' ) ) . count ( )
84- . then ( count => {
85- if ( count === 0 ) {
86- return true ;
87- } else {
88- return false ;
89- }
90- } ) ;
94+ return element . all ( by . css ( '.is-running' ) ) . count ( ) . then ( count => count === 0 ) ;
9195 } ) ) ;
9296 } ) ;
9397
94- xit ( 'should restart last build' , ( ) => {
95- browser . get ( '/' )
96- . then ( ( ) : any => browser . wait ( ( ) => element ( by . css ( '.restart-build' ) ) . isPresent ( ) ) )
97- . then ( ( ) => element . all ( by . css ( '.restart-build' ) ) . first ( ) . click ( ) )
98- . then ( ( ) => browser . wait ( ( ) => {
99- return element . all ( by . css ( '.is-running' ) ) . count ( )
100- . then ( count => count > 0 ) ;
98+ it ( 'should restart last build' , ( ) => {
99+ return Promise . resolve ( )
100+ . then ( ( ) : any => browser . wait ( ( ) => {
101+ return element . all ( by . css ( '.disabled' ) ) . count ( ) . then ( cnt => cnt === 0 ) ;
102+ } ) )
103+ . then ( ( ) : any => browser . wait ( ( ) => {
104+ return element . all ( by . css ( '.restart-build' ) ) . first ( ) . isPresent ( ) ;
105+ } ) )
106+ . then ( ( ) : any => element . all ( by . css ( '.restart-build' ) ) . first ( ) . click ( ) )
107+ . then ( ( ) : any => browser . wait ( ( ) => {
108+ return element . all ( by . css ( '.is-running' ) ) . count ( ) . then ( count => count > 0 ) ;
101109 } ) )
102110 . then ( ( ) : any => browser . wait ( ( ) => {
103- return element . all ( by . css ( '.stop-build' ) ) . count ( )
104- . then ( c => c === 3 ) ;
111+ return element . all ( by . css ( '.disabled' ) ) . count ( ) . then ( cnt => cnt === 0 ) ;
112+ } ) )
113+ . then ( ( ) : any => {
114+ return browser . wait ( ( ) => {
115+ const el = element ( by . css ( '.list-item:nth-child(1) .stop-build' ) ) ;
116+ return ExpectedConditions . elementToBeClickable ( el ) ;
117+ } ) ;
105118 } )
106- . then ( ( ) => element . all ( by . css ( '.stop-build' ) ) . first ( ) . click ( ) )
107- . then ( ( ) => browser . wait ( ( ) => {
108- return element . all ( by . css ( '.is-running' ) ) . count ( )
109- . then ( count => {
110- if ( count === 0 ) {
111- return true ;
112- } else {
113- return false ;
114- }
115- } ) ;
116- } ) ) ) ;
119+ . then ( ( ) : any => browser . wait ( ( ) => {
120+ return element . all ( by . css ( '.list-item:nth-child(1) .stop-build' ) ) . first ( ) . isPresent ( ) ;
121+ } ) )
122+ . then ( ( ) : any => element . all ( by . css ( '.list-item:nth-child(1) .stop-build' ) ) . first ( ) . click ( ) )
123+ . then ( ( ) : any => browser . wait ( ( ) => {
124+ return element . all ( by . css ( '.is-running' ) ) . count ( ) . then ( count => count === 0 ) ;
125+ } ) ) ;
117126 } ) ;
118127} ) ;
0 commit comments