fix(network): resolve response.finished() when the request fails after the response - #42787
Dashgin Khudiyev (dashgin) wants to merge 1 commit into
Conversation
|
@microsoft-github-policy-service agree |
Test results for "tests 1"7 flaky52026 passed, 1250 skipped Merge workflow run. |
Test results for "MCP"6 failed 8686 passed, 1474 skipped Merge workflow run. |
|
The two failing MCP jobs look unrelated to this change: |
…r the response Chromium ends a fetch answered with 204 No Content in loadingFailed (net::ERR_ABORTED), so the request fails after its response arrived and response.finished() never resolved. Resolve it on requestfailed too. Fixes microsoft#42786
d41baef to
8aef15e
Compare
Fixes #42786
Chromium ends a
fetchanswered with204 No ContentinNetwork.loadingFailed(net::ERR_ABORTED), even though the page'sfetchresolves normally. The request emitsresponse, thenrequestfailed.Response.finished()only resolved onrequestFinished, so it never resolved. Playwright MCP's post-action wait awaitsfinished()for every fetch a click starts, so each such click ran into its 5 s cap.The server already treats this case as finished:
crNetworkManager._onLoadingFailedcallsresponse._requestFinished()when a response exists. The client didn't mirror that. It now resolvesresponse.finished()onrequestFailedtoo, when a response exists, which also matches the documented contract ("returns alwaysnull").Test.
should resolve finished() for a 204 responseinpage-event-network.spec.ts. On Chromium it times out without the change and passes with it.Checked locally (macOS):
page-event-network,page-event-request,page-network-*,page-request-*,network-post-data,browsercontext-network-event: Chromium 210 passed, Firefox 209, WebKit 204; skips are the existing per-browser skipsclick,core,form,type,wait,network,autowait: 38 passedThe Python client resolves
finishedthe same way (only in_on_request_finished), so it needs the same one-line change; I haven't checked Java or .NET.