Skip to content

Commit

Permalink
feat(chromium): roll to Chromium 109.0.5412.0 (r1069273) (#9364)
Browse files Browse the repository at this point in the history
Closes #9233
  • Loading branch information
Lightning00Blade committed Dec 7, 2022
1 parent 1501ede commit 1875da6
Show file tree
Hide file tree
Showing 18 changed files with 50 additions and 71 deletions.
Expand Up @@ -10,7 +10,7 @@ Whether to run the browser in headless mode.

```typescript
interface BrowserLaunchArgumentOptions {
headless?: boolean | 'chrome';
headless?: boolean | 'new';
}
```

Expand Down
14 changes: 7 additions & 7 deletions docs/api/puppeteer.browserlaunchargumentoptions.md
Expand Up @@ -14,10 +14,10 @@ export interface BrowserLaunchArgumentOptions

## Properties

| Property | Modifiers | Type | Description | Default |
| --------------------------------------------------------------------------- | --------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| [args?](./puppeteer.browserlaunchargumentoptions.args.md) | | string\[\] | <i>(Optional)</i> Additional command line arguments to pass to the browser instance. | |
| [debuggingPort?](./puppeteer.browserlaunchargumentoptions.debuggingport.md) | | number | <i>(Optional)</i> | |
| [devtools?](./puppeteer.browserlaunchargumentoptions.devtools.md) | | boolean | <i>(Optional)</i> Whether to auto-open a DevTools panel for each tab. If this is set to <code>true</code>, then <code>headless</code> will be forced to <code>false</code>. | <code>false</code> |
| [headless?](./puppeteer.browserlaunchargumentoptions.headless.md) | | boolean \| 'chrome' | <i>(Optional)</i> Whether to run the browser in headless mode. | true |
| [userDataDir?](./puppeteer.browserlaunchargumentoptions.userdatadir.md) | | string | <i>(Optional)</i> Path to a user data directory. [see the Chromium docs](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/user_data_dir.md) for more info. | |
| Property | Modifiers | Type | Description | Default |
| --------------------------------------------------------------------------- | --------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| [args?](./puppeteer.browserlaunchargumentoptions.args.md) | | string\[\] | <i>(Optional)</i> Additional command line arguments to pass to the browser instance. | |
| [debuggingPort?](./puppeteer.browserlaunchargumentoptions.debuggingport.md) | | number | <i>(Optional)</i> | |
| [devtools?](./puppeteer.browserlaunchargumentoptions.devtools.md) | | boolean | <i>(Optional)</i> Whether to auto-open a DevTools panel for each tab. If this is set to <code>true</code>, then <code>headless</code> will be forced to <code>false</code>. | <code>false</code> |
| [headless?](./puppeteer.browserlaunchargumentoptions.headless.md) | | boolean \| 'new' | <i>(Optional)</i> Whether to run the browser in headless mode. | true |
| [userDataDir?](./puppeteer.browserlaunchargumentoptions.userdatadir.md) | | string | <i>(Optional)</i> Path to a user data directory. [see the Chromium docs](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/user_data_dir.md) for more info. | |
8 changes: 4 additions & 4 deletions docs/contributing.md
Expand Up @@ -244,9 +244,7 @@ ensure this, the main `test` command runs coverage during testing.

## Debugging Puppeteer

See
[Debugging Tips](https://github.com/puppeteer/puppeteer/blob/main/README.md#debugging-tips)
in the readme.
See [Debugging Tips](https://pptr.dev/guides/debugging).

# For Project Maintainers

Expand All @@ -262,6 +260,8 @@ The following steps are needed to update the Chromium version.
number.
3. Update `versions.js` with the new Chromium-to-Puppeteer version mapping and
update `lastMaintainedChromiumVersion` with the latest stable Chrome version.
You can find the corresponding version by going to [omahaproxy.appspot.com](https://omahaproxy.appspot.com/) then
searching in `Find Releases` for `r<revision>`.
4. Run `npm run check`. If it fails, update
`packages/puppeteer-core/package.json` and `packages/puppeteer/package.json`
with the expected `devtools-protocol` version.
Expand All @@ -272,7 +272,7 @@ The following steps are needed to update the Chromium version.
change) or work around the changes in Puppeteer (if it’s not desirable to
change Puppeteer’s observable behavior).
7. Commit and push your changes and open a pull request. The commit message must
contain the version in `Chromium <version> (<revision>)` format to ensure
contain the version in `Chromium <version> (r<revision>)` format to ensure
that [pptr.dev](https://pptr.dev/) can parse it correctly, e.g.
`'feat(chromium): roll to Chromium 90.0.4427.0 (r856583)'`.

Expand Down
20 changes: 10 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/puppeteer-core/package.json
Expand Up @@ -152,7 +152,7 @@
"dependencies": {
"cross-fetch": "3.1.5",
"debug": "4.3.4",
"devtools-protocol": "0.0.1056733",
"devtools-protocol": "0.0.1068969",
"extract-zip": "2.0.1",
"https-proxy-agent": "5.0.1",
"proxy-from-env": "1.1.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/puppeteer-core/src/node/ChromeLauncher.ts
Expand Up @@ -204,7 +204,7 @@ export class ChromeLauncher extends ProductLauncher {
}
if (headless) {
chromeArguments.push(
headless === 'chrome' ? '--headless=chrome' : '--headless',
headless === 'new' ? '--headless=new' : '--headless',
'--hide-scrollbars',
'--mute-audio'
);
Expand Down
2 changes: 1 addition & 1 deletion packages/puppeteer-core/src/node/LaunchOptions.ts
Expand Up @@ -27,7 +27,7 @@ export interface BrowserLaunchArgumentOptions {
* Whether to run the browser in headless mode.
* @defaultValue true
*/
headless?: boolean | 'chrome';
headless?: boolean | 'new';
/**
* Path to a user data directory.
* {@link https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/user_data_dir.md | see the Chromium docs}
Expand Down
2 changes: 1 addition & 1 deletion packages/puppeteer-core/src/revisions.ts
Expand Up @@ -18,6 +18,6 @@
* @internal
*/
export const PUPPETEER_REVISIONS = Object.freeze({
chromium: '1056772',
chromium: '1069273',
firefox: 'latest',
});
2 changes: 1 addition & 1 deletion packages/puppeteer/package.json
Expand Up @@ -123,7 +123,7 @@
"license": "Apache-2.0",
"dependencies": {
"cosmiconfig": "8.0.0",
"devtools-protocol": "0.0.1056733",
"devtools-protocol": "0.0.1068969",
"https-proxy-agent": "5.0.1",
"progress": "2.0.3",
"proxy-from-env": "1.1.0",
Expand Down
12 changes: 0 additions & 12 deletions test/TestExpectations.json
Expand Up @@ -2039,18 +2039,6 @@
"parameters": ["chrome"],
"expectations": ["PASS", "FAIL"]
},
{
"testIdPattern": "[navigation.spec] navigation Page.goto should fail when navigating to bad SSL",
"platforms": ["darwin"],
"parameters": ["chrome", "headful"],
"expectations": ["FAIL"]
},
{
"testIdPattern": "[navigation.spec] navigation Page.goto should fail when navigating to bad SSL after redirects",
"platforms": ["darwin"],
"parameters": ["chrome", "headful"],
"expectations": ["FAIL"]
},
{
"testIdPattern": "[click.spec] Page.click should click on checkbox input and toggle",
"platforms": ["linux"],
Expand Down
2 changes: 1 addition & 1 deletion test/TestSuites.json
Expand Up @@ -51,7 +51,7 @@
"HEADLESS": "false"
},
"chrome-headless": {
"HEADLESS": "chrome"
"HEADLESS": "new"
},
"webDriverBiDi": {
"PUPPETEER_PROTOCOL": "webDriverBiDi"
Expand Down
2 changes: 1 addition & 1 deletion test/src/browser.spec.ts
Expand Up @@ -27,7 +27,7 @@ describe('Browser specs', function () {
const version = await browser.version();
expect(version.length).toBeGreaterThan(0);
expect(version.startsWith('Headless')).toBe(
isHeadless && headless !== 'chrome'
isHeadless && headless !== 'new'
);
});
});
Expand Down
2 changes: 1 addition & 1 deletion test/src/fixtures.spec.ts
Expand Up @@ -24,7 +24,7 @@ import path from 'path';
describe('Fixtures', function () {
it('dumpio option should work with pipe option', async () => {
const {defaultBrowserOptions, puppeteerPath, headless} = getTestState();
if (headless === 'chrome') {
if (headless === 'new') {
// This test only works in the old headless mode.
return;
}
Expand Down
15 changes: 9 additions & 6 deletions test/src/mocha-utils.ts
Expand Up @@ -65,8 +65,11 @@ const product =

const alternativeInstall = process.env['PUPPETEER_ALT_INSTALL'] || false;

const headless = (process.env['HEADLESS'] || 'true').trim().toLowerCase();
const isHeadless = headless === 'true' || headless === 'chrome';
const headless = (process.env['HEADLESS'] || 'true').trim().toLowerCase() as
| 'true'
| 'false'
| 'new';
const isHeadless = headless === 'true' || headless === 'new';
const isFirefox = product === 'firefox';
const isChrome = product === 'chrome';
const protocol = process.env['PUPPETEER_PROTOCOL'] || 'cdp';
Expand All @@ -88,7 +91,7 @@ const defaultBrowserOptions = Object.assign(
{
handleSIGINT: true,
executablePath: process.env['BINARY'],
headless: headless === 'chrome' ? ('chrome' as const) : isHeadless,
headless: headless === 'new' ? ('new' as const) : isHeadless,
dumpio: !!process.env['DUMPIO'],
protocol: protocol as 'cdp' | 'webDriverBiDi',
},
Expand Down Expand Up @@ -143,7 +146,7 @@ interface PuppeteerTestState {
isFirefox: boolean;
isChrome: boolean;
isHeadless: boolean;
headless: string;
headless: 'true' | 'false' | 'new';
puppeteerPath: string;
}
const state: Partial<PuppeteerTestState> = {};
Expand Down Expand Up @@ -172,8 +175,8 @@ if (
}
-> mode: ${
isHeadless
? headless === 'chrome'
? '--headless=chrome'
? headless === 'new'
? '--headless=new'
: '--headless'
: 'headful'
}`
Expand Down
21 changes: 4 additions & 17 deletions test/src/navigation.spec.ts
Expand Up @@ -21,7 +21,6 @@ import {
setupTestBrowserHooks,
setupTestPageAndContextHooks,
} from './mocha-utils.js';
import os from 'os';
import {ServerResponse} from 'http';
import {HTTPRequest} from 'puppeteer-core/internal/common/HTTPRequest.js';
import {TimeoutError} from 'puppeteer';
Expand Down Expand Up @@ -153,20 +152,8 @@ describe('navigation', function () {
}
});

function getExpectedSSLCertMessage(): string {
const {headless} = getTestState();
/**
* If you are running this on pre-Catalina versions of macOS this will fail
* locally. Mac OSX Catalina outputs a different message than other
* platforms. See https://support.google.com/chrome/thread/18125056?hl=en
* for details. If you're running pre-Catalina Mac OSX this test will fail
* locally.
* In chrome-headless, the message is also different.
*/
return os.platform() === 'darwin' && headless !== 'chrome'
? 'net::ERR_CERT_INVALID'
: 'net::ERR_CERT_AUTHORITY_INVALID';
}
const EXPECTED_SSL_CERT_MESSAGE_REGEX =
/net::ERR_CERT_INVALID|net::ERR_CERT_AUTHORITY_INVALID/;

it('should fail when navigating to bad SSL', async () => {
const {page, httpsServer, isChrome} = getTestState();
Expand All @@ -189,7 +176,7 @@ describe('navigation', function () {
return (error = error_);
});
if (isChrome) {
expect(error.message).toContain(getExpectedSSLCertMessage());
expect(error.message).toMatch(EXPECTED_SSL_CERT_MESSAGE_REGEX);
} else {
expect(error.message).toContain('SSL_ERROR_UNKNOWN');
}
Expand All @@ -208,7 +195,7 @@ describe('navigation', function () {
return (error = error_);
});
if (isChrome) {
expect(error.message).toContain(getExpectedSSLCertMessage());
expect(error.message).toMatch(EXPECTED_SSL_CERT_MESSAGE_REGEX);
} else {
expect(error.message).toContain('SSL_ERROR_UNKNOWN');
}
Expand Down
2 changes: 1 addition & 1 deletion test/src/oopif.spec.ts
Expand Up @@ -230,7 +230,7 @@ describe('OOPIF', function () {
it('should provide access to elements', async () => {
const {server, isHeadless, headless} = getTestState();

if (!isHeadless || headless === 'chrome') {
if (!isHeadless || headless === 'new') {
// TODO: this test is partially blocked on crbug.com/1334119. Enable test once
// the upstream is fixed.
// TLDR: when we dispatch events ot the frame the compositor might
Expand Down
6 changes: 3 additions & 3 deletions tools/mochaRunner/src/main.ts
Expand Up @@ -180,7 +180,7 @@ async function main() {
fail = true;
recommendations.push(...recommendation);
} else {
console.log('Test run matches expecations');
console.log('Test run matches expectations');
continue;
}
} catch (err) {
Expand All @@ -197,7 +197,7 @@ async function main() {
});
if (toAdd.length) {
console.log(
'Add the following to TestExpecations.json to ignore the error:'
'Add the following to TestExpectations.json to ignore the error:'
);
prettyPrintJSON(
toAdd.map(item => {
Expand All @@ -210,7 +210,7 @@ async function main() {
});
if (toRemove.length) {
console.log(
'Remove the following from the TestExpecations.json to ignore the error:'
'Remove the following from the TestExpectations.json to ignore the error:'
);
prettyPrintJSON(
toRemove.map(item => {
Expand Down
5 changes: 3 additions & 2 deletions versions.js
Expand Up @@ -17,6 +17,7 @@
const versionsPerRelease = new Map([
// This is a mapping from Chromium version => Puppeteer version.
// In Chromium roll patches, use `NEXT` for the Puppeteer version.
['109.0.5412.0', 'NEXT'],
['108.0.5351.0', 'v19.2.0'],
['107.0.5296.0', 'v18.1.0'],
['106.0.5249.0', 'v17.1.0'],
Expand Down Expand Up @@ -52,8 +53,8 @@ const versionsPerRelease = new Map([
['73.0.3679.0', 'v1.12.2'],
]);

// The same major version as the current Chrome Stable per https://chromestatus.com/roadmap.
const lastMaintainedChromiumVersion = '106.0.5249.0';
// Should not be more then 2 major versions behind Chrome Stable (https://chromestatus.com/roadmap).
const lastMaintainedChromiumVersion = '107.0.5296.0';

if (!versionsPerRelease.has(lastMaintainedChromiumVersion)) {
throw new Error(
Expand Down

0 comments on commit 1875da6

Please sign in to comment.