{"record":{"id":"851085c9682d9fc5","repo":"chenglou/pretext","slug":"unsupported-browser-browser-expected-chrome-or-851085","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-taxonomy.ts","lineNumber":84,"sourceCode":"  const raw = parseStringFlag(name)\n  if (raw === null) return fallback\n  const parsed = Number.parseInt(raw, 10)\n  if (!Number.isFinite(parsed)) throw new Error(`Invalid value for --${name}: ${raw}`)\n  return parsed\n}\n\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)) throw new Error(`Invalid value for --${name}: ${raw}`)\n  return parsed\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 getTargetWidths(meta: CorpusMeta, start: number, end: number, step: number, samples: number | null): number[] {\n  const min = Math.max(start, meta.min_width ?? start)\n  const max = Math.min(end, meta.max_width ?? end)\n\n  if (samples !== null) {\n    if (samples === 1) return [Math.round((min + max) / 2)]\n    const sampled = new Set<number>()\n    for (let i = 0; i < samples; i++) {\n      const ratio = i / (samples - 1)\n      sampled.add(Math.round(min + (max - min) * ratio))","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/chenglou/pretext/blob/ac49b09b7d83ede19581fa94a8b892b07d309baf/scripts/corpus-taxonomy.ts#L66-L102","documentation":"Thrown by the taxonomy script's `parseBrowser` when the resolved browser is neither `chrome` nor `safari`. Resolution order: `--browser=`, then `CORPUS_CHECK_BROWSER` env, then `chrome`.","triggerScenarios":"`--browser=firefox` or `CORPUS_CHECK_BROWSER=edge bun run scripts/corpus-taxonomy.ts ...`.","commonSituations":"Wanting Firefox (unsupported by these corpus scripts); stale env var; a typo.","solutions":["Use `--browser=chrome` or `--browser=safari`.","Unset or correct `CORPUS_CHECK_BROWSER`.","For Firefox, use the accuracy/checker paths instead."],"exampleFix":"// before\nCORPUS_CHECK_BROWSER=firefox bun run scripts/corpus-taxonomy.ts --id=...\n// after\nCORPUS_CHECK_BROWSER=chrome bun run scripts/corpus-taxonomy.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.","Unset CORPUS_CHECK_BROWSER when switching tools.","Use accuracy paths for Firefox coverage."],"tags":["cli","browser-automation","validation","env","taxonomy"],"backgroundTag":null,"analyzedSha":"ac49b09b7d83ede19581fa94a8b892b07d309baf","analyzedAt":"2026-08-12T17:03:16.263Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}