Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: update puppeteer and puppeteer-core to 8.0.0 #1295

Merged
merged 1 commit into from Apr 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 11 additions & 0 deletions .changeset/violet-adults-brake.md
@@ -0,0 +1,11 @@
---
'@web/test-runner-chrome': minor
'@web/test-runner-puppeteer': minor
'@web/test-runner-visual-regression': minor
'@web/test-runner': minor
'@web/browser-logs': patch
'@web/dev-server': patch
'@web/dev-server-hmr': patch
---

Update puppeteer and puppeteer-core to 8.0.0
2 changes: 1 addition & 1 deletion packages/browser-logs/package.json
Expand Up @@ -50,6 +50,6 @@
},
"devDependencies": {
"@esm-bundle/chai": "^4.1.5",
"puppeteer": "^5.5.0"
"puppeteer": "^8.0.0"
}
}
2 changes: 1 addition & 1 deletion packages/dev-server-hmr/package.json
Expand Up @@ -43,6 +43,6 @@
},
"devDependencies": {
"lit-html": "^1.3.0",
"puppeteer": "^5.5.0"
"puppeteer": "^8.0.0"
}
}
12 changes: 6 additions & 6 deletions packages/dev-server-hmr/test/browser.test.ts
@@ -1,7 +1,7 @@
import { expect } from 'chai';
import { stubMethod } from 'hanbi';
import { createTestServer, expectIncludes } from '@web/dev-server-core/test-helpers';
import { Browser, launch as launchPuppeteer, Page } from 'puppeteer';
import { Browser, HTTPResponse, launch as launchPuppeteer, Page } from 'puppeteer';
import { posix as pathUtil } from 'path';

