From ee9f9e323900cb9f3be70a9d1c88c54770abd402 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Tue, 11 Jul 2023 11:34:18 -0700 Subject: [PATCH] test: emulate media should be isolated between CDP sessions (#24110) Failing test for #24109 --- .../library/chromium/connect-over-cdp.spec.ts | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/library/chromium/connect-over-cdp.spec.ts b/tests/library/chromium/connect-over-cdp.spec.ts index 45ecb4c2c4..0ba8ac673c 100644 --- a/tests/library/chromium/connect-over-cdp.spec.ts +++ b/tests/library/chromium/connect-over-cdp.spec.ts @@ -418,3 +418,37 @@ test('should be able to connect via localhost', async ({ browserType }, testInfo await browserServer.close(); } }); + +test('emulate media should be isolated between different contexts in different connections', async ({ browserType }, testInfo) => { + test.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/24109' }); + test.fixme(); + const port = 9339 + testInfo.workerIndex; + const browserServer = await browserType.launch({ + args: ['--remote-debugging-port=' + port] + }); + try { + async function isPrint(page) { + return await page.evaluate(() => matchMedia('print').matches); + } + + const browser1 = await browserType.connectOverCDP(`http://localhost:${port}`); + const context1 = await browser1.newContext(); + const page1 = await context1.newPage(); + await page1.emulateMedia({ media: 'print' }); + expect(await isPrint(page1)).toBe(true); + + const browser2 = await browserType.connectOverCDP(`http://localhost:${port}`); + const context2 = await browser2.newContext(); + const page2 = await context2.newPage(); + await page2.emulateMedia({ media: 'print' }); + expect(await isPrint(page2)).toBe(true); + // page1 should not be affected. + expect(await isPrint(page1)).toBe(true); + await Promise.all([ + browser1.close(), + browser2.close() + ]); + } finally { + await browserServer.close(); + } +});