Files
astro-website/.tmp-local-1770779470/tsx-simpl/17707-facd0e2e128eadcb125382b9e68eb9d5a6bdb783
2026-02-10 22:37:29 -05:00

1 line
10 KiB
Plaintext

{"code":"var __defProp=Object.defineProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});import{mkdir,writeFile}from\"node:fs/promises\";import path from\"node:path\";import{spawn}from\"node:child_process\";import{setTimeout as sleep}from\"node:timers/promises\";import lighthouse from\"lighthouse\";import{launch}from\"chrome-launcher\";const VARIANTS=[{id:\"light-mobile\",theme:\"light\",device:\"mobile\",screenEmulation:{mobile:true,width:360,height:800,deviceScaleFactor:2,disabled:false}},{id:\"dark-mobile\",theme:\"dark\",device:\"mobile\",screenEmulation:{mobile:true,width:360,height:800,deviceScaleFactor:2,disabled:false}},{id:\"high-contrast-mobile\",theme:\"high-contrast\",device:\"mobile\",screenEmulation:{mobile:true,width:360,height:800,deviceScaleFactor:2,disabled:false}},{id:\"light-desktop\",theme:\"light\",device:\"desktop\",screenEmulation:{mobile:false,width:1350,height:940,deviceScaleFactor:1,disabled:false}},{id:\"dark-desktop\",theme:\"dark\",device:\"desktop\",screenEmulation:{mobile:false,width:1350,height:940,deviceScaleFactor:1,disabled:false}},{id:\"high-contrast-desktop\",theme:\"high-contrast\",device:\"desktop\",screenEmulation:{mobile:false,width:1350,height:940,deviceScaleFactor:1,disabled:false}}];const CATEGORIES=[\"performance\",\"accessibility\",\"best-practices\",\"seo\"];function hasFlag(flag){return process.argv.includes(flag)}__name(hasFlag,\"hasFlag\");function getArg(name){const prefix=`${name}=`;const value=process.argv.find(arg=>arg.startsWith(prefix));return value?value.slice(prefix.length):void 0}__name(getArg,\"getArg\");function median(values){const sorted=[...values].sort((a,b)=>a-b);const mid=Math.floor(sorted.length/2);return sorted.length%2===0?(sorted[mid-1]+sorted[mid])/2:sorted[mid]}__name(median,\"median\");async function startPreviewServerIfNeeded(targetUrl){const forceNoPreview=process.env.LIGHTHOUSE_SKIP_PREVIEW===\"true\";if(forceNoPreview)return null;const isLocal=targetUrl.hostname===\"127.0.0.1\"||targetUrl.hostname===\"localhost\";if(!isLocal)return null;const port=Number(targetUrl.port||\"4321\");const astroCli=path.join(process.cwd(),\"node_modules\",\"astro\",\"astro.js\");const child=spawn(process.execPath,[astroCli,\"preview\",\"--host\",\"127.0.0.1\",\"--port\",String(port)],{cwd:process.cwd(),stdio:\"pipe\",env:process.env});let ready=false;child.stdout.on(\"data\",buf=>{const line=String(buf);if(line.includes(\"Local\")||line.includes(\"localhost\")||line.includes(\"127.0.0.1\")){ready=true}});child.stderr.on(\"data\",()=>{});for(let i=0;i<30;i+=1){if(ready)break;await sleep(500)}await sleep(1500);return()=>{child.kill(\"SIGTERM\")}}__name(startPreviewServerIfNeeded,\"startPreviewServerIfNeeded\");async function run(){const outputDir=getArg(\"--out\")||process.env.LIGHTHOUSE_OUTPUT_DIR||\"lighthouse-reports\";const target=getArg(\"--url\")||process.env.LIGHTHOUSE_TARGET_URL||\"http://127.0.0.1:4321/\";const runCount=Number(getArg(\"--runs\")||process.env.LIGHTHOUSE_RUNS||\"3\");const assert100=hasFlag(\"--assert-100\");if(!Number.isInteger(runCount)||runCount<1){throw new Error(`Invalid run count: ${runCount}`)}const targetUrl=new URL(target);await mkdir(outputDir,{recursive:true});const stopPreview=await startPreviewServerIfNeeded(targetUrl);try{const summary={target,runCount,generatedAt:new Date().toISOString(),variants:{}};let gateFailed=false;for(const variant of VARIANTS){const byCategory={performance:[],accessibility:[],\"best-practices\":[],seo:[]};for(let runIndex=1;runIndex<=runCount;runIndex+=1){let chrome;for(let attempt=1;attempt<=3;attempt+=1){try{chrome=await launch({chromeFlags:[\"--headless=new\",\"--disable-gpu\",\"--no-sandbox\"]});break}catch(error){const message=String(error||\"\");if(!message.includes(\"EPERM\")||attempt===3){throw error}await sleep(250*attempt)}}if(!chrome){throw new Error(`Failed to launch Chrome for ${variant.id} run ${runIndex}.`)}try{let result;for(let attempt=1;attempt<=3;attempt+=1){try{result=await lighthouse(target,{port:chrome.port,logLevel:\"error\",output:\"json\",onlyCategories:CATEGORIES,formFactor:variant.device,screenEmulation:variant.screenEmulation,throttlingMethod:\"simulate\",disableStorageReset:true,extraHeaders:{Cookie:`site_theme=${encodeURIComponent(variant.theme)}`}});break}catch(error){const message=String(error||\"\");if(!message.includes(\"EPERM\")||attempt===3){throw error}await sleep(250*attempt)}}if(!result?.lhr||typeof result.report!==\"string\"){throw new Error(`Lighthouse did not produce a report for ${variant.id} run ${runIndex}.`)}const lhr=result.lhr;const reportPath=path.join(outputDir,`${variant.id}.run-${runIndex}.json`);await writeFile(reportPath,result.report,\"utf8\");for(const category of CATEGORIES){const score=lhr.categories?.[category]?.score??0;byCategory[category].push(Math.round(score*100))}}finally{chrome.kill()}}const medians=Object.fromEntries(CATEGORIES.map(category=>[category,median(byCategory[category])]));if(assert100){for(const category of CATEGORIES){if(medians[category]<100){gateFailed=true}}}summary.variants={...summary.variants,[variant.id]:{theme:variant.theme,device:variant.device,scoresByRun:byCategory,medianScores:medians}}}await writeFile(path.join(outputDir,\"summary.json\"),JSON.stringify(summary,null,2),\"utf8\");if(assert100&&gateFailed){throw new Error(\"Lighthouse quality gate failed: one or more variant category medians are below 100.\")}console.log(`[lighthouse] wrote reports to ${outputDir}`)}finally{stopPreview?.()}}__name(run,\"run\");run().catch(e=>{console.error(`[lighthouse] ${String(e)}`);process.exitCode=1});\n","warnings":[],"map":{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["C:\\dev\\fast-website\\site\\scripts\\run-lighthouse.ts"],"sourcesContent":[null]}}