From edac84d072a455008c90ce73703d395acdf7f42a Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Fri, 18 Feb 2022 07:54:33 -0800 Subject: [PATCH] feat(remote): send browser/channel/headless in a header (#12205) --- .../playwright-core/src/remote/playwrightServer.ts | 4 ++-- packages/playwright-test/src/index.ts | 11 +++++++++-- tests/config/default.playwright.config.ts | 7 ++++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/playwright-core/src/remote/playwrightServer.ts b/packages/playwright-core/src/remote/playwrightServer.ts index f9a31dbbb0..cfb763625c 100644 --- a/packages/playwright-core/src/remote/playwrightServer.ts +++ b/packages/playwright-core/src/remote/playwrightServer.ts @@ -141,9 +141,9 @@ class Connection { if (browser) return await this._initPreLaunchedBrowserMode(scope, browser); const url = new URL('http://localhost' + (request.url || '')); - const browserHeader = request.headers['X-Playwright-Browser']; + const browserHeader = request.headers['x-playwright-browser']; const browserAlias = url.searchParams.get('browser') || (Array.isArray(browserHeader) ? browserHeader[0] : browserHeader); - const proxyHeader = request.headers['X-Playwright-Proxy']; + const proxyHeader = request.headers['x-playwright-proxy']; const proxyValue = url.searchParams.get('proxy') || (Array.isArray(proxyHeader) ? proxyHeader[0] : proxyHeader); if (!browserAlias) return await this._initPlaywrightConnectMode(scope, enableSocksProxy && proxyValue === '*'); diff --git a/packages/playwright-test/src/index.ts b/packages/playwright-test/src/index.ts index d26f61b52a..e2558eb2ec 100644 --- a/packages/playwright-test/src/index.ts +++ b/packages/playwright-test/src/index.ts @@ -106,11 +106,18 @@ export const test = _baseTest.extend({ (browserType as any)._defaultLaunchOptions = undefined; }, { scope: 'worker', auto: true }], - browser: [async ({ playwright, browserName, connectOptions }, use) => { + browser: [async ({ playwright, browserName, channel, headless, connectOptions }, use) => { if (!['chromium', 'firefox', 'webkit'].includes(browserName)) throw new Error(`Unexpected browserName "${browserName}", must be one of "chromium", "firefox" or "webkit"`); if (connectOptions) { - const browser = await playwright[browserName].connect(connectOptions); + const browser = await playwright[browserName].connect({ + wsEndpoint: connectOptions.wsEndpoint, + headers: { + 'x-playwright-browser': channel || browserName, + 'x-playwright-headless': headless ? '1' : '0', + ...connectOptions.headers, + } + }); await use(browser); await browser.close(); return; diff --git a/tests/config/default.playwright.config.ts b/tests/config/default.playwright.config.ts index 8cd90d9bcf..c9bdafbea2 100644 --- a/tests/config/default.playwright.config.ts +++ b/tests/config/default.playwright.config.ts @@ -59,6 +59,7 @@ const config: Config