From c9230c699c2879ceb0b1ba125f99a8d91abe4389 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Fri, 3 Feb 2023 01:42:58 +0100 Subject: [PATCH] test: add test for cookies of wss requests (#20586) https://github.com/microsoft/playwright/issues/20370 --- tests/library/browsercontext-add-cookies.spec.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/library/browsercontext-add-cookies.spec.ts b/tests/library/browsercontext-add-cookies.spec.ts index b91b133276..185819c661 100644 --- a/tests/library/browsercontext-add-cookies.spec.ts +++ b/tests/library/browsercontext-add-cookies.spec.ts @@ -15,6 +15,7 @@ * limitations under the License. */ +import type { IncomingHttpHeaders } from 'http'; import type { Cookie } from '@playwright/test'; import { contextTest as it, playwrightTest, expect } from '../config/browserTest'; @@ -452,3 +453,17 @@ it('should allow unnamed cookies', async ({ page, context, server, browserName, else expect.soft(await page.evaluate('document.cookie')).toBe('unnamed-via-js'); }); + +it('should set cookies on WebSocket', async ({ contextFactory, httpsServer, browserName, platform }) => { + it.fixme(browserName === 'webkit' && platform === 'win32', 'WebKit on win32 does not send any cookies over the WebSocket connection'); + let resolveResceivedWebSocketHeaders = (headers: IncomingHttpHeaders) => { }; + const receivedWebSocketHeaders = new Promise(resolve => resolveResceivedWebSocketHeaders = resolve); + httpsServer.onceWebSocketConnection((ws, req) => resolveResceivedWebSocketHeaders(req.headers)); + const context = await contextFactory({ ignoreHTTPSErrors: true }); + const page = await context.newPage(); + await page.goto(httpsServer.EMPTY_PAGE); + await context.addCookies([{ domain: 'localhost', path: '/', name: 'foo', value: 'bar', secure: true }]); + await page.evaluate(port => new WebSocket(`wss://localhost:${port}/ws`), httpsServer.PORT); + const headers = await receivedWebSocketHeaders; + expect(headers.cookie).toBe('foo=bar'); +});