diff --git a/packages/playwright-core/src/server/webkit/wkPage.ts b/packages/playwright-core/src/server/webkit/wkPage.ts index 55f3c41c4ea58..a53085d50458a 100644 --- a/packages/playwright-core/src/server/webkit/wkPage.ts +++ b/packages/playwright-core/src/server/webkit/wkPage.ts @@ -676,13 +676,10 @@ export class WKPage implements PageDelegate { } _calculateExtraHTTPHeaders(): types.HeadersArray { - const locale = this._browserContext._options.locale; - const headers = network.mergeHeaders([ + return network.mergeHeaders([ this._browserContext._options.extraHTTPHeaders, this._page.extraHTTPHeaders(), - locale ? network.singleHeader('Accept-Language', locale) : undefined, ]); - return headers; } async updateEmulateMedia(): Promise { diff --git a/tests/library/browsercontext-locale.spec.ts b/tests/library/browsercontext-locale.spec.ts index 6272f71ed4c5e..74945bf7f1d6a 100644 --- a/tests/library/browsercontext-locale.spec.ts +++ b/tests/library/browsercontext-locale.spec.ts @@ -192,8 +192,7 @@ it('should affect Intl.DateTimeFormat().resolvedOptions().locale', async ({ brow it('should send user Accept-Language header', { annotation: [{ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/23732' }], -}, async ({ browser, server, browserName }) => { - it.fixme(browserName === 'webkit', 'Implementation set Accept-Language header as extra HTTP header'); +}, async ({ browser, server }) => { const context = await browser.newContext({ locale: 'en-GB' }); const page = await context.newPage(); await page.goto(server.EMPTY_PAGE); @@ -224,3 +223,17 @@ it('should send user Accept-Language header', { } await context.close(); }); + +it('should send Accept-Language header on WebSocket handshake', { + annotation: [{ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/23732' }], +}, async ({ browser, server, browserName }) => { + it.fixme(browserName === 'firefox', 'Firefox does not send Accept-Language on WebSocket handshake'); + const context = await browser.newContext({ locale: 'en-GB' }); + const page = await context.newPage(); + await page.goto(server.EMPTY_PAGE); + const reqPromise = server.waitForWebSocketConnectionRequest(); + await page.evaluate(port => { new WebSocket(`ws://localhost:${port}/ws`); }, server.PORT); + const req = await reqPromise; + expect(req.headers['accept-language']).toContain('en-GB'); + await context.close(); +});