diff --git a/aio/scripts/test-pwa-score.js b/aio/scripts/test-pwa-score.js index abc466d888d25..b95d4eba6ae86 100644 --- a/aio/scripts/test-pwa-score.js +++ b/aio/scripts/test-pwa-score.js @@ -2,7 +2,9 @@ /** * Usage: - * node scripts/test-pwa-score [] + * ```sh + * node scripts/test-pwa-score [] + * ``` * * Fails if the score is below ``. * If `` is defined, the full results will be logged there. @@ -32,7 +34,7 @@ if (process.env.CI) { _main(process.argv.slice(2)); // Functions - Definitions -function _main(args) { +async function _main(args) { const {url, minScore, logFile} = parseInput(args); const isOnHttp = /^http:/.test(url); @@ -44,10 +46,13 @@ function _main(args) { logger.setLevel(LIGHTHOUSE_FLAGS.logLevel); - launchChromeAndRunLighthouse(url, LIGHTHOUSE_FLAGS, config). - then(results => processResults(results, logFile)). - then(score => evaluateScore(minScore, score)). - catch(onError); + try { + const results = await launchChromeAndRunLighthouse(url, LIGHTHOUSE_FLAGS, config); + const score = await processResults(results, logFile); + evaluateScore(minScore, score); + } catch (err) { + onError(err); + } } function evaluateScore(expectedScore, actualScore) { @@ -60,13 +65,15 @@ function evaluateScore(expectedScore, actualScore) { } } -function launchChromeAndRunLighthouse(url, flags, config) { - return chromeLauncher.launch(CHROME_LAUNCH_OPTS).then(chrome => { - flags.port = chrome.port; - return lighthouse(url, flags, config). - then(results => chrome.kill().then(() => results)). - catch(err => chrome.kill().then(() => { throw err; }, () => { throw err; })); - }); +async function launchChromeAndRunLighthouse(url, flags, config) { + const chrome = await chromeLauncher.launch(CHROME_LAUNCH_OPTS); + flags.port = chrome.port; + + try { + return await lighthouse(url, flags, config); + } finally { + await chrome.kill(); + } } function onError(err) { @@ -88,33 +95,31 @@ function parseInput(args) { return {url, minScore, logFile}; } -function processResults(results, logFile) { +async function processResults(results, logFile) { + const lhVersion = results.lhr.lighthouseVersion; const categories = results.lhr.categories; const report = results.report; - return Promise.resolve(). - then(() => { - if (logFile) { - console.log(`Saving results in '${logFile}'...`); - console.log(`(LightHouse viewer: ${VIEWER_URL})`); - - return printer.write(report, printer.OutputMode.json, logFile); - } - }). - then(() => { - const categoryData = Object.keys(categories).map(name => categories[name]); - const maxTitleLen = Math.max(...categoryData.map(({title}) => title.length)); - - console.log('\nLighthouse version:', results.lhr.lighthouseVersion); - - console.log('\nAudit scores:'); - categoryData.forEach(({title, score}) => { - const paddedTitle = `${title}:`.padEnd(maxTitleLen + 1); - const paddedScore = (score * 100).toFixed(0).padStart(3); - console.log(` - ${paddedTitle} ${paddedScore} / 100`); - }); - }). - then(() => categories.pwa.score * 100); + if (logFile) { + console.log(`\nSaving results in '${logFile}'...`); + console.log(`(LightHouse viewer: ${VIEWER_URL})`); + + await printer.write(report, printer.OutputMode.json, logFile); + } + + const categoryData = Object.keys(categories).map(name => categories[name]); + const maxTitleLen = Math.max(...categoryData.map(({title}) => title.length)); + + console.log(`\nLighthouse version: ${lhVersion}`); + + console.log('\nAudit scores:'); + categoryData.forEach(({title, score}) => { + const paddedTitle = `${title}:`.padEnd(maxTitleLen + 1); + const paddedScore = (score * 100).toFixed(0).padStart(3); + console.log(` - ${paddedTitle} ${paddedScore} / 100`); + }); + + return categories.pwa.score * 100; } function skipHttpsAudits(config) {