chrome-headless-shell.ts (1749B)
1 /** 2 * @license 3 * Copyright 2023 Google Inc. 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 import path from 'node:path'; 7 8 import {BrowserPlatform} from './types.js'; 9 10 function folder(platform: BrowserPlatform): string { 11 switch (platform) { 12 case BrowserPlatform.LINUX_ARM: 13 case BrowserPlatform.LINUX: 14 return 'linux64'; 15 case BrowserPlatform.MAC_ARM: 16 return 'mac-arm64'; 17 case BrowserPlatform.MAC: 18 return 'mac-x64'; 19 case BrowserPlatform.WIN32: 20 return 'win32'; 21 case BrowserPlatform.WIN64: 22 return 'win64'; 23 } 24 } 25 26 export function resolveDownloadUrl( 27 platform: BrowserPlatform, 28 buildId: string, 29 baseUrl = 'https://storage.googleapis.com/chrome-for-testing-public', 30 ): string { 31 return `${baseUrl}/${resolveDownloadPath(platform, buildId).join('/')}`; 32 } 33 34 export function resolveDownloadPath( 35 platform: BrowserPlatform, 36 buildId: string, 37 ): string[] { 38 return [ 39 buildId, 40 folder(platform), 41 `chrome-headless-shell-${folder(platform)}.zip`, 42 ]; 43 } 44 45 export function relativeExecutablePath( 46 platform: BrowserPlatform, 47 _buildId: string, 48 ): string { 49 switch (platform) { 50 case BrowserPlatform.MAC: 51 case BrowserPlatform.MAC_ARM: 52 return path.join( 53 'chrome-headless-shell-' + folder(platform), 54 'chrome-headless-shell', 55 ); 56 case BrowserPlatform.LINUX_ARM: 57 case BrowserPlatform.LINUX: 58 return path.join( 59 'chrome-headless-shell-linux64', 60 'chrome-headless-shell', 61 ); 62 case BrowserPlatform.WIN32: 63 case BrowserPlatform.WIN64: 64 return path.join( 65 'chrome-headless-shell-' + folder(platform), 66 'chrome-headless-shell.exe', 67 ); 68 } 69 } 70 71 export {resolveBuildId, compareVersions} from './chrome.js';