( options: LighthouseCliOptions, )
| 5 | import type { LighthouseCliOptions } from './types.js'; |
| 6 | |
| 7 | export function getLighthouseCliArguments( |
| 8 | options: LighthouseCliOptions, |
| 9 | ): string[] { |
| 10 | const { |
| 11 | url, |
| 12 | outputPath = LIGHTHOUSE_REPORT_NAME, |
| 13 | onlyAudits = [], |
| 14 | verbose = false, |
| 15 | headless = false, |
| 16 | userDataDir, |
| 17 | } = options; |
| 18 | |
| 19 | // eslint-disable-next-line functional/no-let |
| 20 | let argsObj: Record<string, unknown> = { |
| 21 | _: ['lighthouse', url], |
| 22 | verbose, |
| 23 | output: 'json', |
| 24 | 'output-path': outputPath, |
| 25 | }; |
| 26 | |
| 27 | if (onlyAudits.length > 0) { |
| 28 | argsObj = { |
| 29 | ...argsObj, |
| 30 | onlyAudits: toArray(onlyAudits), |
| 31 | }; |
| 32 | } |
| 33 | |
| 34 | // handle chrome flags |
| 35 | // eslint-disable-next-line functional/no-let |
| 36 | let chromeFlags: string[] = []; |
| 37 | if (headless) { |
| 38 | chromeFlags = [...chromeFlags, `--headless=${headless}`]; |
| 39 | } |
| 40 | if (userDataDir) { |
| 41 | chromeFlags = [...chromeFlags, `--user-data-dir=${userDataDir}`]; |
| 42 | } |
| 43 | if (chromeFlags.length > 0) { |
| 44 | argsObj = { |
| 45 | ...argsObj, |
| 46 | 'chrome-flags': chromeFlags.join(' '), |
| 47 | }; |
| 48 | } |
| 49 | |
| 50 | return objectToCliArgs(argsObj); |
| 51 | } |
| 52 | |
| 53 | export function lhrDetailsToIssueDetails( |
| 54 | details = {} as unknown as Result['audits'][string]['details'], |
no test coverage detected