import { hmrPlugin } from '../src/index';
Expand Down Expand Up @@ -90,7 +90,7 @@ describe('browser tests', function () {

files['/foo.js'] = files['/foo.js'].replace('" a "', '" b "');
server.fileWatcher.emit('change', pathUtil.join(__dirname, '/foo.js'));
await page.waitForResponse(r => r.url().startsWith(`${host}/foo.js`));
await page.waitForResponse((r: HTTPResponse) => r.url().startsWith(`${host}/foo.js`));
expectIncludes(await page.content(), '<body> a b </body>');

for (const error of errors) {
Expand Down Expand Up @@ -122,7 +122,7 @@ describe('browser tests', function () {

files['/bar.js'] = 'export default " b ";';
server.fileWatcher.emit('change', pathUtil.join(__dirname, '/bar.js'));
await page.waitForResponse(r => r.url().startsWith(`${host}/bar.js`));
await page.waitForResponse((r: HTTPResponse) => r.url().startsWith(`${host}/bar.js`));
await new Promise(r => setTimeout(r, 1000));
expectIncludes(await page.content(), '<body> a b </body>');

Expand Down Expand Up @@ -158,9 +158,9 @@ describe('browser tests', function () {
files['/baz.js'] = 'export default " b ";';
server.fileWatcher.emit('change', pathUtil.join(__dirname, '/baz.js'));
await Promise.all([
page.waitForResponse(r => r.url().startsWith(`${host}/foo.js`)),
page.waitForResponse(r => r.url().startsWith(`${host}/bar.js`)),
page.waitForResponse(r => r.url().startsWith(`${host}/baz.js`)),
page.waitForResponse((r: HTTPResponse) => r.url().startsWith(`${host}/foo.js`)),
page.waitForResponse((r: HTTPResponse) => r.url().startsWith(`${host}/bar.js`)),
page.waitForResponse((r: HTTPResponse) => r.url().startsWith(`${host}/baz.js`)),
]);
await new Promise(r => setTimeout(r, 1000));
expectIncludes(await page.content(), '<body> foo a bar a foo b bar b </body>');
Expand Down
2 changes: 1 addition & 1 deletion packages/dev-server/package.json
Expand Up @@ -74,6 +74,6 @@
"devDependencies": {
"@types/command-line-usage": "^5.0.1",
"lit-html": "^1.3.0",
"puppeteer": "^5.5.0"
"puppeteer": "^8.0.0"
}
}
2 changes: 1 addition & 1 deletion packages/test-runner-chrome/package.json
Expand Up @@ -48,7 +48,7 @@
"@web/test-runner-core": "^0.10.8",
"@web/test-runner-coverage-v8": "^0.4.5",
"chrome-launcher": "^0.13.4",
"puppeteer-core": "^5.5.0"
"puppeteer-core": "^8.0.0"
},
"devDependencies": {
"@types/babel__code-frame": "^7.0.2",
Expand Down
14 changes: 7 additions & 7 deletions packages/test-runner-chrome/src/ChromeLauncher.ts
Expand Up @@ -2,7 +2,7 @@ import * as puppeteerCore from 'puppeteer-core';
import {
Browser,
Page,
LaunchOptions,
PuppeteerNodeLaunchOptions,
launch as puppeteerCoreLaunch,
BrowserContext,
} from 'puppeteer-core';
Expand Down Expand Up @@ -31,7 +31,7 @@ export class ChromeLauncher implements BrowserLauncher {
public name: string;
public type = 'puppeteer';
public concurrency?: number;
private launchOptions: LaunchOptions;
private launchOptions: PuppeteerNodeLaunchOptions;
private customPuppeteer?: typeof puppeteerCore;
private createBrowserContextFn: CreateBrowserContextFn;
private createPageFn: CreatePageFn;
Expand All @@ -48,7 +48,7 @@ export class ChromeLauncher implements BrowserLauncher {
private __startBrowserPromise?: Promise<{ browser: Browser; context: BrowserContext }>;

constructor(
launchOptions: LaunchOptions,
launchOptions: PuppeteerNodeLaunchOptions,
createBrowserContextFn: CreateBrowserContextFn,
createPageFn: CreatePageFn,
customPuppeteer?: typeof puppeteerCore,
Expand All @@ -63,7 +63,7 @@ export class ChromeLauncher implements BrowserLauncher {
if (!customPuppeteer) {
// without a custom puppeteer, we use the locally installed chrome
this.name = 'Chrome';
} else if (!this.launchOptions.product || this.launchOptions.product === 'chrome') {
} else if (!this.launchOptions?.product || this.launchOptions.product === 'chrome') {
// with puppeteer we use the a packaged chromium, puppeteer calls it chrome but we
// should call it chromium to avoid confusion
this.name = 'Chromium';
Expand All @@ -78,7 +78,7 @@ export class ChromeLauncher implements BrowserLauncher {
this.testFiles = testFiles;
}

launchBrowser(options: LaunchOptions = {}) {
launchBrowser(options: PuppeteerNodeLaunchOptions = {}) {
if (this.customPuppeteer) {
const mergedOptions = { ...this.launchOptions, ...options };
// launch using a custom puppeteer instance
Expand Down Expand Up @@ -114,7 +114,7 @@ export class ChromeLauncher implements BrowserLauncher {
});
}

async startBrowser(options: LaunchOptions = {}) {
async startBrowser(options: PuppeteerNodeLaunchOptions = {}) {
const browser = await this.launchBrowser(options);
const context = await this.createBrowserContextFn({ config: this.config!, browser });
return { browser, context };
Expand Down Expand Up @@ -183,7 +183,7 @@ export class ChromeLauncher implements BrowserLauncher {
return new ChromeLauncherPage(
this.config!,
this.testFiles!,
this.launchOptions.product ?? 'chromium',
this.launchOptions?.product ?? 'chromium',
await puppeteerPagePromise,
);
}
Expand Down
4 changes: 2 additions & 2 deletions packages/test-runner-chrome/src/index.ts
@@ -1,10 +1,10 @@
import * as puppeteerCore from 'puppeteer-core';
import { ChromeLauncher, CreateBrowserContextFn, CreatePageFn } from './ChromeLauncher';
import { LaunchOptions, devices } from 'puppeteer-core';
import { PuppeteerNodeLaunchOptions, devices } from 'puppeteer-core';

export interface ChromeLauncherArgs {
puppeteer?: typeof puppeteerCore;
launchOptions?: LaunchOptions;
launchOptions?: PuppeteerNodeLaunchOptions;
createBrowserContext?: CreateBrowserContextFn;
createPage?: CreatePageFn;
concurrency?: number;
Expand Down
5 changes: 3 additions & 2 deletions packages/test-runner-puppeteer/package.json
Expand Up @@ -47,9 +47,10 @@
"dependencies": {
"@web/test-runner-chrome": "^0.9.3",
"@web/test-runner-core": "^0.10.8",
"puppeteer": "^5.5.0"
"puppeteer": "^8.0.0"
},
"devDependencies": {
"@web/test-runner-mocha": "^0.7.2"
"@web/test-runner-mocha": "^0.7.2",
"puppeteer-core": "^8.0.0"
}
}
11 changes: 5 additions & 6 deletions packages/test-runner-puppeteer/src/puppeteerLauncher.ts
@@ -1,13 +1,12 @@
import * as puppeteer from 'puppeteer';
import * as puppeteerCore from 'puppeteer-core';
import { Browser, Page, PuppeteerNodeLaunchOptions } from 'puppeteer-core';
import { BrowserLauncher, TestRunnerCoreConfig } from '@web/test-runner-core';
import { chromeLauncher } from '@web/test-runner-chrome';

export interface PuppeteerLauncherConfig {
launchOptions?: puppeteer.LaunchOptions;
createPage?: (args: {
config: TestRunnerCoreConfig;
browser: puppeteer.Browser;
}) => Promise<puppeteer.Page>;
launchOptions?: PuppeteerNodeLaunchOptions;
createPage?: (args: { config: TestRunnerCoreConfig; browser: Browser }) => Promise<Page>;
concurrency?: number;
}

Expand All @@ -18,7 +17,7 @@ export function puppeteerLauncher({
}: PuppeteerLauncherConfig = {}): BrowserLauncher {
return chromeLauncher({
launchOptions,
puppeteer: (puppeteer as any).default as typeof puppeteer,
puppeteer: (puppeteer as any).default as typeof puppeteerCore,
createPage,
concurrency,
});
Expand Down
Expand Up @@ -66,7 +66,7 @@ export function visualRegressionPlugin(
);
}

const screenshot = await element.screenshot({ encoding: 'binary' });
const screenshot = (await element.screenshot({ encoding: 'binary' })) as Buffer;
return visualDiffCommand(mergedOptions, screenshot, session.browser.name, payload.name);
}

Expand Down
39 changes: 31 additions & 8 deletions yarn.lock
Expand Up @@ -4585,6 +4585,11 @@ devtools-protocol@0.0.818844:
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.818844.tgz#d1947278ec85b53e4c8ca598f607a28fa785ba9e"
integrity sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg==

devtools-protocol@0.0.854822:
version "0.0.854822"
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.854822.tgz#eac3a5260a6b3b4e729a09fdc0c77b0d322e777b"
integrity sha512-xd4D8kHQtB0KtWW0c9xBZD5LVtm9chkMOfs/3Yn01RhT/sFIsVtzTtypfKoFfWBaL+7xCYLxjOLkhwPXaX/Kcg==

devtools-protocol@^0.0.849057:
version "0.0.849057"
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.849057.tgz#5fa64e2c5ad4499a30aa9e8da82613afc4b1aa77"
Expand Down Expand Up @@ -9727,7 +9732,7 @@ pupa@^2.0.1:
dependencies:
escape-goat "^2.0.0"

puppeteer-core@^5.1.0, puppeteer-core@^5.5.0:
puppeteer-core@^5.1.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-5.5.0.tgz#dfb6266efe5a933cbf1a368d27025a6fd4f5a884"
integrity sha512-tlA+1n+ziW/Db03hVV+bAecDKse8ihFRXYiEypBe9IlLRvOCzYFG6qrCMBYK34HO/Q/Ecjc+tvkHRAfLVH+NgQ==
Expand All @@ -9745,19 +9750,37 @@ puppeteer-core@^5.1.0, puppeteer-core@^5.5.0:
unbzip2-stream "^1.3.3"
ws "^7.2.3"

puppeteer@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.5.0.tgz#331a7edd212ca06b4a556156435f58cbae08af00"
integrity sha512-OM8ZvTXAhfgFA7wBIIGlPQzvyEETzDjeRa4mZRCRHxYL+GNH5WAuYUQdja3rpWZvkX/JKqmuVgbsxDNsDFjMEg==
puppeteer-core@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-8.0.0.tgz#4f56cc24675a8e993b0610a284f064a84910f4ec"
integrity sha512-kRTiGh42+4eiw9tl489p//8Zpg3LWmz0K3mOpv0qj5PsCV7jE43SLIi0E50suLh8OghXsFhJFoE98vEmXUnDew==
dependencies:
debug "^4.1.0"
devtools-protocol "0.0.818844"
devtools-protocol "0.0.854822"
extract-zip "^2.0.0"
https-proxy-agent "^4.0.0"
https-proxy-agent "^5.0.0"
node-fetch "^2.6.1"
pkg-dir "^4.2.0"
progress "^2.0.1"
proxy-from-env "^1.0.0"
proxy-from-env "^1.1.0"
rimraf "^3.0.2"
tar-fs "^2.0.0"
unbzip2-stream "^1.3.3"
ws "^7.2.3"

puppeteer@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-8.0.0.tgz#a236669118aa795331c2d0ca19877159e7664705"
integrity sha512-D0RzSWlepeWkxPPdK3xhTcefj8rjah1791GE82Pdjsri49sy11ci/JQsAO8K2NRukqvwEtcI+ImP5F4ZiMvtIQ==
dependencies:
debug "^4.1.0"
devtools-protocol "0.0.854822"
extract-zip "^2.0.0"
https-proxy-agent "^5.0.0"
node-fetch "^2.6.1"
pkg-dir "^4.2.0"
progress "^2.0.1"
proxy-from-env "^1.1.0"
rimraf "^3.0.2"
tar-fs "^2.0.0"
unbzip2-stream "^1.3.3"
Expand Down