@@ -5,11 +5,10 @@ import * as fs from 'fs';
55import * as qs from 'querystring' ;
66import * as http from 'http' ;
77import * as os from 'os' ;
8- import { AddressInfo } from 'net' ;
98import { app , BrowserWindow , BrowserView , dialog , ipcMain , OnBeforeSendHeadersListenerDetails , protocol , screen , webContents , session , WebContents } from 'electron/main' ;
109
1110import { emittedOnce , emittedUntil , emittedNTimes } from './lib/events-helpers' ;
12- import { ifit , ifdescribe , defer , delay } from './lib/spec-helpers' ;
11+ import { ifit , ifdescribe , defer , delay , listen } from './lib/spec-helpers' ;
1312import { closeWindow , closeAllWindows } from './lib/window-helpers' ;
1413import { areColorsSimilar , captureScreen , HexColors , getPixelColor } from './lib/screen-helpers' ;
1514
@@ -153,7 +152,7 @@ describe('BrowserWindow module', () => {
153152 let server : http . Server ;
154153 let url : string ;
155154
156- before ( ( done ) => {
155+ before ( async ( ) => {
157156 server = http . createServer ( ( request , response ) => {
158157 switch ( request . url ) {
159158 case '/net-error' :
@@ -175,10 +174,9 @@ describe('BrowserWindow module', () => {
175174 default :
176175 throw new Error ( `unsupported endpoint: ${ request . url } ` ) ;
177176 }
178- } ) . listen ( 0 , '127.0.0.1' , ( ) => {
179- url = 'http://127.0.0.1:' + ( server . address ( ) as AddressInfo ) . port ;
180- done ( ) ;
181177 } ) ;
178+
179+ url = ( await listen ( server ) ) . url ;
182180 } ) ;
183181
184182 after ( ( ) => {
@@ -297,7 +295,7 @@ describe('BrowserWindow module', () => {
297295 let server : http . Server ;
298296 let url : string ;
299297 let postData = null as any ;
300- before ( ( done ) => {
298+ before ( async ( ) => {
301299 const filePath = path . join ( fixtures , 'pages' , 'a.html' ) ;
302300 const fileStats = fs . statSync ( filePath ) ;
303301 postData = [
@@ -340,10 +338,8 @@ describe('BrowserWindow module', () => {
340338 }
341339 setTimeout ( respond , req . url && req . url . includes ( 'slow' ) ? 200 : 0 ) ;
342340 } ) ;
343- server . listen ( 0 , '127.0.0.1' , ( ) => {
344- url = `http://127.0.0.1:${ ( server . address ( ) as AddressInfo ) . port } ` ;
345- done ( ) ;
346- } ) ;
341+
342+ url = ( await listen ( server ) ) . url ;
347343 } ) ;
348344
349345 after ( ( ) => {
@@ -486,30 +482,26 @@ describe('BrowserWindow module', () => {
486482 describe ( 'will-navigate event' , ( ) => {
487483 let server : http . Server ;
488484 let url : string ;
489- before ( ( done ) => {
485+ before ( async ( ) => {
490486 server = http . createServer ( ( req , res ) => {
491487 if ( req . url === '/navigate-top' ) {
492488 res . end ( '<a target=_top href="/">navigate _top</a>' ) ;
493489 } else {
494490 res . end ( '' ) ;
495491 }
496492 } ) ;
497- server . listen ( 0 , '127.0.0.1' , ( ) => {
498- url = `http://127.0.0.1:${ ( server . address ( ) as AddressInfo ) . port } /` ;
499- done ( ) ;
500- } ) ;
493+ url = ( await listen ( server ) ) . url ;
501494 } ) ;
502495
503496 after ( ( ) => {
504497 server . close ( ) ;
505498 } ) ;
506499
507- it ( 'allows the window to be closed from the event listener' , ( done ) => {
508- w . webContents . once ( 'will-navigate' , ( ) => {
509- w . close ( ) ;
510- done ( ) ;
511- } ) ;
500+ it ( 'allows the window to be closed from the event listener' , async ( ) => {
501+ const event = emittedOnce ( w . webContents , 'will-navigate' ) ;
512502 w . loadFile ( path . join ( fixtures , 'pages' , 'will-navigate.html' ) ) ;
503+ await event ;
504+ w . close ( ) ;
513505 } ) ;
514506
515507 it ( 'can be prevented' , ( done ) => {
@@ -541,7 +533,7 @@ describe('BrowserWindow module', () => {
541533 resolve ( url ) ;
542534 } ) ;
543535 } ) ;
544- expect ( navigatedTo ) . to . equal ( url ) ;
536+ expect ( navigatedTo ) . to . equal ( url + '/' ) ;
545537 expect ( w . webContents . getURL ( ) ) . to . match ( / ^ f i l e : / ) ;
546538 } ) ;
547539
@@ -554,12 +546,12 @@ describe('BrowserWindow module', () => {
554546 resolve ( url ) ;
555547 } ) ;
556548 } ) ;
557- expect ( navigatedTo ) . to . equal ( url ) ;
549+ expect ( navigatedTo ) . to . equal ( url + '/' ) ;
558550 expect ( w . webContents . getURL ( ) ) . to . equal ( 'about:blank' ) ;
559551 } ) ;
560552
561553 it ( 'is triggered when a cross-origin iframe navigates _top' , async ( ) => {
562- await w . loadURL ( `data:text/html,<iframe src="http://127.0.0.1: ${ ( server . address ( ) as AddressInfo ) . port } /navigate-top"></iframe>` ) ;
554+ await w . loadURL ( `data:text/html,<iframe src="${ url } /navigate-top"></iframe>` ) ;
563555 await delay ( 1000 ) ;
564556 w . webContents . debugger . attach ( '1.1' ) ;
565557 const targets = await w . webContents . debugger . sendCommand ( 'Target.getTargets' ) ;
@@ -594,7 +586,7 @@ describe('BrowserWindow module', () => {
594586 describe ( 'will-redirect event' , ( ) => {
595587 let server : http . Server ;
596588 let url : string ;
597- before ( ( done ) => {
589+ before ( async ( ) => {
598590 server = http . createServer ( ( req , res ) => {
599591 if ( req . url === '/302' ) {
600592 res . setHeader ( 'Location' , '/200' ) ;
@@ -606,10 +598,7 @@ describe('BrowserWindow module', () => {
606598 res . end ( ) ;
607599 }
608600 } ) ;
609- server . listen ( 0 , '127.0.0.1' , ( ) => {
610- url = `http://127.0.0.1:${ ( server . address ( ) as AddressInfo ) . port } ` ;
611- done ( ) ;
612- } ) ;
601+ url = ( await listen ( server ) ) . url ;
613602 } ) ;
614603
615604 after ( ( ) => {
@@ -643,12 +632,11 @@ describe('BrowserWindow module', () => {
643632 expect ( stopCalled ) . to . equal ( false , 'should not have called did-stop-loading first' ) ;
644633 } ) ;
645634
646- it ( 'allows the window to be closed from the event listener' , ( done ) => {
647- w . webContents . once ( 'will-redirect' , ( ) => {
648- w . close ( ) ;
649- done ( ) ;
650- } ) ;
635+ it ( 'allows the window to be closed from the event listener' , async ( ) => {
636+ const event = emittedOnce ( w . webContents , 'will-redirect' ) ;
651637 w . loadURL ( `${ url } /302` ) ;
638+ await event ;
639+ w . close ( ) ;
652640 } ) ;
653641
654642 it ( 'can be prevented' , ( done ) => {
@@ -1914,9 +1902,7 @@ describe('BrowserWindow module', () => {
19141902 res . end ( ) ;
19151903 } ) ;
19161904 server . on ( 'connection' , ( ) => { connections ++ ; } ) ;
1917-
1918- await new Promise < void > ( resolve => server . listen ( 0 , '127.0.0.1' , ( ) => resolve ( ) ) ) ;
1919- url = `http://127.0.0.1:${ ( server . address ( ) as AddressInfo ) . port } ` ;
1905+ url = ( await listen ( server ) ) . url ;
19201906 } ) ;
19211907 afterEach ( async ( ) => {
19221908 server . close ( ) ;
@@ -2944,7 +2930,7 @@ describe('BrowserWindow module', () => {
29442930 let server : http . Server ;
29452931 let serverUrl : string ;
29462932
2947- before ( ( done ) => {
2933+ before ( async ( ) => {
29482934 server = http . createServer ( ( request , response ) => {
29492935 switch ( request . url ) {
29502936 case '/cross-site' :
@@ -2953,10 +2939,8 @@ describe('BrowserWindow module', () => {
29532939 default :
29542940 throw new Error ( `unsupported endpoint: ${ request . url } ` ) ;
29552941 }
2956- } ) . listen ( 0 , '127.0.0.1' , ( ) => {
2957- serverUrl = 'http://127.0.0.1:' + ( server . address ( ) as AddressInfo ) . port ;
2958- done ( ) ;
29592942 } ) ;
2943+ serverUrl = ( await listen ( server ) ) . url ;
29602944 } ) ;
29612945
29622946 after ( ( ) => {
@@ -4475,13 +4459,11 @@ describe('BrowserWindow module', () => {
44754459 let server : http . Server ;
44764460 let serverUrl : string ;
44774461
4478- before ( ( done ) => {
4462+ before ( async ( ) => {
44794463 server = http . createServer ( ( request , response ) => {
44804464 response . end ( ) ;
4481- } ) . listen ( 0 , '127.0.0.1' , ( ) => {
4482- serverUrl = 'http://127.0.0.1:' + ( server . address ( ) as AddressInfo ) . port ;
4483- done ( ) ;
44844465 } ) ;
4466+ serverUrl = ( await listen ( server ) ) . url ;
44854467 } ) ;
44864468
44874469 after ( ( ) => {
0 commit comments