@@ -13,15 +13,6 @@ function timeout(ms = 0): Promise<void> {
1313 return new Promise ( r => setTimeout ( r , ms ) ) ;
1414}
1515
16- interface BrowserStubs {
17- stop : ReturnType < typeof mock . fn > ;
18- startDebugSession : ReturnType < typeof mock . fn > ;
19- startSession : ReturnType < typeof mock . fn > ;
20- stopSession : ReturnType < typeof mock . fn > ;
21- isActive : ReturnType < typeof mock . fn > ;
22- getBrowserUrl : ReturnType < typeof mock . fn > ;
23- }
24-
2516describe ( 'TestScheduler' , ( ) => {
2617 let mockConfig : TestRunnerCoreConfig ;
2718
@@ -33,28 +24,17 @@ describe('TestScheduler', () => {
3324 } as Partial < TestSession > as TestSession ;
3425 }
3526
36- function createBrowserStub ( name : string ) : [ BrowserStubs , BrowserLauncher ] {
37- const stubs : BrowserStubs = {
27+ function createBrowserStub ( name : string ) : BrowserLauncher {
28+ return {
29+ name,
30+ type : name ,
3831 stop : mock . fn ( ( ) => timeout ( 1 ) ) ,
3932 startDebugSession : mock . fn ( ( ) => timeout ( 1 ) ) ,
4033 startSession : mock . fn ( ( ) => timeout ( 1 ) ) ,
4134 stopSession : mock . fn ( ( ) => timeout ( 1 ) . then ( ( ) => ( { testCoverage : { } } ) ) ) ,
4235 isActive : mock . fn ( ( ) => true ) ,
4336 getBrowserUrl : mock . fn ( ( ) => '' ) ,
4437 } ;
45- return [
46- stubs ,
47- {
48- name,
49- type : name ,
50- stop : stubs . stop ,
51- startDebugSession : stubs . startDebugSession ,
52- startSession : stubs . startSession ,
53- stopSession : stubs . stopSession ,
54- isActive : stubs . isActive ,
55- getBrowserUrl : stubs . getBrowserUrl ,
56- } ,
57- ] ;
5838 }
5939
6040 beforeEach ( ( ) => {
@@ -82,32 +62,32 @@ describe('TestScheduler', () => {
8262
8363 function createTestFixture (
8464 ...ids : string [ ]
85- ) : [ TestScheduler , TestSessionManager , TestSession [ ] , BrowserStubs ] {
86- const [ browserStubs , browser ] = createBrowserStub ( 'a' ) ;
65+ ) : [ TestScheduler , TestSessionManager , TestSession [ ] , BrowserLauncher ] {
66+ const browser = createBrowserStub ( 'a' ) ;
8767 const sessions : TestSession [ ] = [ ] ;
8868 for ( const id of ids ) {
8969 const session = createSession ( { id, browser } ) ;
9070 sessions . push ( session ) ;
9171 }
9272 const sessionManager = new TestSessionManager ( [ ] , sessions ) ;
9373 const scheduler = new TestScheduler ( mockConfig , sessionManager , [ browser ] ) ;
94- return [ scheduler , sessionManager , sessions , browserStubs ] ;
74+ return [ scheduler , sessionManager , sessions , browser ] ;
9575 }
9676
9777 describe ( 'single browser' , ( ) => {
9878 it ( 'scheduling a session starts the browser and marks initializing' , async ( ) => {
99- const [ scheduler , sessions , [ session1 ] , stubs ] = createTestFixture ( '1' ) ;
79+ const [ scheduler , sessions , [ session1 ] , browser ] = createTestFixture ( '1' ) ;
10080 scheduler . schedule ( 1 , [ session1 ] ) ;
10181
10282 const finalSession1 = sessions . get ( session1 . id ) ! ;
10383 assert . equal ( finalSession1 . status , SESSION_STATUS . INITIALIZING ) ;
104- assert . equal ( stubs . startSession . mock . callCount ( ) , 1 ) ;
84+ assert . equal ( browser . startSession . mock . callCount ( ) , 1 ) ;
10585 } ) ;
10686
10787 it ( 'when a session goes to status test finished, the browser is stopped and results is stored' , async ( ) => {
108- const [ scheduler , sessions , [ session1 ] , stubs ] = createTestFixture ( '1' ) ;
88+ const [ scheduler , sessions , [ session1 ] , browser ] = createTestFixture ( '1' ) ;
10989 const testCoverage = { } ;
110- stubs . stopSession . mock . mockImplementation ( ( ) => timeout ( 1 ) . then ( ( ) => ( { testCoverage } ) ) ) ;
90+ browser . stopSession . mock . mockImplementation ( ( ) => timeout ( 1 ) . then ( ( ) => ( { testCoverage } ) ) ) ;
11191 scheduler . schedule ( 1 , [ session1 ] ) ;
11292
11393 await timeout ( 5 ) ;
@@ -194,8 +174,8 @@ describe('TestScheduler', () => {
194174 } ) ;
195175
196176 it ( 'error while starting browser marks session as failed' , async ( ) => {
197- const [ scheduler , sessions , [ session1 ] , stubs ] = createTestFixture ( '1' ) ;
198- stubs . startSession . mock . mockImplementation ( ( ) => Promise . reject ( new Error ( 'mock error' ) ) ) ;
177+ const [ scheduler , sessions , [ session1 ] , browser ] = createTestFixture ( '1' ) ;
178+ browser . startSession . mock . mockImplementation ( ( ) => Promise . reject ( new Error ( 'mock error' ) ) ) ;
199179 scheduler . schedule ( 1 , [ session1 ] ) ;
200180
201181 await timeout ( 20 ) ;
@@ -209,8 +189,8 @@ describe('TestScheduler', () => {
209189
210190 it ( 'error while starting browser after a session changed state gets logged' , async ( ) => {
211191 const errorStub = mock . method ( mockConfig . logger , 'error' ) ;
212- const [ scheduler , sessions , [ session1 ] , stubs ] = createTestFixture ( '1' ) ;
213- stubs . startSession . mock . mockImplementation ( ( ) =>
192+ const [ scheduler , sessions , [ session1 ] , browser ] = createTestFixture ( '1' ) ;
193+ browser . startSession . mock . mockImplementation ( ( ) =>
214194 timeout ( 5 ) . then ( ( ) => {
215195 throw new Error ( 'mock error' ) ;
216196 } ) ,
@@ -233,8 +213,8 @@ describe('TestScheduler', () => {
233213 } ) ;
234214
235215 it ( 'error while stopping browser marks session as failed' , async ( ) => {
236- const [ scheduler , sessions , [ session1 ] , stubs ] = createTestFixture ( '1' ) ;
237- stubs . stopSession . mock . mockImplementation ( ( ) => Promise . reject ( new Error ( 'mock error' ) ) ) ;
216+ const [ scheduler , sessions , [ session1 ] , browser ] = createTestFixture ( '1' ) ;
217+ browser . stopSession . mock . mockImplementation ( ( ) => Promise . reject ( new Error ( 'mock error' ) ) ) ;
238218 scheduler . schedule ( 1 , [ session1 ] ) ;
239219
240220 await timeout ( 5 ) ;
@@ -250,8 +230,8 @@ describe('TestScheduler', () => {
250230
251231 it ( 'timeout starting the browser marks the session as failed' , async ( ) => {
252232 mockConfig . browserStartTimeout = 2 ;
253- const [ scheduler , sessions , [ session1 ] , stubs ] = createTestFixture ( '1' ) ;
254- stubs . startSession . mock . mockImplementation ( ( ) => timeout ( 40 ) ) ;
233+ const [ scheduler , sessions , [ session1 ] , browser ] = createTestFixture ( '1' ) ;
234+ browser . startSession . mock . mockImplementation ( ( ) => timeout ( 40 ) ) ;
255235 scheduler . schedule ( 1 , [ session1 ] ) ;
256236
257237 await timeout ( 20 ) ;
@@ -306,13 +286,13 @@ describe('TestScheduler', () => {
306286 describe ( 'multi browsers' , ( ) => {
307287 function createTestFixture (
308288 fixtures : { name : string ; ids : string [ ] } [ ] ,
309- ) : [ TestScheduler , TestSessionManager , Array < [ BrowserStubs , BrowserLauncher ] > , TestSession [ ] ] {
310- const browsers : Array < [ BrowserStubs , BrowserLauncher ] > = [ ] ;
289+ ) : [ TestScheduler , TestSessionManager , Array < BrowserLauncher > , TestSession [ ] ] {
290+ const browsers : Array < BrowserLauncher > = [ ] ;
311291 const sessions : TestSession [ ] = [ ] ;
312292
313293 for ( const fixture of fixtures ) {
314- const [ stubs , browser ] = createBrowserStub ( fixture . name ) ;
315- browsers . push ( [ stubs , browser ] ) ;
294+ const browser = createBrowserStub ( fixture . name ) ;
295+ browsers . push ( browser ) ;
316296
317297 for ( const id of fixture . ids ) {
318298 const session = createSession ( { id, browser } ) ;
@@ -321,11 +301,7 @@ describe('TestScheduler', () => {
321301 }
322302
323303 const sessionManager = new TestSessionManager ( [ ] , sessions ) ;
324- const scheduler = new TestScheduler (
325- mockConfig ,
326- sessionManager ,
327- browsers . map ( b => b [ 1 ] ) ,
328- ) ;
304+ const scheduler = new TestScheduler ( mockConfig , sessionManager , browsers ) ;
329305 return [ scheduler , sessionManager , browsers , sessions ] ;
330306 }
331307
@@ -340,35 +316,35 @@ describe('TestScheduler', () => {
340316 const session1 = sessionManager . get ( '1' ) ! ;
341317 const session2 = sessionManager . get ( '2' ) ! ;
342318 const session3 = sessionManager . get ( '3' ) ! ;
343- assert . equal ( session1 . browser , browsers [ 0 ] [ 1 ] ) ;
344- assert . equal ( session2 . browser , browsers [ 0 ] [ 1 ] ) ;
345- assert . equal ( session3 . browser , browsers [ 0 ] [ 1 ] ) ;
319+ assert . equal ( session1 . browser , browsers [ 0 ] ) ;
320+ assert . equal ( session2 . browser , browsers [ 0 ] ) ;
321+ assert . equal ( session3 . browser , browsers [ 0 ] ) ;
346322 assert . equal ( session1 . status , SESSION_STATUS . INITIALIZING ) ;
347323 assert . equal ( session2 . status , SESSION_STATUS . INITIALIZING ) ;
348324 assert . equal ( session3 . status , SESSION_STATUS . SCHEDULED ) ;
349- assert . equal ( browsers [ 0 ] [ 0 ] . startSession . mock . callCount ( ) , 2 ) ;
325+ assert . equal ( browsers [ 0 ] . startSession . mock . callCount ( ) , 2 ) ;
350326
351327 const session4 = sessionManager . get ( '4' ) ! ;
352328 const session5 = sessionManager . get ( '5' ) ! ;
353329 const session6 = sessionManager . get ( '6' ) ! ;
354- assert . equal ( session4 . browser , browsers [ 1 ] [ 1 ] ) ;
355- assert . equal ( session5 . browser , browsers [ 1 ] [ 1 ] ) ;
356- assert . equal ( session6 . browser , browsers [ 1 ] [ 1 ] ) ;
330+ assert . equal ( session4 . browser , browsers [ 1 ] ) ;
331+ assert . equal ( session5 . browser , browsers [ 1 ] ) ;
332+ assert . equal ( session6 . browser , browsers [ 1 ] ) ;
357333 assert . equal ( session4 . status , SESSION_STATUS . INITIALIZING ) ;
358334 assert . equal ( session5 . status , SESSION_STATUS . INITIALIZING ) ;
359335 assert . equal ( session6 . status , SESSION_STATUS . SCHEDULED ) ;
360- assert . equal ( browsers [ 1 ] [ 0 ] . startSession . mock . callCount ( ) , 2 ) ;
336+ assert . equal ( browsers [ 1 ] . startSession . mock . callCount ( ) , 2 ) ;
361337
362338 const session7 = sessionManager . get ( '7' ) ! ;
363339 const session8 = sessionManager . get ( '8' ) ! ;
364340 const session9 = sessionManager . get ( '9' ) ! ;
365- assert . equal ( session7 . browser , browsers [ 2 ] [ 1 ] ) ;
366- assert . equal ( session8 . browser , browsers [ 2 ] [ 1 ] ) ;
367- assert . equal ( session9 . browser , browsers [ 2 ] [ 1 ] ) ;
341+ assert . equal ( session7 . browser , browsers [ 2 ] ) ;
342+ assert . equal ( session8 . browser , browsers [ 2 ] ) ;
343+ assert . equal ( session9 . browser , browsers [ 2 ] ) ;
368344 assert . equal ( session7 . status , SESSION_STATUS . SCHEDULED ) ;
369345 assert . equal ( session8 . status , SESSION_STATUS . SCHEDULED ) ;
370346 assert . equal ( session9 . status , SESSION_STATUS . SCHEDULED ) ;
371- assert . equal ( browsers [ 2 ] [ 0 ] . startSession . mock . callCount ( ) , 0 ) ;
347+ assert . equal ( browsers [ 2 ] . startSession . mock . callCount ( ) , 0 ) ;
372348 } ) ;
373349
374350 it ( 'finishing a test schedules a new one' , async ( ) => {
@@ -384,9 +360,9 @@ describe('TestScheduler', () => {
384360 await timeout ( 20 ) ;
385361
386362 const session3 = sessionManager . get ( '3' ) ! ;
387- assert . equal ( session3 . browser , browsers [ 0 ] [ 1 ] ) ;
363+ assert . equal ( session3 . browser , browsers [ 0 ] ) ;
388364 assert . equal ( session3 . status , SESSION_STATUS . INITIALIZING ) ;
389- assert . equal ( browsers [ 0 ] [ 0 ] . startSession . mock . callCount ( ) , 3 ) ;
365+ assert . equal ( browsers [ 0 ] . startSession . mock . callCount ( ) , 3 ) ;
390366 } ) ;
391367
392368 it ( 'overflow of concurrency budget does not trigger a new browser to start' , async ( ) => {
@@ -403,9 +379,9 @@ describe('TestScheduler', () => {
403379 await timeout ( 20 ) ;
404380
405381 const session7 = sessionManager . get ( '7' ) ! ;
406- assert . equal ( session7 . browser , browsers [ 2 ] [ 1 ] ) ;
382+ assert . equal ( session7 . browser , browsers [ 2 ] ) ;
407383 assert . equal ( session7 . status , SESSION_STATUS . SCHEDULED ) ;
408- assert . equal ( browsers [ 2 ] [ 0 ] . startSession . mock . callCount ( ) , 0 ) ;
384+ assert . equal ( browsers [ 2 ] . startSession . mock . callCount ( ) , 0 ) ;
409385 } ) ;
410386
411387 it ( 'finishing one browsers schedules a new browser' , async ( ) => {
@@ -424,9 +400,9 @@ describe('TestScheduler', () => {
424400 await timeout ( 20 ) ;
425401
426402 const session7 = sessionManager . get ( '7' ) ! ;
427- assert . equal ( session7 . browser , browsers [ 2 ] [ 1 ] ) ;
403+ assert . equal ( session7 . browser , browsers [ 2 ] ) ;
428404 assert . equal ( session7 . status , SESSION_STATUS . INITIALIZING ) ;
429- assert . equal ( browsers [ 2 ] [ 0 ] . startSession . mock . callCount ( ) , 2 ) ;
405+ assert . equal ( browsers [ 2 ] . startSession . mock . callCount ( ) , 2 ) ;
430406 } ) ;
431407 } ) ;
432408} ) ;
0 commit comments