import type { UserConfig } from 'unlighthouse' export default async (): Promise<UserConfig> => { /* fetch sitemap from debug container */ const sitemap = await (await fetch('http://website:8081/sitemap-0.xml')).text(); /* format URLs to work with debug container */ const urls = sitemap.match(/<loc>(.*?)<\/loc>/g)!.map( (loc) => loc.replace(/<\/?loc>/g, '').replace(/https:\/\/firq.dev/g, 'http://website:8081') ); /* ensure serve is already "warm", preventing startup lag that reduces performance */ for (const url of urls) { await fetch(url) }; /* actual config */ return { lighthouseOptions: { throttlingMethod: 'devtools', throttling: { cpuSlowdownMultiplier: 4, requestLatencyMs: 150, downloadThroughputKbps: 1638.4, uploadThroughputKbps: 1638.4, }, screenEmulation: { width: 412, height: 823, deviceScaleFactor: 1.75, }, skipAudits: [ 'is-on-https', 'redirects-http', 'uses-http2' ], }, puppeteerOptions: { args: [ '--no-sandbox', '--disable-setuid-sandbox' ], }, puppeteerClusterOptions: { maxConcurrency: 1 }, ci: { budget: 50, buildStatic: true, }, scanner: { sitemap: false, dynamicSampling: false, samples: 1, }, outputPath: 'unlighthouse-reports', cache: true, urls } }