From a7f4c69a6017755c208130412279c53ca2ed4620 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Mon, 21 Dec 2020 18:09:55 -0800 Subject: [PATCH] docs: fix browser version generation script (#4797) --- utils/doclint/cli.js | 35 +++++++---------------------- utils/doclint/preprocessor/index.js | 4 +++- utils/print_versions.js | 17 +++++++++----- 3 files changed, 23 insertions(+), 33 deletions(-) diff --git a/utils/doclint/cli.js b/utils/doclint/cli.js index b0a29d5146..bdb011e785 100755 --- a/utils/doclint/cli.js +++ b/utils/doclint/cli.js @@ -213,6 +213,7 @@ async function run() { libversion: VERSION, chromiumVersion: browserVersions.chromium, firefoxVersion: browserVersions.firefox, + webkitVersion: browserVersions.webkit, }))); messages.push(...preprocessor.autocorrectInvalidLinks(PROJECT_DIR, mdSources, getRepositoryFiles())); @@ -266,27 +267,14 @@ async function run() { } async function getBrowserVersions() { - const [chromium, firefox] = await Promise.all([ - getChromeVersion(), - getFirefoxVersion(), - ]) - return { - chromium, - firefox, - }; -} - -async function getChromeVersion() { - if (os.platform() === 'win32' || os.platform() === 'cygwin') { - const browser = await playwright.chromium.launch(); - const page = await browser.newPage(); - const userAgent = await page.evaluate('navigator.userAgent'); - const [type] = userAgent.split(' ').filter(str => str.includes('Chrome')); - await browser.close(); - return type.split('/')[1]; + const names = ['chromium', 'firefox', 'webkit']; + const browsers = await Promise.all(names.map(name => playwright[name].launch())); + const result = {}; + for (let i = 0; i < names.length; i++) { + result[names[i]] = browsers[i].version(); } - const version = spawnSync(playwright.chromium.executablePath(), ['--version'], undefined).stdout.toString(); - return version.trim().split(' ').pop(); + await Promise.all(browsers.map(browser => browser.close())); + return result; } function getRepositoryFiles() { @@ -294,10 +282,3 @@ function getRepositoryFiles() { const files = out.stdout.toString().trim().split('\n').filter(f => !f.startsWith('docs-src')); return files.map(file => path.join(PROJECT_DIR, file)); } - -async function getFirefoxVersion() { - const isWin = os.platform() === 'win32' || os.platform() === 'cygwin'; - const out = spawnSync(playwright.firefox.executablePath(), [isWin ? '/version' : '--version'], undefined); - const version = out.stdout.toString(); - return version.trim().split(' ').pop(); -} diff --git a/utils/doclint/preprocessor/index.js b/utils/doclint/preprocessor/index.js index 737abee5c3..925ef10ead 100644 --- a/utils/doclint/preprocessor/index.js +++ b/utils/doclint/preprocessor/index.js @@ -17,7 +17,7 @@ const path = require('path'); const Message = require('../Message'); -function runCommands(sources, {libversion, chromiumVersion, firefoxVersion}) { +function runCommands(sources, {libversion, chromiumVersion, firefoxVersion, webkitVersion}) { // Release version is everything that doesn't include "-". const isReleaseVersion = !libversion.includes('-'); @@ -47,6 +47,8 @@ function runCommands(sources, {libversion, chromiumVersion, firefoxVersion}) { newText = chromiumVersion; else if (commandName === 'firefox-version') newText = firefoxVersion; + else if (commandName === 'webkit-version') + newText = webkitVersion; else if (commandName === 'chromium-version-badge') newText = `[![Chromium version](https://img.shields.io/badge/chromium-${chromiumVersion}-blue.svg?logo=google-chrome)](https://www.chromium.org/Home)`; else if (commandName === 'firefox-version-badge') diff --git a/utils/print_versions.js b/utils/print_versions.js index 913631b226..bbd85616fc 100755 --- a/utils/print_versions.js +++ b/utils/print_versions.js @@ -18,9 +18,16 @@ const pw = require('..'); const child_process = require('child_process'); -for (const browserType of [pw.chromium, pw.firefox]) { - const executablePath = browserType.executablePath(); - const version = child_process.execSync(executablePath + ' --version').toString().trim(); - console.log('- ' + version); + +async function browserVersion(browserType) { + const browser = await browserType.launch(); + const result = browser.version(); + await browser.close(); + return result; } -console.log('- WebKit 14.1'); + +(async () => { + console.log('- Chromium ' + await browserVersion(pw.chromium)); + console.log('- Mozilla Firefox ' + await browserVersion(pw.firefox)); + console.log('- WebKit ' + await browserVersion(pw.webkit)); +})();