diff --git a/docs/src/intro-js.md b/docs/src/intro-js.md index 92a948c94d..7452bf51bc 100644 --- a/docs/src/intro-js.md +++ b/docs/src/intro-js.md @@ -127,7 +127,7 @@ npx playwright --version - Node.js 16+ - Windows 10+, Windows Server 2016+ or Windows Subsystem for Linux (WSL). - MacOS 12 Monterey or MacOS 13 Ventura. -- Debian 11, Debian 12, Ubuntu 20.04 or Ubuntu 22.04. +- Debian 11, Debian 12, Ubuntu 20.04 or Ubuntu 22.04, with x86-64 or arm64 architecture. ## What's next diff --git a/packages/playwright-core/src/server/registry/index.ts b/packages/playwright-core/src/server/registry/index.ts index 023f86de05..8bd9693676 100644 --- a/packages/playwright-core/src/server/registry/index.ts +++ b/packages/playwright-core/src/server/registry/index.ts @@ -77,15 +77,15 @@ type DownloadPaths = Record; const DOWNLOAD_PATHS: Record = { 'chromium': { '': undefined, - 'ubuntu18.04': 'builds/chromium/%s/chromium-linux.zip', - 'ubuntu20.04': 'builds/chromium/%s/chromium-linux.zip', - 'ubuntu22.04': 'builds/chromium/%s/chromium-linux.zip', + 'ubuntu18.04-x64': 'builds/chromium/%s/chromium-linux.zip', + 'ubuntu20.04-x64': 'builds/chromium/%s/chromium-linux.zip', + 'ubuntu22.04-x64': 'builds/chromium/%s/chromium-linux.zip', 'ubuntu18.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip', 'ubuntu20.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip', 'ubuntu22.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip', - 'debian11': 'builds/chromium/%s/chromium-linux.zip', + 'debian11-x64': 'builds/chromium/%s/chromium-linux.zip', 'debian11-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip', - 'debian12': 'builds/chromium/%s/chromium-linux.zip', + 'debian12-x64': 'builds/chromium/%s/chromium-linux.zip', 'debian12-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip', 'mac10.13': 'builds/chromium/%s/chromium-mac.zip', 'mac10.14': 'builds/chromium/%s/chromium-mac.zip', @@ -100,15 +100,15 @@ const DOWNLOAD_PATHS: Record = { }, 'chromium-tip-of-tree': { '': undefined, - 'ubuntu18.04': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', - 'ubuntu20.04': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', - 'ubuntu22.04': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', + 'ubuntu18.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', + 'ubuntu20.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', + 'ubuntu22.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', 'ubuntu18.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip', 'ubuntu20.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip', 'ubuntu22.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip', - 'debian11': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', + 'debian11-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', 'debian11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip', - 'debian12': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', + 'debian12-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip', 'debian12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip', 'mac10.13': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip', 'mac10.14': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip', @@ -123,15 +123,15 @@ const DOWNLOAD_PATHS: Record = { }, 'chromium-with-symbols': { '': undefined, - 'ubuntu18.04': 'builds/chromium/%s/chromium-with-symbols-linux.zip', - 'ubuntu20.04': 'builds/chromium/%s/chromium-with-symbols-linux.zip', - 'ubuntu22.04': 'builds/chromium/%s/chromium-with-symbols-linux.zip', + 'ubuntu18.04-x64': 'builds/chromium/%s/chromium-with-symbols-linux.zip', + 'ubuntu20.04-x64': 'builds/chromium/%s/chromium-with-symbols-linux.zip', + 'ubuntu22.04-x64': 'builds/chromium/%s/chromium-with-symbols-linux.zip', 'ubuntu18.04-arm64': 'builds/chromium/%s/chromium-with-symbols-linux-arm64.zip', 'ubuntu20.04-arm64': 'builds/chromium/%s/chromium-with-symbols-linux-arm64.zip', 'ubuntu22.04-arm64': 'builds/chromium/%s/chromium-with-symbols-linux-arm64.zip', - 'debian11': 'builds/chromium/%s/chromium-with-symbols-linux.zip', + 'debian11-x64': 'builds/chromium/%s/chromium-with-symbols-linux.zip', 'debian11-arm64': 'builds/chromium/%s/chromium-with-symbols-linux-arm64.zip', - 'debian12': 'builds/chromium/%s/chromium-with-symbols-linux.zip', + 'debian12-x64': 'builds/chromium/%s/chromium-with-symbols-linux.zip', 'debian12-arm64': 'builds/chromium/%s/chromium-with-symbols-linux-arm64.zip', 'mac10.13': 'builds/chromium/%s/chromium-with-symbols-mac.zip', 'mac10.14': 'builds/chromium/%s/chromium-with-symbols-mac.zip', @@ -146,15 +146,15 @@ const DOWNLOAD_PATHS: Record = { }, 'firefox': { '': undefined, - 'ubuntu18.04': 'builds/firefox/%s/firefox-ubuntu-18.04.zip', - 'ubuntu20.04': 'builds/firefox/%s/firefox-ubuntu-20.04.zip', - 'ubuntu22.04': 'builds/firefox/%s/firefox-ubuntu-22.04.zip', + 'ubuntu18.04-x64': 'builds/firefox/%s/firefox-ubuntu-18.04.zip', + 'ubuntu20.04-x64': 'builds/firefox/%s/firefox-ubuntu-20.04.zip', + 'ubuntu22.04-x64': 'builds/firefox/%s/firefox-ubuntu-22.04.zip', 'ubuntu18.04-arm64': undefined, 'ubuntu20.04-arm64': 'builds/firefox/%s/firefox-ubuntu-20.04-arm64.zip', 'ubuntu22.04-arm64': 'builds/firefox/%s/firefox-ubuntu-22.04-arm64.zip', - 'debian11': 'builds/firefox/%s/firefox-debian-11.zip', + 'debian11-x64': 'builds/firefox/%s/firefox-debian-11.zip', 'debian11-arm64': 'builds/firefox/%s/firefox-debian-11-arm64.zip', - 'debian12': 'builds/firefox/%s/firefox-debian-12.zip', + 'debian12-x64': 'builds/firefox/%s/firefox-debian-12.zip', 'debian12-arm64': 'builds/firefox/%s/firefox-debian-12-arm64.zip', 'mac10.13': 'builds/firefox/%s/firefox-mac-13.zip', 'mac10.14': 'builds/firefox/%s/firefox-mac-13.zip', @@ -169,15 +169,15 @@ const DOWNLOAD_PATHS: Record = { }, 'firefox-beta': { '': undefined, - 'ubuntu18.04': 'builds/firefox-beta/%s/firefox-beta-ubuntu-18.04.zip', - 'ubuntu20.04': 'builds/firefox-beta/%s/firefox-beta-ubuntu-20.04.zip', - 'ubuntu22.04': 'builds/firefox-beta/%s/firefox-beta-ubuntu-22.04.zip', + 'ubuntu18.04-x64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-18.04.zip', + 'ubuntu20.04-x64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-20.04.zip', + 'ubuntu22.04-x64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-22.04.zip', 'ubuntu18.04-arm64': undefined, 'ubuntu20.04-arm64': undefined, 'ubuntu22.04-arm64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-22.04-arm64.zip', - 'debian11': 'builds/firefox-beta/%s/firefox-beta-debian-11.zip', + 'debian11-x64': 'builds/firefox-beta/%s/firefox-beta-debian-11.zip', 'debian11-arm64': 'builds/firefox-beta/%s/firefox-beta-debian-11-arm64.zip', - 'debian12': 'builds/firefox-beta/%s/firefox-beta-debian-12.zip', + 'debian12-x64': 'builds/firefox-beta/%s/firefox-beta-debian-12.zip', 'debian12-arm64': 'builds/firefox-beta/%s/firefox-beta-debian-12-arm64.zip', 'mac10.13': 'builds/firefox-beta/%s/firefox-beta-mac-13.zip', 'mac10.14': 'builds/firefox-beta/%s/firefox-beta-mac-13.zip', @@ -192,15 +192,15 @@ const DOWNLOAD_PATHS: Record = { }, 'firefox-asan': { '': undefined, - 'ubuntu18.04': undefined, - 'ubuntu20.04': undefined, - 'ubuntu22.04': 'builds/firefox/%s/firefox-asan-ubuntu-22.04.zip', + 'ubuntu18.04-x64': undefined, + 'ubuntu20.04-x64': undefined, + 'ubuntu22.04-x64': 'builds/firefox/%s/firefox-asan-ubuntu-22.04.zip', 'ubuntu18.04-arm64': undefined, 'ubuntu20.04-arm64': undefined, 'ubuntu22.04-arm64': undefined, - 'debian11': undefined, + 'debian11-x64': undefined, 'debian11-arm64': undefined, - 'debian12': undefined, + 'debian12-x64': undefined, 'debian12-arm64': undefined, 'mac10.13': 'builds/firefox/%s/firefox-asan-mac-13.zip', 'mac10.14': 'builds/firefox/%s/firefox-asan-mac-13.zip', @@ -215,15 +215,15 @@ const DOWNLOAD_PATHS: Record = { }, 'webkit': { '': undefined, - 'ubuntu18.04': 'builds/deprecated-webkit-ubuntu-18.04/%s/deprecated-webkit-ubuntu-18.04.zip', - 'ubuntu20.04': 'builds/webkit/%s/webkit-ubuntu-20.04.zip', - 'ubuntu22.04': 'builds/webkit/%s/webkit-ubuntu-22.04.zip', + 'ubuntu18.04-x64': 'builds/deprecated-webkit-ubuntu-18.04/%s/deprecated-webkit-ubuntu-18.04.zip', + 'ubuntu20.04-x64': 'builds/webkit/%s/webkit-ubuntu-20.04.zip', + 'ubuntu22.04-x64': 'builds/webkit/%s/webkit-ubuntu-22.04.zip', 'ubuntu18.04-arm64': undefined, 'ubuntu20.04-arm64': 'builds/webkit/%s/webkit-ubuntu-20.04-arm64.zip', 'ubuntu22.04-arm64': 'builds/webkit/%s/webkit-ubuntu-22.04-arm64.zip', - 'debian11': 'builds/webkit/%s/webkit-debian-11.zip', + 'debian11-x64': 'builds/webkit/%s/webkit-debian-11.zip', 'debian11-arm64': 'builds/webkit/%s/webkit-debian-11-arm64.zip', - 'debian12': 'builds/webkit/%s/webkit-debian-12.zip', + 'debian12-x64': 'builds/webkit/%s/webkit-debian-12.zip', 'debian12-arm64': 'builds/webkit/%s/webkit-debian-12-arm64.zip', 'mac10.13': undefined, 'mac10.14': 'builds/deprecated-webkit-mac-10.14/%s/deprecated-webkit-mac-10.14.zip', @@ -238,15 +238,15 @@ const DOWNLOAD_PATHS: Record = { }, 'ffmpeg': { '': undefined, - 'ubuntu18.04': 'builds/ffmpeg/%s/ffmpeg-linux.zip', - 'ubuntu20.04': 'builds/ffmpeg/%s/ffmpeg-linux.zip', - 'ubuntu22.04': 'builds/ffmpeg/%s/ffmpeg-linux.zip', + 'ubuntu18.04-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip', + 'ubuntu20.04-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip', + 'ubuntu22.04-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip', 'ubuntu18.04-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip', 'ubuntu20.04-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip', 'ubuntu22.04-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip', - 'debian11': 'builds/ffmpeg/%s/ffmpeg-linux.zip', + 'debian11-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip', 'debian11-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip', - 'debian12': 'builds/ffmpeg/%s/ffmpeg-linux.zip', + 'debian12-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip', 'debian12-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip', 'mac10.13': 'builds/ffmpeg/%s/ffmpeg-mac.zip', 'mac10.14': 'builds/ffmpeg/%s/ffmpeg-mac.zip', @@ -261,15 +261,15 @@ const DOWNLOAD_PATHS: Record = { }, 'android': { '': 'builds/android/%s/android.zip', - 'ubuntu18.04': 'builds/android/%s/android.zip', - 'ubuntu20.04': 'builds/android/%s/android.zip', - 'ubuntu22.04': 'builds/android/%s/android.zip', + 'ubuntu18.04-x64': 'builds/android/%s/android.zip', + 'ubuntu20.04-x64': 'builds/android/%s/android.zip', + 'ubuntu22.04-x64': 'builds/android/%s/android.zip', 'ubuntu18.04-arm64': 'builds/android/%s/android.zip', 'ubuntu20.04-arm64': 'builds/android/%s/android.zip', 'ubuntu22.04-arm64': 'builds/android/%s/android.zip', - 'debian11': 'builds/android/%s/android.zip', + 'debian11-x64': 'builds/android/%s/android.zip', 'debian11-arm64': 'builds/android/%s/android.zip', - 'debian12': 'builds/android/%s/android.zip', + 'debian12-x64': 'builds/android/%s/android.zip', 'debian12-arm64': 'builds/android/%s/android.zip', 'mac10.13': 'builds/android/%s/android.zip', 'mac10.14': 'builds/android/%s/android.zip', diff --git a/packages/playwright-core/src/server/registry/nativeDeps.ts b/packages/playwright-core/src/server/registry/nativeDeps.ts index f5f7ca6e90..7970156225 100644 --- a/packages/playwright-core/src/server/registry/nativeDeps.ts +++ b/packages/playwright-core/src/server/registry/nativeDeps.ts @@ -19,7 +19,7 @@ // ./utils/linux-browser-dependencies/run.sh ubuntu:20.04 export const deps: any = { - 'ubuntu18.04': { + 'ubuntu18.04-x64': { tools: [ 'xvfb', 'fonts-noto-color-emoji', @@ -181,7 +181,7 @@ export const deps: any = { }, }, - 'ubuntu20.04': { + 'ubuntu20.04-x64': { tools: [ 'xvfb', 'fonts-noto-color-emoji', @@ -396,7 +396,7 @@ export const deps: any = { }, }, - 'ubuntu22.04': { + 'ubuntu22.04-x64': { tools: [ 'xvfb', 'fonts-noto-color-emoji', @@ -612,7 +612,7 @@ export const deps: any = { 'libevent-2.1.so.7': 'libevent-2.1-7', }, }, - 'debian11': { + 'debian11-x64': { tools: [ 'xvfb', 'fonts-noto-color-emoji', @@ -822,7 +822,7 @@ export const deps: any = { 'libevent-2.1.so.7': 'libevent-2.1-7', } }, - 'debian12': { + 'debian12-x64': { tools: [ 'xvfb', 'fonts-noto-color-emoji', @@ -977,58 +977,58 @@ export const deps: any = { }; deps['ubuntu20.04-arm64'] = { - tools: [...deps['ubuntu20.04'].tools], - chromium: [...deps['ubuntu20.04'].chromium], + tools: [...deps['ubuntu20.04-x64'].tools], + chromium: [...deps['ubuntu20.04-x64'].chromium], firefox: [ - ...deps['ubuntu20.04'].firefox, + ...deps['ubuntu20.04-x64'].firefox, ], webkit: [ - ...deps['ubuntu20.04'].webkit, + ...deps['ubuntu20.04-x64'].webkit, ], lib2package: { - ...deps['ubuntu20.04'].lib2package, + ...deps['ubuntu20.04-x64'].lib2package, }, }; deps['ubuntu22.04-arm64'] = { - tools: [...deps['ubuntu22.04'].tools], - chromium: [...deps['ubuntu22.04'].chromium], + tools: [...deps['ubuntu22.04-x64'].tools], + chromium: [...deps['ubuntu22.04-x64'].chromium], firefox: [ - ...deps['ubuntu22.04'].firefox, + ...deps['ubuntu22.04-x64'].firefox, ], webkit: [ - ...deps['ubuntu22.04'].webkit, + ...deps['ubuntu22.04-x64'].webkit, ], lib2package: { - ...deps['ubuntu22.04'].lib2package, + ...deps['ubuntu22.04-x64'].lib2package, }, }; deps['debian11-arm64'] = { - tools: [...deps['debian11'].tools], - chromium: [...deps['debian11'].chromium], + tools: [...deps['debian11-x64'].tools], + chromium: [...deps['debian11-x64'].chromium], firefox: [ - ...deps['debian11'].firefox, + ...deps['debian11-x64'].firefox, ], webkit: [ - ...deps['debian11'].webkit, + ...deps['debian11-x64'].webkit, ], lib2package: { - ...deps['debian11'].lib2package, + ...deps['debian11-x64'].lib2package, }, }; deps['debian12-arm64'] = { - tools: [...deps['debian12'].tools], - chromium: [...deps['debian12'].chromium], + tools: [...deps['debian12-x64'].tools], + chromium: [...deps['debian12-x64'].chromium], firefox: [ - ...deps['debian12'].firefox, + ...deps['debian12-x64'].firefox, ], webkit: [ - ...deps['debian12'].webkit, + ...deps['debian12-x64'].webkit, ], lib2package: { - ...deps['debian12'].lib2package, + ...deps['debian12-x64'].lib2package, }, }; diff --git a/packages/playwright-core/src/utils/hostPlatform.ts b/packages/playwright-core/src/utils/hostPlatform.ts index 1e16de9391..796c1f04d0 100644 --- a/packages/playwright-core/src/utils/hostPlatform.ts +++ b/packages/playwright-core/src/utils/hostPlatform.ts @@ -24,11 +24,11 @@ export type HostPlatform = 'win64' | 'mac11' | 'mac11-arm64' | 'mac12' | 'mac12-arm64' | 'mac13' | 'mac13-arm64' | - 'ubuntu18.04' | 'ubuntu18.04-arm64' | - 'ubuntu20.04' | 'ubuntu20.04-arm64' | - 'ubuntu22.04' | 'ubuntu22.04-arm64' | - 'debian11' | 'debian11-arm64' | - 'debian12' | 'debian12-arm64' | + 'ubuntu18.04-x64' | 'ubuntu18.04-arm64' | + 'ubuntu20.04-x64' | 'ubuntu20.04-arm64' | + 'ubuntu22.04-x64' | 'ubuntu22.04-arm64' | + 'debian11-x64' | 'debian11-arm64' | + 'debian12-x64' | 'debian12-arm64' | ''; function calculatePlatform(): { hostPlatform: HostPlatform, isOfficiallySupportedPlatform: boolean } { @@ -55,7 +55,10 @@ function calculatePlatform(): { hostPlatform: HostPlatform, isOfficiallySupporte return { hostPlatform: macVersion as HostPlatform, isOfficiallySupportedPlatform: true }; } if (platform === 'linux') { - const archSuffix = os.arch() === 'arm64' ? '-arm64' : ''; + if (!['x64', 'arm64'].includes(os.arch())) + return { hostPlatform: '', isOfficiallySupportedPlatform: false }; + + const archSuffix = '-' + os.arch(); const distroInfo = getLinuxDistributionInfoSync(); // Pop!_OS is ubuntu-based and has the same versions. @@ -69,14 +72,17 @@ function calculatePlatform(): { hostPlatform: HostPlatform, isOfficiallySupporte return { hostPlatform: ('ubuntu20.04' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform }; return { hostPlatform: ('ubuntu22.04' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform }; } - if (distroInfo?.id === 'debian' && distroInfo?.version === '11') - return { hostPlatform: ('debian11' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform: true }; - if (distroInfo?.id === 'debian' && distroInfo?.version === '12') - return { hostPlatform: ('debian12' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform: true }; - // use most recent supported release for 'debian testing' and 'unstable'. - // they never include a numeric version entry in /etc/os-release. - if (distroInfo?.id === 'debian' && distroInfo?.version === '') - return { hostPlatform: ('debian12' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform: true }; + if (distroInfo?.id === 'debian' || distroInfo?.id === 'raspbian') { + const isOfficiallySupportedPlatform = distroInfo?.id === 'debian'; + if (distroInfo?.version === '11') + return { hostPlatform: ('debian11' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform }; + if (distroInfo?.version === '12') + return { hostPlatform: ('debian12' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform }; + // use most recent supported release for 'debian testing' and 'unstable'. + // they never include a numeric version entry in /etc/os-release. + if (distroInfo?.version === '') + return { hostPlatform: ('debian12' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform }; + } return { hostPlatform: ('ubuntu20.04' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform: false }; } if (platform === 'win32')