From 512645463e78a13943490a0c6c791ca7a0f6671d Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Wed, 30 Oct 2024 15:12:05 +0100 Subject: [PATCH] test: rebase headless-shell/--headless=new/Edge tests (#33350) --- .../playwright-core/src/server/trace/viewer/traceViewer.ts | 1 + tests/config/proxy.ts | 7 +++++++ tests/library/browsertype-connect.spec.ts | 3 ++- tests/library/channels.spec.ts | 4 ++-- tests/library/chromium/oopif.spec.ts | 3 ++- tests/library/web-socket.spec.ts | 4 ++-- 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/playwright-core/src/server/trace/viewer/traceViewer.ts b/packages/playwright-core/src/server/trace/viewer/traceViewer.ts index a49148e061..b8dc3e5314 100644 --- a/packages/playwright-core/src/server/trace/viewer/traceViewer.ts +++ b/packages/playwright-core/src/server/trace/viewer/traceViewer.ts @@ -163,6 +163,7 @@ export async function openTraceViewerApp(url: string, browserName: string, optio ...options?.persistentContextOptions, useWebSocket: isUnderTest(), headless: !!options?.headless, + colorScheme: isUnderTest() ? 'light' : undefined, }, }); diff --git a/tests/config/proxy.ts b/tests/config/proxy.ts index 782dfc7814..0e71e47790 100644 --- a/tests/config/proxy.ts +++ b/tests/config/proxy.ts @@ -21,6 +21,11 @@ import net from 'net'; import type { SocksSocketClosedPayload, SocksSocketDataPayload, SocksSocketRequestedPayload } from '../../packages/playwright-core/src/common/socksProxy'; import { SocksProxy } from '../../packages/playwright-core/lib/common/socksProxy'; +// Certain browsers perform telemetry requests which we want to ignore. +const kConnectHostsToIgnore = new Set([ + 'www.bing.com:443', +]); + export class TestProxy { readonly PORT: number; readonly URL: string; @@ -63,6 +68,8 @@ export class TestProxy { this._prependHandler('connect', (req: IncomingMessage) => { if (!options?.allowConnectRequests) return; + if (kConnectHostsToIgnore.has(req.url)) + return; this.connectHosts.push(req.url); req.url = `127.0.0.1:${port}`; }); diff --git a/tests/library/browsertype-connect.spec.ts b/tests/library/browsertype-connect.spec.ts index a732985b5b..cd77a210d5 100644 --- a/tests/library/browsertype-connect.spec.ts +++ b/tests/library/browsertype-connect.spec.ts @@ -169,7 +169,8 @@ for (const kind of ['launchServer', 'run-server'] as const) { await browser.close(); }); - test('should ignore page.pause when headed', async ({ connect, startRemoteServer, browserType }) => { + test('should ignore page.pause when headed', async ({ connect, startRemoteServer, browserType, channel }) => { + test.skip(channel === 'chromium-headless-shell', 'Headless Shell does not support headed mode'); const headless = (browserType as any)._defaultLaunchOptions.headless; (browserType as any)._defaultLaunchOptions.headless = false; const remoteServer = await startRemoteServer(kind); diff --git a/tests/library/channels.spec.ts b/tests/library/channels.spec.ts index 03becec063..314a55a3e5 100644 --- a/tests/library/channels.spec.ts +++ b/tests/library/channels.spec.ts @@ -239,7 +239,7 @@ it('should not generate dispatchers for subresources w/o listeners', async ({ pa }); }); -it('should work with the domain module', async ({ browserType, server, browserName }) => { +it('should work with the domain module', async ({ browserType, server, browserName, channel }) => { const local = domain.create(); local.run(() => { }); let err; @@ -262,7 +262,7 @@ it('should work with the domain module', async ({ browserType, server, browserNa if (browserName === 'firefox') expect(message).toBe('CLOSE_ABNORMAL'); else - expect(message).toContain(': 400'); + expect(message).toContain(channel?.includes('msedge') ? '' : ': 400'); await browser.close(); diff --git a/tests/library/chromium/oopif.spec.ts b/tests/library/chromium/oopif.spec.ts index 3878aa5142..54cd3e1a46 100644 --- a/tests/library/chromium/oopif.spec.ts +++ b/tests/library/chromium/oopif.spec.ts @@ -232,7 +232,8 @@ it('should click a button when it overlays oopif', async function({ page, browse expect(await page.evaluate(() => (window as any)['BUTTON_CLICKED'])).toBe(true); }); -it('should report google.com frame with headed', async ({ browserType, server }) => { +it('should report google.com frame with headed', async ({ browserType, server, channel }) => { + it.skip(channel === 'chromium-headless-shell', 'Headless Shell does not support headed mode'); // @see https://github.com/GoogleChrome/puppeteer/issues/2548 // https://google.com is isolated by default in Chromium embedder. const browser = await browserType.launch({ headless: false }); diff --git a/tests/library/web-socket.spec.ts b/tests/library/web-socket.spec.ts index 179c332307..94b8ff1b2b 100644 --- a/tests/library/web-socket.spec.ts +++ b/tests/library/web-socket.spec.ts @@ -137,7 +137,7 @@ it('should emit binary frame events', async ({ page, server }) => { expect(sent[1][i]).toBe(i); }); -it('should emit error', async ({ page, server, browserName }) => { +it('should emit error', async ({ page, server, browserName, channel }) => { let callback; const result = new Promise(f => callback = f); page.on('websocket', ws => ws.on('socketerror', callback)); @@ -148,7 +148,7 @@ it('should emit error', async ({ page, server, browserName }) => { if (browserName === 'firefox') expect(message).toBe('CLOSE_ABNORMAL'); else - expect(message).toContain(': 400'); + expect(message).toContain(channel?.includes('msedge') ? '' : ': 400'); }); it('should not have stray error events', async ({ page, server }) => {