diff --git a/.changeset/violet-adults-brake.md b/.changeset/violet-adults-brake.md new file mode 100644 index 000000000..7f29272f8 --- /dev/null +++ b/.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 diff --git a/packages/browser-logs/package.json b/packages/browser-logs/package.json index 52c3acda5..72684f719 100644 --- a/packages/browser-logs/package.json +++ b/packages/browser-logs/package.json @@ -50,6 +50,6 @@ }, "devDependencies": { "@esm-bundle/chai": "^4.1.5", - "puppeteer": "^5.5.0" + "puppeteer": "^8.0.0" } } diff --git a/packages/dev-server-hmr/package.json b/packages/dev-server-hmr/package.json index 4b28550ac..6f8c49ad2 100644 --- a/packages/dev-server-hmr/package.json +++ b/packages/dev-server-hmr/package.json @@ -43,6 +43,6 @@ }, "devDependencies": { "lit-html": "^1.3.0", - "puppeteer": "^5.5.0" + "puppeteer": "^8.0.0" } } diff --git a/packages/dev-server-hmr/test/browser.test.ts b/packages/dev-server-hmr/test/browser.test.ts index a472bdc1f..33b607633 100644 --- a/packages/dev-server-hmr/test/browser.test.ts +++ b/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'; @@ -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(), '
a b '); for (const error of errors) { @@ -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(), ' a b '); @@ -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(), ' foo a bar a foo b bar b '); diff --git a/packages/dev-server/package.json b/packages/dev-server/package.json index 1026b9140..705e14267 100644 --- a/packages/dev-server/package.json +++ b/packages/dev-server/package.json @@ -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" } } diff --git a/packages/test-runner-chrome/package.json b/packages/test-runner-chrome/package.json index 0b2264d5b..e781e5e60 100644 --- a/packages/test-runner-chrome/package.json +++ b/packages/test-runner-chrome/package.json @@ -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", diff --git a/packages/test-runner-chrome/src/ChromeLauncher.ts b/packages/test-runner-chrome/src/ChromeLauncher.ts index 26ea736b5..27a000339 100644 --- a/packages/test-runner-chrome/src/ChromeLauncher.ts +++ b/packages/test-runner-chrome/src/ChromeLauncher.ts @@ -2,7 +2,7 @@ import * as puppeteerCore from 'puppeteer-core'; import { Browser, Page, - LaunchOptions, + PuppeteerNodeLaunchOptions, launch as puppeteerCoreLaunch, BrowserContext, } from 'puppeteer-core'; @@ -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; @@ -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, @@ -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'; @@ -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 @@ -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 }; @@ -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, ); } diff --git a/packages/test-runner-chrome/src/index.ts b/packages/test-runner-chrome/src/index.ts index fa1c5ec76..5822f1393 100644 --- a/packages/test-runner-chrome/src/index.ts +++ b/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; diff --git a/packages/test-runner-puppeteer/package.json b/packages/test-runner-puppeteer/package.json index 2211be9dc..27fd6e52a 100644 --- a/packages/test-runner-puppeteer/package.json +++ b/packages/test-runner-puppeteer/package.json @@ -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" } } diff --git a/packages/test-runner-puppeteer/src/puppeteerLauncher.ts b/packages/test-runner-puppeteer/src/puppeteerLauncher.ts index 01299c192..7c2f00a22 100644 --- a/packages/test-runner-puppeteer/src/puppeteerLauncher.ts +++ b/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