mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
installer: start downloading Chromium archives from our CDN (#3361)
This starts downloading newer Chromium archives from our CDN, but retains old endpoint for older Chromium revisions. This backwards compatibility might help later on to implement a browser bisecting tool. References #3259
This commit is contained in:
parent
ef76f5b922
commit
1b8128eb84
@ -42,30 +42,43 @@ const existsAsync = (path: string): Promise<boolean> => new Promise(resolve => f
|
||||
|
||||
export type OnProgressCallback = (downloadedBytes: number, totalBytes: number) => void;
|
||||
|
||||
const DEFAULT_DOWNLOAD_HOSTS: { [key: string]: string } = {
|
||||
chromium: 'https://storage.googleapis.com',
|
||||
firefox: 'https://playwright.azureedge.net',
|
||||
webkit: 'https://playwright.azureedge.net',
|
||||
};
|
||||
const CHROMIUM_MOVE_TO_AZURE_CDN_REVISION = 792639;
|
||||
|
||||
const ENV_DOWNLOAD_HOSTS: { [key: string]: string } = {
|
||||
default: 'PLAYWRIGHT_DOWNLOAD_HOST',
|
||||
chromium: 'PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST',
|
||||
firefox: 'PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST',
|
||||
webkit: 'PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST',
|
||||
};
|
||||
function getDownloadHost(browserName: BrowserName, revision: number): string {
|
||||
// Only old chromium revisions are downloaded from gbucket.
|
||||
const defaultDownloadHost = browserName === 'chromium' && revision < CHROMIUM_MOVE_TO_AZURE_CDN_REVISION ? 'https://storage.googleapis.com' : 'https://playwright.azureedge.net';
|
||||
|
||||
const envDownloadHost: { [key: string]: string } = {
|
||||
chromium: 'PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST',
|
||||
firefox: 'PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST',
|
||||
webkit: 'PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST',
|
||||
};
|
||||
return getFromENV(envDownloadHost[browserName]) ||
|
||||
getFromENV('PLAYWRIGHT_DOWNLOAD_HOST') ||
|
||||
defaultDownloadHost;
|
||||
}
|
||||
|
||||
function getDownloadUrl(browserName: BrowserName, revision: number, platform: BrowserPlatform): string | undefined {
|
||||
if (browserName === 'chromium') {
|
||||
return new Map<BrowserPlatform, string>([
|
||||
['ubuntu18.04', '%s/chromium-browser-snapshots/Linux_x64/%d/chrome-linux.zip'],
|
||||
['ubuntu20.04', '%s/chromium-browser-snapshots/Linux_x64/%d/chrome-linux.zip'],
|
||||
['mac10.13', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
|
||||
['mac10.14', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
|
||||
['mac10.15', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
|
||||
['win32', '%s/chromium-browser-snapshots/Win/%d/chrome-win.zip'],
|
||||
['win64', '%s/chromium-browser-snapshots/Win_x64/%d/chrome-win.zip'],
|
||||
]).get(platform);
|
||||
return revision < CHROMIUM_MOVE_TO_AZURE_CDN_REVISION ?
|
||||
new Map<BrowserPlatform, string>([
|
||||
['ubuntu18.04', '%s/chromium-browser-snapshots/Linux_x64/%d/chrome-linux.zip'],
|
||||
['ubuntu20.04', '%s/chromium-browser-snapshots/Linux_x64/%d/chrome-linux.zip'],
|
||||
['mac10.13', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
|
||||
['mac10.14', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
|
||||
['mac10.15', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
|
||||
['win32', '%s/chromium-browser-snapshots/Win/%d/chrome-win.zip'],
|
||||
['win64', '%s/chromium-browser-snapshots/Win_x64/%d/chrome-win.zip'],
|
||||
]).get(platform) :
|
||||
new Map<BrowserPlatform, string>([
|
||||
['ubuntu18.04', '%s/builds/chromium/%s/chromium-linux.zip'],
|
||||
['ubuntu20.04', '%s/builds/chromium/%s/chromium-linux.zip'],
|
||||
['mac10.13', '%s/builds/chromium/%s/chromium-mac.zip'],
|
||||
['mac10.14', '%s/builds/chromium/%s/chromium-mac.zip'],
|
||||
['mac10.15', '%s/builds/chromium/%s/chromium-mac.zip'],
|
||||
['win32', '%s/builds/chromium/%s/chromium-win32.zip'],
|
||||
['win64', '%s/builds/chromium/%s/chromium-win64.zip'],
|
||||
]).get(platform);
|
||||
}
|
||||
|
||||
if (browserName === 'firefox') {
|
||||
@ -116,8 +129,9 @@ function getDownloadUrl(browserName: BrowserName, revision: number, platform: Br
|
||||
}
|
||||
|
||||
function revisionURL(browser: BrowserDescriptor, platform = browserPaths.hostPlatform): string {
|
||||
const serverHost = getFromENV(ENV_DOWNLOAD_HOSTS[browser.name]) || getFromENV(ENV_DOWNLOAD_HOSTS.default) || DEFAULT_DOWNLOAD_HOSTS[browser.name];
|
||||
const urlTemplate = getDownloadUrl(browser.name, parseInt(browser.revision, 10), platform);
|
||||
const revision = parseInt(browser.revision, 10);
|
||||
const serverHost = getDownloadHost(browser.name, revision);
|
||||
const urlTemplate = getDownloadUrl(browser.name, revision, platform);
|
||||
assert(urlTemplate, `ERROR: Playwright does not support ${browser.name} on ${platform}`);
|
||||
return util.format(urlTemplate, serverHost, browser.revision);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user