Skip to content

Commit

Permalink
fix(puppeteer): support puppeteer@v22 (#2337)
Browse files Browse the repository at this point in the history
  • Loading branch information
B4nan committed Feb 15, 2024
1 parent cf3ae1c commit 3cc360a
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 29 deletions.
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -100,7 +100,7 @@
"playwright": "1.41.2",
"portastic": "^1.0.1",
"proxy": "^1.0.2",
"puppeteer": "21.10.0",
"puppeteer": "22.0.0",
"rimraf": "^5.0.0",
"tsx": "^4.4.0",
"turbo": "1.12.4",
Expand Down
6 changes: 5 additions & 1 deletion packages/browser-pool/src/puppeteer/puppeteer-controller.ts
@@ -1,5 +1,7 @@
import { tryCancel } from '@apify/timeout';
import type { Cookie } from '@crawlee/types';
// @ts-expect-error not exposed on type level
import { CdpBrowser } from 'puppeteer';
import type Puppeteer from 'puppeteer';
import type * as PuppeteerTypes from 'puppeteer';

Expand Down Expand Up @@ -61,7 +63,9 @@ export class PuppeteerController extends BrowserController<
}

try {
const context = await this.browser.createIncognitoBrowserContext(contextOptions);
const oldPuppeteerVersion = 'createIncognitoBrowserContext' in CdpBrowser.prototype;
const method = oldPuppeteerVersion ? 'createIncognitoBrowserContext' : 'createBrowserContext';
const context = await (this.browser as any)[method](contextOptions) as PuppeteerTypes.BrowserContext;
tryCancel();
const page = await context.newPage();
tryCancel();
Expand Down
16 changes: 10 additions & 6 deletions packages/browser-pool/src/puppeteer/puppeteer-plugin.ts
@@ -1,6 +1,8 @@
import type { Dictionary } from '@crawlee/types';
import type Puppeteer from 'puppeteer';
import type * as PuppeteerTypes from 'puppeteer';
// @ts-expect-error not exposed on type level
import { CdpBrowser } from 'puppeteer';

import type { PuppeteerNewPageOptions } from './puppeteer-controller';
import { PuppeteerController } from './puppeteer-controller';
Expand All @@ -22,6 +24,7 @@ export class PuppeteerPlugin extends BrowserPlugin<
protected async _launch(
launchContext: LaunchContext<typeof Puppeteer, PuppeteerTypes.PuppeteerLaunchOptions, PuppeteerTypes.Browser, PuppeteerNewPageOptions>,
): Promise<PuppeteerTypes.Browser> {
const oldPuppeteerVersion = 'createIncognitoBrowserContext' in CdpBrowser.prototype;
const {
launchOptions,
userDataDir,
Expand All @@ -44,8 +47,8 @@ export class PuppeteerPlugin extends BrowserPlugin<
}
}

if (launchOptions!.headless === true) {
launchOptions!.headless = 'new';
if (launchOptions!.headless === true && oldPuppeteerVersion) {
launchOptions!.headless = 'new' as any;
}

let browser: PuppeteerTypes.Browser;
Expand Down Expand Up @@ -98,11 +101,12 @@ export class PuppeteerPlugin extends BrowserPlugin<
}
});

const boundMethods = (['newPage', 'close', 'userAgent', 'createIncognitoBrowserContext', 'version', 'on', 'process'] as const)
const boundMethods = (['newPage', 'close', 'userAgent', 'createIncognitoBrowserContext', 'createBrowserContext', 'version', 'on', 'process'] as const)
.reduce((map, method) => {
map[method] = browser[method]?.bind(browser);
map[method] = browser[method as 'close']?.bind(browser);
return map;
}, {} as Dictionary);
const method = oldPuppeteerVersion ? 'createIncognitoBrowserContext' : 'createBrowserContext';

