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