|
1 | | -import { Page } from '@playwright/test' |
| 1 | +import { Page, Request } from '@playwright/test' |
2 | 2 |
|
3 | 3 | interface WaitForNetworkIdleOptions { |
4 | 4 | timeout?: number |
@@ -43,27 +43,31 @@ export function waitForNetworkIdle(page: Page, pOptions?: WaitForNetworkIdleOpti |
43 | 43 | return Object.entries(inFlightRequestsMap).filter(([, value]) => value > 0) |
44 | 44 | } |
45 | 45 |
|
46 | | - page.on('request', (request) => { |
| 46 | + function onRequest(request: Request) { |
47 | 47 | if (isSettled) return |
48 | 48 |
|
49 | 49 | const url = request.url() |
50 | 50 | debug(`>> ${url}`) |
51 | 51 | inFlightRequestsMap[url] = (inFlightRequestsMap[url] || 0) + 1 |
52 | 52 |
|
53 | 53 | clearTimeout(resolveTimeout) |
54 | | - }) |
| 54 | + } |
55 | 55 |
|
56 | | - page.on('response', (response) => { |
| 56 | + function onResponse(request: Request) { |
57 | 57 | if (isSettled) return |
58 | 58 |
|
59 | | - const url = response.url() |
| 59 | + const url = request.url() |
60 | 60 | debug(`<< ${url}`) |
61 | 61 | inFlightRequestsMap[url] = (inFlightRequestsMap[url] || 1) - 1 |
62 | 62 |
|
63 | 63 | if (getInFlightRequests().length === 0) { |
64 | 64 | resolveTimeout = setTimeout(resolve, pOptions?.minIdleTime || 200) |
65 | 65 | } |
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. |
67 | 71 | }) |
68 | 72 | } |
69 | 73 |
|
|
0 commit comments