cherry-pick(release-1.7): make launch doctor to warn on Win7 (#4719)

PR https://github.com/microsoft/playwright/pull/4718
SHA b09e0d01bd
This commit is contained in:
Andrey Lushnikov 2020-12-14 17:01:29 -08:00 committed by GitHub
parent 4d7fb28dad
commit 99b155c101
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -31,7 +31,10 @@ export async function validateHostRequirements(browserPath: string, browser: Bro
const ubuntuVersion = await getUbuntuVersion(); const ubuntuVersion = await getUbuntuVersion();
if (browser.name === 'firefox' && ubuntuVersion === '16.04') if (browser.name === 'firefox' && ubuntuVersion === '16.04')
throw new Error(`Cannot launch firefox on Ubuntu 16.04! Minimum required Ubuntu version for Firefox browser is 18.04`); throw new Error(`Cannot launch firefox on Ubuntu 16.04! Minimum required Ubuntu version for Firefox browser is 18.04`);
await validateDependencies(browserPath, browser); if (os.platform() === 'linux')
return await validateDependenciesLinux(browserPath, browser);
if (os.platform() === 'win32' && os.arch() === 'x64')
return await validateDependenciesWindows(browserPath, browser);
} }
const DL_OPEN_LIBRARIES = { const DL_OPEN_LIBRARIES = {
@ -41,12 +44,14 @@ const DL_OPEN_LIBRARIES = {
clank: [], clank: [],
}; };
async function validateDependencies(browserPath: string, browser: BrowserDescriptor) { function isSupportedWindowsVersion(): boolean {
// We currently only support Linux. if (os.platform() !== 'win32' || os.arch() !== 'x64')
if (os.platform() === 'linux') return false;
return await validateDependenciesLinux(browserPath, browser); const [major, minor] = os.release().split('.').map(token => parseInt(token, 10));
if (os.platform() === 'win32' && os.arch() === 'x64') // This is based on: https://stackoverflow.com/questions/42524606/how-to-get-windows-version-using-node-js/44916050#44916050
return await validateDependenciesWindows(browserPath, browser); // The table with versions is taken from: https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-osversioninfoexw#remarks
// Windows 7 is not supported and is encoded as `6.1`.
return major > 6 || (major === 6 && minor > 1);
} }
async function validateDependenciesWindows(browserPath: string, browser: BrowserDescriptor) { async function validateDependenciesWindows(browserPath: string, browser: BrowserDescriptor) {
@ -101,7 +106,13 @@ async function validateDependenciesWindows(browserPath: string, browser: Browser
` ${[...missingDeps].join('\n ')}`, ` ${[...missingDeps].join('\n ')}`,
``); ``);
throw new Error(`Host system is missing dependencies!\n\n${details.join('\n')}`); const message = `Host system is missing dependencies!\n\n${details.join('\n')}`;
if (isSupportedWindowsVersion()) {
throw new Error(message);
} else {
console.warn(`WARNING: running on unsupported windows version!`);
console.warn(message);
}
} }
async function validateDependenciesLinux(browserPath: string, browser: BrowserDescriptor) { async function validateDependenciesLinux(browserPath: string, browser: BrowserDescriptor) {