diff --git a/src/webkit/wkPage.ts b/src/webkit/wkPage.ts index 88146d29c2..8e3b5aac15 100644 --- a/src/webkit/wkPage.ts +++ b/src/webkit/wkPage.ts @@ -764,6 +764,14 @@ export class WKPage implements PageDelegate { return; const response = request.createResponse(event.response); this._page._frameManager.requestReceivedResponse(response); + + if (response.status() === 204) { + this._onLoadingFailed({ + requestId: event.requestId, + errorText: 'Aborted: 204 No Content', + timestamp: event.timestamp + }); + } } _onLoadingFinished(event: Protocol.Network.loadingFinishedPayload) { diff --git a/test/navigation.spec.js b/test/navigation.spec.js index b6d00e0bbb..188300f3cf 100644 --- a/test/navigation.spec.js +++ b/test/navigation.spec.js @@ -121,7 +121,7 @@ module.exports.describe = function({testRunner, expect, playwright, MAC, WIN, FF }); await page.goto(server.PREFIX + '/frames/one-frame.html'); }); - it.fail(WEBKIT)('should fail when server returns 204', async({page, server}) => { + it('should fail when server returns 204', async({page, server}) => { // Webkit just loads an empty page. server.setRoute('/empty.html', (req, res) => { res.statusCode = 204; @@ -132,6 +132,8 @@ module.exports.describe = function({testRunner, expect, playwright, MAC, WIN, FF expect(error).not.toBe(null); if (CHROMIUM) expect(error.message).toContain('net::ERR_ABORTED'); + else if (WEBKIT) + expect(error.message).toContain('Aborted: 204 No Content'); else expect(error.message).toContain('NS_BINDING_ABORTED'); });