{"record":{"id":"49abfbe6421b0ea5","repo":"chenglou/pretext","slug":"unsupported-browser-browser-expected-chrome-or-49abfb","errorCode":null,"errorMessage":"Unsupported browser ${browser}; expected chrome or safari","messagePattern":"Unsupported browser (.+?); expected chrome or safari","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"scripts/corpus-sweep.ts","lineNumber":114,"sourceCode":"\nfunction parseOptionalNumberFlag(name: string): number | null {\n  const raw = parseStringFlag(name)\n  if (raw === null) return null\n  const parsed = Number.parseInt(raw, 10)\n  if (!Number.isFinite(parsed)) {\n    throw new Error(`Invalid value for --${name}: ${raw}`)\n  }\n  return parsed\n}\n\nfunction hasFlag(name: string): boolean {\n  return process.argv.includes(`--${name}`)\n}\n\nfunction parseBrowser(value: string | null): BrowserKind {\n  const browser = (value ?? process.env['CORPUS_CHECK_BROWSER'] ?? 'chrome').toLowerCase()\n  if (browser !== 'chrome' && browser !== 'safari') {\n    throw new Error(`Unsupported browser ${browser}; expected chrome or safari`)\n  }\n  return browser\n}\n\nasync function loadSources(): Promise<CorpusMeta[]> {\n  return await Bun.file('corpora/sources.json').json()\n}\n\nfunction parseOptions(): SweepOptions {\n  const start = parseNumberFlag('start', 300)\n  const end = parseNumberFlag('end', 900)\n  const step = parseNumberFlag('step', 10)\n  if (step <= 0) throw new Error('--step must be > 0')\n  if (end < start) throw new Error('--end must be >= --start')\n  if (parseStringFlag('samples') !== null) {\n    throw new Error('--samples is obsolete for corpus-sweep; use the default step-based sweep or sampled font-matrix/taxonomy runs instead')\n  }\n","sourceCodeStart":96,"sourceCodeEnd":132,"githubUrl":"https://github.com/chenglou/pretext/blob/ac49b09b7d83ede19581fa94a8b892b07d309baf/scripts/corpus-sweep.ts#L96-L132","documentation":"Thrown by `parseBrowser` when the resolved browser is neither `chrome` nor `safari`. The value comes from `--browser=`, falling back to the `CORPUS_CHECK_BROWSER` env var, then `chrome`.","triggerScenarios":"`--browser=firefox` or `CORPUS_CHECK_BROWSER=edge bun run scripts/corpus-sweep.ts ...`.","commonSituations":"Wanting Firefox coverage (these corpus scripts are chrome/safari only by design); an env var left set by another tool; a typo like `--browser=chrom`.","solutions":["Use `--browser=chrome` or `--browser=safari`.","Unset or correct `CORPUS_CHECK_BROWSER` in your shell.","For Firefox, use the accuracy/checker paths instead; the corpus sweep/taxonomy scripts intentionally support only chrome and safari."],"exampleFix":"// before\nCORPUS_CHECK_BROWSER=firefox bun run scripts/corpus-sweep.ts --id=...\n// after\nCORPUS_CHECK_BROWSER=chrome bun run scripts/corpus-sweep.ts --id=...","handlingStrategy":"validation","validationCode":"const raw = (parseStringFlag('browser') ?? process.env['CORPUS_CHECK_BROWSER'] ?? 'chrome').toLowerCase()\nif (raw !== 'chrome' && raw !== 'safari') {\n  console.error(`Unsupported browser ${raw}; expected chrome or safari`)\n  process.exit(2)\n}","typeGuard":"const isSupportedBrowser = (v: string): v is 'chrome' | 'safari' =>\n  v === 'chrome' || v === 'safari'","tryCatchPattern":null,"preventionTips":["Pin --browser explicitly in CI rather than relying on an env var.","Remember these corpus scripts support only chrome and safari; use accuracy paths for Firefox.","Unset CORPUS_CHECK_BROWSER when switching tools to avoid stale values."],"tags":["cli","browser-automation","validation","env"],"backgroundTag":null,"analyzedSha":"ac49b09b7d83ede19581fa94a8b892b07d309baf","analyzedAt":"2026-08-12T17:03:16.263Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}