@@ -6,18 +6,27 @@ interface WaitForNetworkIdleOptions {
66 debug ?: boolean
77}
88
9+ /** Global default options for all `*waitForNetworkIdle` functions. */
10+ export const WaitForNetworkIdleDefaultOptions : Required < WaitForNetworkIdleOptions > = {
11+ timeout : 10000 ,
12+ minIdleTime : 200 ,
13+ debug : false ,
14+ }
15+
916/** Wait for all network requests to be settled before resolving. */
1017export function waitForNetworkIdle ( page : Page , pOptions ?: WaitForNetworkIdleOptions ) {
18+ const options = { ...WaitForNetworkIdleDefaultOptions , ...pOptions }
19+
1120 function debug ( message : string ) {
12- if ( ! pOptions ? .debug ) return
21+ if ( ! options . debug ) return
1322 console . log ( `[waitForNetworkIdle] ${ message } ` )
1423 }
1524
1625 return new Promise < void > ( ( _resolve , _reject ) => {
1726 let isSettled = false
1827 const inFlightRequestsMap : Record < string , number > = { }
1928 let resolveTimeout : NodeJS . Timeout | undefined = undefined
20- const rejectTimeout = setTimeout ( reject , pOptions ? .timeout || 10000 )
29+ const rejectTimeout = setTimeout ( reject , options . timeout )
2130
2231 function resolve ( ) {
2332 clearTimeout ( rejectTimeout )
@@ -61,7 +70,7 @@ export function waitForNetworkIdle(page: Page, pOptions?: WaitForNetworkIdleOpti
6170 inFlightRequestsMap [ url ] = ( inFlightRequestsMap [ url ] || 1 ) - 1
6271
6372 if ( getInFlightRequests ( ) . length === 0 ) {
64- resolveTimeout = setTimeout ( resolve , pOptions ? .minIdleTime || 200 )
73+ resolveTimeout = setTimeout ( resolve , options . minIdleTime )
6574 }
6675 }
6776
0 commit comments