message: refactor(docs-infra): switch `test-pwa-score.js` to async/await
  PR Close
diff: /**
  * Usage:
  + * ```sh
  * node scripts/test-pwa-score <url> <min-score> [<log-file>]
  + * ```
  *
  * Fails if the score is below `<min-score>`.
  * If `<log-file>` 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 => {
  +async function launchChromeAndRunLighthouse(url, flags, config) {
  + const chrome = await chromeLauncher.launch(CHROME_LAUNCH_OPTS);
  flags.port = chrome.port;
  - return lighthouse(url, flags, config).
  - then(results => chrome.kill().then(() => results)).
  - catch(err => chrome.kill().then(() => { throw err; }, () => { throw err; }));
  - });
  +
  + try {
  + return await lighthouse(url, flags, config);
  + } finally {
  + await chrome.kill();
  + }
  }
  function onError(err) {
  @@ -88,24 +95,22 @@ 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(`\nSaving results in '${logFile}'...`);
  console.log(`(LightHouse viewer: ${VIEWER_URL})`);
  - return printer.write(report, printer.OutputMode.json, logFile);
  + await 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(`\nLighthouse version: ${lhVersion}`);
  console.log('\nAudit scores:');
  categoryData.forEach(({title, score}) => {
  @@ -113,8 +118,8 @@ function processResults(results, logFile) {
  const paddedScore = (score * 100).toFixed(0).padStart(3);
  console.log(` - ${paddedTitle} ${paddedScore} / 100`);
  });
  - }).
  - then(() => categories.pwa.score * 100);
  +
  + return categories.pwa.score * 100;
  }
  function skipHttpsAudits(config) {
  