Skip to content

Commit f41c652

Browse files
Merge pull request #87 from devoxa/fix-wait-for-network-idle
Make waitForNetworkIdle more consistent
2 parents 6858cd6 + 9cde891 commit f41c652

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

src/waitForNetworkIdle.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Page } from '@playwright/test'
1+
import { Page, Request } from '@playwright/test'
22

33
interface WaitForNetworkIdleOptions {
44
timeout?: number
@@ -43,27 +43,31 @@ export function waitForNetworkIdle(page: Page, pOptions?: WaitForNetworkIdleOpti
4343
return Object.entries(inFlightRequestsMap).filter(([, value]) => value > 0)
4444
}
4545

46-
page.on('request', (request) => {
46+
function onRequest(request: Request) {
4747
if (isSettled) return
4848

4949
const url = request.url()
5050
debug(`>> ${url}`)
5151
inFlightRequestsMap[url] = (inFlightRequestsMap[url] || 0) + 1
5252

5353
clearTimeout(resolveTimeout)
54-
})
54+
}
5555

56-
page.on('response', (response) => {
56+
function onResponse(request: Request) {
5757
if (isSettled) return
5858

59-
const url = response.url()
59+
const url = request.url()
6060
debug(`<< ${url}`)
6161
inFlightRequestsMap[url] = (inFlightRequestsMap[url] || 1) - 1
6262

6363
if (getInFlightRequests().length === 0) {
6464
resolveTimeout = setTimeout(resolve, pOptions?.minIdleTime || 200)
6565
}
66-
})
66+
}
67+
68+
page.on('request', onRequest) // Emitted when a request is issued.
69+
page.on('requestfailed', onResponse) // Emitted when a request fails, for example by timing out.
70+
page.on('requestfinished', onResponse) // Emitted when a request finishes, after downloading the response body.
6771
})
6872
}
6973

0 commit comments

Comments
 (0)