From d2a785456983a0223384dcd4a8c8391eefcf6982 Mon Sep 17 00:00:00 2001 From: Dmitriy Dudkevich Date: Fri, 9 Dec 2022 19:45:27 +0300 Subject: [PATCH] feat: ability to send headers when connect to browser using puppeteer (#9354) * chore: bump puppeteer-core from 19.3.0 to 19.4.0 * feat: ability to send headers when connect to browser using puppeteer --- packages/devtools/package.json | 2 +- packages/wdio-devtools-service/package.json | 2 +- packages/webdriverio/package.json | 2 +- .../src/commands/browser/getPuppeteer.ts | 7 +++++-- .../browser/__snapshots__/getPuppeteer.test.ts.snap | 9 +++++++++ .../tests/commands/browser/getPuppeteer.test.ts | 13 +++++++++++-- website/docs/Configuration.md | 2 +- 7 files changed, 29 insertions(+), 8 deletions(-) diff --git a/packages/devtools/package.json b/packages/devtools/package.json index ffff14da38f..812f14fc481 100644 --- a/packages/devtools/package.json +++ b/packages/devtools/package.json @@ -43,7 +43,7 @@ "chrome-launcher": "^0.15.0", "edge-paths": "^2.1.0", "import-meta-resolve": "^2.1.0", - "puppeteer-core": "19.3.0", + "puppeteer-core": "19.4.0", "query-selector-shadow-dom": "^1.0.0", "ua-parser-js": "^1.0.1", "uuid": "^9.0.0", diff --git a/packages/wdio-devtools-service/package.json b/packages/wdio-devtools-service/package.json index 8f7c00830f8..ed0dea91c83 100644 --- a/packages/wdio-devtools-service/package.json +++ b/packages/wdio-devtools-service/package.json @@ -44,7 +44,7 @@ "istanbul-lib-report": "^3.0.0", "istanbul-reports": "^3.1.4", "lighthouse": "8.6.0", - "puppeteer-core": "19.3.0", + "puppeteer-core": "19.4.0", "speedline": "^1.4.3", "stable": "^0.1.8", "webdriverio": "8.0.2", diff --git a/packages/webdriverio/package.json b/packages/webdriverio/package.json index 9691570e84a..7971e5f5fd3 100644 --- a/packages/webdriverio/package.json +++ b/packages/webdriverio/package.json @@ -85,7 +85,7 @@ "lodash.clonedeep": "^4.5.0", "lodash.zip": "^4.2.0", "minimatch": "^5.0.0", - "puppeteer-core": "19.3.0", + "puppeteer-core": "19.4.0", "query-selector-shadow-dom": "^1.0.0", "resq": "^1.9.1", "rgb2hex": "0.2.5", diff --git a/packages/webdriverio/src/commands/browser/getPuppeteer.ts b/packages/webdriverio/src/commands/browser/getPuppeteer.ts index 37c3fa213e2..1e9dafecafe 100644 --- a/packages/webdriverio/src/commands/browser/getPuppeteer.ts +++ b/packages/webdriverio/src/commands/browser/getPuppeteer.ts @@ -52,6 +52,7 @@ export default async function getPuppeteer (this: WebdriverIO.Browser) { return this.puppeteer } + const { headers } = this.options const caps = (this.capabilities as Capabilities.W3CCapabilities).alwaysMatch || this.capabilities as Capabilities.DesiredCapabilities /** * attach to a Selenium 4 CDP Session if it's returned in the capabilities @@ -60,7 +61,8 @@ export default async function getPuppeteer (this: WebdriverIO.Browser) { if (cdpEndpoint) { this.puppeteer = await puppeteer.connect({ browserWSEndpoint: cdpEndpoint, - defaultViewport: null + defaultViewport: null, + headers }) as any as PuppeteerBrowser return this.puppeteer } @@ -73,7 +75,8 @@ export default async function getPuppeteer (this: WebdriverIO.Browser) { const { hostname, port } = this.options this.puppeteer = await puppeteer.connect({ browserWSEndpoint: `ws://${hostname}:${port}/devtools/${this.sessionId}`, - defaultViewport: null + defaultViewport: null, + headers }) as any as PuppeteerBrowser return this.puppeteer } diff --git a/packages/webdriverio/tests/commands/browser/__snapshots__/getPuppeteer.test.ts.snap b/packages/webdriverio/tests/commands/browser/__snapshots__/getPuppeteer.test.ts.snap index 634eac2a883..b1f84639584 100644 --- a/packages/webdriverio/tests/commands/browser/__snapshots__/getPuppeteer.test.ts.snap +++ b/packages/webdriverio/tests/commands/browser/__snapshots__/getPuppeteer.test.ts.snap @@ -6,6 +6,9 @@ exports[`attach Puppeteer > should pass for Aerokube Moon CDP 1`] = ` { "browserWSEndpoint": "ws://my.grid:4444/devtools/foobar-123", "defaultViewport": null, + "headers": { + "Authorization": "OAuth token", + }, }, ], ] @@ -17,6 +20,9 @@ exports[`attach Puppeteer > should pass for Aerokube Selenoid CDP 1`] = ` { "browserWSEndpoint": "ws://my.grid:4444/devtools/foobar-123", "defaultViewport": null, + "headers": { + "Authorization": "OAuth token", + }, }, ], ] @@ -83,6 +89,9 @@ exports[`attach Puppeteer > should pass for Selenium CDP 1`] = ` { "browserWSEndpoint": "http://my.grid:1234/session/mytestsession/se/cdp", "defaultViewport": null, + "headers": { + "Authorization": "OAuth token", + }, }, ], ] diff --git a/packages/webdriverio/tests/commands/browser/getPuppeteer.test.ts b/packages/webdriverio/tests/commands/browser/getPuppeteer.test.ts index 7c7bbcfaa31..347285edf96 100644 --- a/packages/webdriverio/tests/commands/browser/getPuppeteer.test.ts +++ b/packages/webdriverio/tests/commands/browser/getPuppeteer.test.ts @@ -23,6 +23,9 @@ describe('attach Puppeteer', () => { baseUrl: 'http://foobar.com', capabilities: { browserName: 'foobar' + }, + headers: { + Authorization: 'OAuth token' } }) }) @@ -198,7 +201,10 @@ describe('attach Puppeteer', () => { options: { hostname: 'my.grid', port: 4444, - path: '/wd/hub' + path: '/wd/hub', + headers: { + Authorization: 'OAuth token' + } } as any }) expect(typeof pptr).toBe('object') @@ -221,7 +227,10 @@ describe('attach Puppeteer', () => { options: { hostname: 'my.grid', port: 4444, - path: '/wd/hub' + path: '/wd/hub', + headers: { + Authorization: 'OAuth token' + } } as any }) expect(typeof pptr).toBe('object') diff --git a/website/docs/Configuration.md b/website/docs/Configuration.md index b821d07263f..55cd3a2c5be 100644 --- a/website/docs/Configuration.md +++ b/website/docs/Configuration.md @@ -135,7 +135,7 @@ Default: ### headers -Specify custom `headers` to pass into every WebDriver request. +Specify custom `headers` to pass into every WebDriver request and when connect to browser through Puppeteer using CDP protocol. :::caution