From 1913904d304c244f1ffd0ad03908cace02a0da17 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Mon, 21 Sep 2026 11:17:22 -0700 Subject: [PATCH 1/2] fix(chromium): report 204 subresource responses as finished Fixes https://github.com/microsoft/playwright/issues/42786 --- .../src/server/chromium/crNetworkManager.ts | 6 ++++++ tests/page/page-event-request.spec.ts | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/playwright-core/src/server/chromium/crNetworkManager.ts b/packages/playwright-core/src/server/chromium/crNetworkManager.ts index f9a973699f206..33011ceacb768 100644 --- a/packages/playwright-core/src/server/chromium/crNetworkManager.ts +++ b/packages/playwright-core/src/server/chromium/crNetworkManager.ts @@ -520,6 +520,12 @@ export class CRNetworkManager { request.request.setRawRequestHeaders(null); } this._deleteRequest(request); + // Chromium aborts 204 subresource responses with net::ERR_ABORTED, while other browsers + // report them as finished. Navigation 204 responses are aborted in all browsers. + if (response?.status() === 204 && !request.request.isNavigationRequest()) { + (this._page?.frameManager || this._serviceWorker)!.reportRequestFinished(request.request, response); + return; + } request.request._setFailureText(event.errorText || event.blockedReason || ''); (this._page?.frameManager || this._serviceWorker)!.requestFailed(request.request, !!event.canceled); } diff --git a/tests/page/page-event-request.spec.ts b/tests/page/page-event-request.spec.ts index 284c3ebfa4ce1..a4f61a4e82130 100644 --- a/tests/page/page-event-request.spec.ts +++ b/tests/page/page-event-request.spec.ts @@ -260,9 +260,11 @@ it('main resource xhr should have type xhr', async ({ page, server }) => { }); it('should finish 204 request', { - annotation: { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/32752' } -}, async ({ page, server, browserName }) => { - it.fixme(browserName === 'chromium'); + annotation: [ + { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/32752' }, + { type: 'issue', description: 'https://github.com/microsoft/playwright/issues/42786' }, + ], +}, async ({ page, server }) => { server.setRoute('/204', (req, res) => { res.writeHead(204, { 'Content-type': 'text/plain' }); res.end(); From 6e7c2353a8669bc50cf54c6e99090a74936f710f Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Mon, 21 Sep 2026 11:38:15 -0700 Subject: [PATCH 2/2] chore: drop navigation check, shorten comment --- .../playwright-core/src/server/chromium/crNetworkManager.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/playwright-core/src/server/chromium/crNetworkManager.ts b/packages/playwright-core/src/server/chromium/crNetworkManager.ts index 33011ceacb768..93929394bf224 100644 --- a/packages/playwright-core/src/server/chromium/crNetworkManager.ts +++ b/packages/playwright-core/src/server/chromium/crNetworkManager.ts @@ -520,9 +520,8 @@ export class CRNetworkManager { request.request.setRawRequestHeaders(null); } this._deleteRequest(request); - // Chromium aborts 204 subresource responses with net::ERR_ABORTED, while other browsers - // report them as finished. Navigation 204 responses are aborted in all browsers. - if (response?.status() === 204 && !request.request.isNavigationRequest()) { + // Chromium aborts 204 responses, other browsers finish them. + if (response?.status() === 204) { (this._page?.frameManager || this._serviceWorker)!.reportRequestFinished(request.request, response); return; }