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,22 +42,26 @@ const existsAsync = (path: string): Promise<boolean> => new Promise(resolve => f
|
|||||||
|
|
||||||
export type OnProgressCallback = (downloadedBytes: number, totalBytes: number) => void;
|
export type OnProgressCallback = (downloadedBytes: number, totalBytes: number) => void;
|
||||||
|
|
||||||
const DEFAULT_DOWNLOAD_HOSTS: { [key: string]: string } = {
|
const CHROMIUM_MOVE_TO_AZURE_CDN_REVISION = 792639;
|
||||||
chromium: 'https://storage.googleapis.com',
|
|
||||||
firefox: 'https://playwright.azureedge.net',
|
|
||||||
webkit: 'https://playwright.azureedge.net',
|
|
||||||
};
|
|
||||||
|
|
||||||
const ENV_DOWNLOAD_HOSTS: { [key: string]: string } = {
|
function getDownloadHost(browserName: BrowserName, revision: number): string {
|
||||||
default: 'PLAYWRIGHT_DOWNLOAD_HOST',
|
// 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',
|
chromium: 'PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST',
|
||||||
firefox: 'PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST',
|
firefox: 'PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST',
|
||||||
webkit: 'PLAYWRIGHT_WEBKIT_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 {
|
function getDownloadUrl(browserName: BrowserName, revision: number, platform: BrowserPlatform): string | undefined {
|
||||||
if (browserName === 'chromium') {
|
if (browserName === 'chromium') {
|
||||||
return new Map<BrowserPlatform, string>([
|
return revision < CHROMIUM_MOVE_TO_AZURE_CDN_REVISION ?
|
||||||
|
new Map<BrowserPlatform, string>([
|
||||||
['ubuntu18.04', '%s/chromium-browser-snapshots/Linux_x64/%d/chrome-linux.zip'],
|
['ubuntu18.04', '%s/chromium-browser-snapshots/Linux_x64/%d/chrome-linux.zip'],
|
||||||
['ubuntu20.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.13', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
|
||||||
@ -65,6 +69,15 @@ function getDownloadUrl(browserName: BrowserName, revision: number, platform: Br
|
|||||||
['mac10.15', '%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'],
|
['win32', '%s/chromium-browser-snapshots/Win/%d/chrome-win.zip'],
|
||||||
['win64', '%s/chromium-browser-snapshots/Win_x64/%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);
|
]).get(platform);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,8 +129,9 @@ function getDownloadUrl(browserName: BrowserName, revision: number, platform: Br
|
|||||||
}
|
}
|
||||||
|
|
||||||
function revisionURL(browser: BrowserDescriptor, platform = browserPaths.hostPlatform): string {
|
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 revision = parseInt(browser.revision, 10);
|
||||||
const urlTemplate = getDownloadUrl(browser.name, parseInt(browser.revision, 10), platform);
|
const serverHost = getDownloadHost(browser.name, revision);
|
||||||
|
const urlTemplate = getDownloadUrl(browser.name, revision, platform);
|
||||||
assert(urlTemplate, `ERROR: Playwright does not support ${browser.name} on ${platform}`);
|
assert(urlTemplate, `ERROR: Playwright does not support ${browser.name} on ${platform}`);
|
||||||
return util.format(urlTemplate, serverHost, browser.revision);
|
return util.format(urlTemplate, serverHost, browser.revision);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user