feat: support chromium-with-symbols channel (#7135)

References #7130
This commit is contained in:
Andrey Lushnikov 2021-06-15 17:57:31 -07:00 committed by GitHub
parent 38e27c9c6c
commit ec68b31dc4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 48 additions and 14 deletions

View file

@ -6,6 +6,11 @@
"revision": "888113",
"installByDefault": true
},
{
"name": "chromium-with-symbols",
"revision": "888113",
"installByDefault": false
},
{
"name": "firefox",
"revision": "1271",

View file

@ -27,7 +27,7 @@ import { ConnectionTransport, ProtocolRequest, WebSocketTransport } from '../tra
import { CRDevTools } from './crDevTools';
import { BrowserOptions, BrowserProcess, PlaywrightOptions } from '../browser';
import * as types from '../types';
import { debugMode, headersArrayToObject, removeFolders } from '../../utils/utils';
import { assert, debugMode, headersArrayToObject, removeFolders } from '../../utils/utils';
import { RecentLogsCollector } from '../../utils/debugLogger';
import { ProgressController } from '../progress';
import { TimeoutSettings } from '../../utils/timeoutSettings';
@ -49,8 +49,16 @@ export class Chromium extends BrowserType {
}
executablePath(channel?: string): string {
if (channel)
return findChromiumChannel(channel);
if (channel) {
let executablePath = undefined;
if ((channel as any) === 'chromium-with-symbols')
executablePath = this._registry.executablePath('chromium-with-symbols');
else
executablePath = findChromiumChannel(channel);
assert(executablePath, `unsupported chromium channel "${channel}"`);
assert(fs.existsSync(executablePath), `"${channel}" channel is not installed. Try running 'npx playwright install ${channel}'`);
return executablePath;
}
return super.executablePath(channel);
}

View file

@ -38,13 +38,8 @@ export async function validateHostRequirements(registry: registry.Registry, brow
}
const DL_OPEN_LIBRARIES = {
'chromium': [],
'webkit': ['libGLESv2.so.2', 'libx264.so'],
'webkit-technology-preview': ['libGLESv2.so.2', 'libx264.so'],
'firefox': [],
'firefox-beta': [],
'clank': [],
'ffmpeg': [],
};
function isSupportedWindowsVersion(): boolean {
@ -245,7 +240,7 @@ async function missingFileDependencies(filePath: string, extraLDPaths: string[])
}
async function missingDLOPENLibraries(browserName: registry.BrowserName): Promise<string[]> {
const libraries = DL_OPEN_LIBRARIES[browserName];
const libraries: string[] = (DL_OPEN_LIBRARIES as any)[browserName] || [];
if (!libraries.length)
return [];
// NOTE: Using full-qualified path to `ldconfig` since `/sbin` is not part of the

View file

@ -22,8 +22,8 @@ import * as util from 'util';
import { getUbuntuVersionSync } from './ubuntuVersion';
import { assert, getFromENV } from './utils';
export type BrowserName = 'chromium'|'webkit'|'firefox'|'firefox-beta'|'ffmpeg'|'webkit-technology-preview';
export const allBrowserNames: Set<BrowserName> = new Set(['chromium', 'webkit', 'firefox', 'ffmpeg', 'webkit-technology-preview', 'firefox-beta']);
export type BrowserName = 'chromium'|'chromium-with-symbols'|'webkit'|'firefox'|'firefox-beta'|'ffmpeg'|'webkit-technology-preview';
export const allBrowserNames: Set<BrowserName> = new Set(['chromium', 'chromium-with-symbols', 'webkit', 'firefox', 'ffmpeg', 'webkit-technology-preview', 'firefox-beta']);
const PACKAGE_PATH = path.join(__dirname, '..', '..');
@ -47,6 +47,17 @@ const EXECUTABLE_PATHS = {
'win32': ['chrome-win', 'chrome.exe'],
'win64': ['chrome-win', 'chrome.exe'],
},
'chromium-with-symbols': {
'ubuntu18.04': ['chrome-linux', 'chrome'],
'ubuntu20.04': ['chrome-linux', 'chrome'],
'mac10.13': ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'],
'mac10.14': ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'],
'mac10.15': ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'],
'mac11': ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'],
'mac11-arm64': ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'],
'win32': ['chrome-win', 'chrome.exe'],
'win64': ['chrome-win', 'chrome.exe'],
},
'firefox': {
'ubuntu18.04': ['firefox', 'firefox'],
'ubuntu20.04': ['firefox', 'firefox'],
@ -116,6 +127,17 @@ const DOWNLOAD_URLS = {
'win32': '%s/builds/chromium/%s/chromium-win32.zip',
'win64': '%s/builds/chromium/%s/chromium-win64.zip',
},
'chromium-with-symbols': {
'ubuntu18.04': '%s/builds/chromium/%s/chromium-with-symbols-linux.zip',
'ubuntu20.04': '%s/builds/chromium/%s/chromium-with-symbols-linux.zip',
'mac10.13': '%s/builds/chromium/%s/chromium-with-symbols-mac.zip',
'mac10.14': '%s/builds/chromium/%s/chromium-with-symbols-mac.zip',
'mac10.15': '%s/builds/chromium/%s/chromium-with-symbols-mac.zip',
'mac11': '%s/builds/chromium/%s/chromium-with-symbols-mac.zip',
'mac11-arm64': '%s/builds/chromium/%s/chromium-with-symbols-mac-arm64.zip',
'win32': '%s/builds/chromium/%s/chromium-with-symbols-win32.zip',
'win64': '%s/builds/chromium/%s/chromium-with-symbols-win64.zip',
},
'firefox': {
'ubuntu18.04': '%s/builds/firefox/%s/firefox-ubuntu-18.04.zip',
'ubuntu20.04': '%s/builds/firefox/%s/firefox-ubuntu-20.04.zip',
@ -301,6 +323,7 @@ export class Registry {
const browserDirectory = this.browserDirectory(browserName);
switch (browserName) {
case 'chromium':
case 'chromium-with-symbols':
return [path.join(browserDirectory, 'chrome-linux')];
case 'webkit':
case 'webkit-technology-preview':
@ -322,11 +345,11 @@ export class Registry {
windowsExeAndDllDirectories(browserName: BrowserName): string[] {
const browserDirectory = this.browserDirectory(browserName);
if (browserName === 'chromium')
if (browserName === 'chromium' || browserName === 'chromium-with-symbols')
return [path.join(browserDirectory, 'chrome-win')];
if (browserName === 'firefox')
if (browserName === 'firefox' || browserName === 'firefox-beta')
return [path.join(browserDirectory, 'firefox')];
if (browserName === 'webkit')
if (browserName === 'webkit' || browserName === 'webkit-technology-preview')
return [browserDirectory];
return [];
}
@ -342,6 +365,7 @@ export class Registry {
assert(browser, `ERROR: Playwright does not support ${browserName}`);
const envDownloadHost: { [key: string]: string } = {
'chromium': 'PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST',
'chromium-with-symbols': 'PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST',
'firefox': 'PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST',
'firefox-beta': 'PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST',
'webkit': 'PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST',

View file

@ -66,6 +66,8 @@ Example:
// 2. Update browsers.json.
console.log('\nUpdating browsers.json...');
descriptor.revision = String(revision);
if (browserName === 'chromium')
browsersJSON.browsers.find(b => b.name === 'chromium-with-symbols').revision = String(revision);
fs.writeFileSync(path.join(ROOT_PATH, 'browsers.json'), JSON.stringify(browsersJSON, null, 2) + '\n');
if (descriptor.installByDefault) {