refactor(docs-infra): switch test-pwa-score.js to async/await (#29953)
				
					
				
			PR Close #29953
This commit is contained in:
		
							parent
							
								
									a48d288ff8
								
							
						
					
					
						commit
						ca9b3eed9e
					
				| @ -2,7 +2,9 @@ | ||||
| 
 | ||||
| /** | ||||
|  * 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) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user