diff --git a/packages/playwright-core/src/server/chromium/crNetworkManager.ts b/packages/playwright-core/src/server/chromium/crNetworkManager.ts index f9a973699f206..93929394bf224 100644 --- a/packages/playwright-core/src/server/chromium/crNetworkManager.ts +++ b/packages/playwright-core/src/server/chromium/crNetworkManager.ts @@ -520,6 +520,11 @@ export class CRNetworkManager { request.request.setRawRequestHeaders(null); } this._deleteRequest(request); + // Chromium aborts 204 responses, other browsers finish them. + if (response?.status() === 204) { + (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();