browser = new Proxy(browser, {
get: (target, property: keyof typeof browser, receiver) => {
Expand All @@ -114,9 +118,9 @@ export class PuppeteerPlugin extends BrowserPlugin<
const [anonymizedProxyUrl, close] = await anonymizeProxySugar(proxyUrl);

try {
const context = await browser.createIncognitoBrowserContext({
const context = await (browser as any)[method]({
proxyServer: anonymizedProxyUrl ?? proxyUrl,
});
}) as PuppeteerTypes.BrowserContext;

page = await context.newPage(...args);

Expand Down
42 changes: 21 additions & 21 deletions yarn.lock
Expand Up @@ -694,7 +694,7 @@ __metadata:
playwright: "npm:1.41.2"
portastic: "npm:^1.0.1"
proxy: "npm:^1.0.2"
puppeteer: "npm:21.10.0"
puppeteer: "npm:22.0.0"
rimraf: "npm:^5.0.0"
tsx: "npm:^4.4.0"
turbo: "npm:1.12.4"
Expand Down Expand Up @@ -1558,9 +1558,9 @@ __metadata:
languageName: node
linkType: hard

"@puppeteer/browsers@npm:1.9.1":
version: 1.9.1
resolution: "@puppeteer/browsers@npm:1.9.1"
"@puppeteer/browsers@npm:2.0.0":
version: 2.0.0
resolution: "@puppeteer/browsers@npm:2.0.0"
dependencies:
debug: "npm:4.3.4"
extract-zip: "npm:2.0.1"
Expand All @@ -1571,7 +1571,7 @@ __metadata:
yargs: "npm:17.7.2"
bin:
browsers: lib/cjs/main-cli.js
checksum: 10c0/8cbde5ec8060c2bdfdc0d7149711cf0cccc6648ed61d0b969cd305918108e7973ce8a7ff3f7533fcc3c49552afe1955755cd7a3924c1fdbea7330d48094b35ee
checksum: 10c0/72e17739f43ad4c56d8b68249736ff303c0ebdfd10d7426f7084740c221fd0584034ad340cc4709dfec13ad497f5e93a619a9a7ee84729d5497cb7096f01b94b
languageName: node
linkType: hard

Expand Down Expand Up @@ -3515,15 +3515,15 @@ __metadata:
languageName: node
linkType: hard

"chromium-bidi@npm:0.5.6":
version: 0.5.6
resolution: "chromium-bidi@npm:0.5.6"
"chromium-bidi@npm:0.5.8":
version: 0.5.8
resolution: "chromium-bidi@npm:0.5.8"
dependencies:
mitt: "npm:3.0.1"
urlpattern-polyfill: "npm:10.0.0"
peerDependencies:
devtools-protocol: "*"
checksum: 10c0/076fe42ed4eec6361a0c100bd17b91747ccc064cb89114431568c99daebf4b1f38c6466a4a2d17e7e08badc2a907f53245231f39344419a0f5c35c856f6ff717
checksum: 10c0/30a1827a6fd2e57fa1c07c7bc209c10b9e9748872b8403b901ca8ebdc7cc1ca879db223810567c5bf057c98fde5299631e58bfbc29cf7366ae9b38b215af3086
languageName: node
linkType: hard

Expand Down Expand Up @@ -9755,30 +9755,30 @@ __metadata:
languageName: node
linkType: hard

"puppeteer-core@npm:21.10.0":
version: 21.10.0
resolution: "puppeteer-core@npm:21.10.0"
"puppeteer-core@npm:22.0.0":
version: 22.0.0
resolution: "puppeteer-core@npm:22.0.0"
dependencies:
"@puppeteer/browsers": "npm:1.9.1"
chromium-bidi: "npm:0.5.6"
"@puppeteer/browsers": "npm:2.0.0"
chromium-bidi: "npm:0.5.8"
cross-fetch: "npm:4.0.0"
debug: "npm:4.3.4"
devtools-protocol: "npm:0.0.1232444"
ws: "npm:8.16.0"
checksum: 10c0/301e4430d22b4659b77bfffe02bf3ee0ddf0fa095a44e782f17b473f53b2fb015f2deed080b4acfa4b75a50b889fe2295df7ce82eebd161bfbeb9d749529eaad
checksum: 10c0/e6eee1a02e3c69a4f427f1a7924b363f41c00fe0faff02ac21459cd2ab306dad24284cb04635f46cdfebef4a8e335530816b361b6a6067cb288a07a2fae693cf
languageName: node
linkType: hard

"puppeteer@npm:21.10.0":
version: 21.10.0
resolution: "puppeteer@npm:21.10.0"
"puppeteer@npm:22.0.0":
version: 22.0.0
resolution: "puppeteer@npm:22.0.0"
dependencies:
"@puppeteer/browsers": "npm:1.9.1"
"@puppeteer/browsers": "npm:2.0.0"
cosmiconfig: "npm:9.0.0"
puppeteer-core: "npm:21.10.0"
puppeteer-core: "npm:22.0.0"
bin:
puppeteer: lib/esm/puppeteer/node/cli.js
checksum: 10c0/a12b0352f84d78e1c379b3efab4c3a98394a1e051c5675ee59c23ad4812d127ccf9b679ad379019d113ab2da8128c469b5dda41059527ec8a83793c232d28347
checksum: 10c0/8c2909db2c9c030f2a26f9179b5150e836941c676db57ec360d1389f981d2dcde2a66ecb242bffb375d3c7303827c4ee5b4148eda165ec834564cfadd0dcd963
languageName: node
linkType: hard

Expand Down

0 comments on commit 3cc360a

Please sign in to comment.