chenglou/pretext · error · Error
Unsupported browser ${browser}; expected chrome or safari
Error message
Unsupported browser ${browser}; expected chrome or safari What it means
parseBrowser constrains probe-check to Chrome or Safari. It reads --browser=, then the PROBE_CHECK_BROWSER env var, then defaults to 'chrome', lowercases, and throws for anything else (including firefox, edge, ie). probe-check is a focused single-case diagnostic; the broader Firefox/oracle automation lives in pre-wrap-check.ts and symbol-check.ts, and even there Firefox symbol runs are unsupported (see error 86).
Source
Thrown at scripts/probe-check.ts:82
function parseStringFlag(name: string): string | null {
const prefix = `--${name}=`
const arg = process.argv.find(value => value.startsWith(prefix))
return arg === undefined ? null : arg.slice(prefix.length)
}
function parseNumberFlag(name: string, fallback: number): number {
const raw = parseStringFlag(name)
if (raw === null) return fallback
const parsed = Number.parseInt(raw, 10)
if (!Number.isFinite(parsed)) throw new Error(`Invalid value for --${name}: ${raw}`)
return parsed
}
function parseBrowser(value: string | null): BrowserKind {
const browser = (value ?? process.env['PROBE_CHECK_BROWSER'] ?? 'chrome').toLowerCase()
if (browser !== 'chrome' && browser !== 'safari') {
throw new Error(`Unsupported browser ${browser}; expected chrome or safari`)
}
return browser
}
function requireFlag(name: string): string {
const value = parseStringFlag(name)
if (value === null || value.length === 0) throw new Error(`Missing --${name}=...`)
return value
}
function printReport(report: ProbeReport): void {
if (report.status === 'error') {
console.log(`error: ${report.message ?? 'unknown error'}`)
return
}
console.log(
`width ${report.width}: diff ${report.diffPx}px | lines ${report.predictedLineCount}/${report.browserLineCount} | height ${report.predictedHeight}/${report.actualHeight}`,View on GitHub (pinned to ac49b09b7d)
Solutions
- Use chrome (the default) or safari.
- Unset or correct PROBE_CHECK_BROWSER if the throw names a value you did not pass on the CLI.
- For Firefox diagnostics use the dedicated checkers (pre-wrap-check), not probe-check.
Example fix
# before PROBE_CHECK_BROWSER=firefox bun run scripts/probe-check.ts --text=hi # after bun run scripts/probe-check.ts --text=hi # defaults to chrome # or bun run scripts/probe-check.ts --browser=safari --text=hi
Defensive patterns
Strategy: validation
Validate before calling
const PROBE_BROWSERS = ['chrome', 'safari'] as const
const candidate = (parseStringFlag('browser') ?? process.env['PROBE_CHECK_BROWSER'] ?? 'chrome').toLowerCase()
if (!PROBE_BROWSERS.includes(candidate as 'chrome' | 'safari')) {
console.error(`probe-check supports chrome|safari only, got ${candidate}`)
process.exit(2)
} Type guard
const isProbeBrowser = (s: string): s is 'chrome' | 'safari' => s === 'chrome' || s === 'safari'
Prevention
- probe-check is chrome/safari only by design; Firefox diagnostics belong to the dedicated checkers.
- Mind inherited PROBE_CHECK_BROWSER env vars when the throw names a value you did not pass on the CLI.
- Default to chrome (omit --browser) unless you specifically need Safari extraction.
When it happens
Trigger: --browser=firefox; PROBE_CHECK_BROWSER=edge bun run scripts/probe-check.ts; a typo such as --browser=chrme. parseBrowser runs at line 145, before the browser session is created.
Common situations: Reusing a --browser=firefox habit from pre-wrap-check/symbol-check; a PROBE_CHECK_BROWSER env var left over from another tool; typo in the token.
Related errors
- Unsupported browser ${browser}
- Unknown corpus ${options.id}. Available corpora: ${sources.m
- No font matrix configured for ${options.id}. Available corpo
- Unsupported browser ${browser}; expected chrome or safari
- Unknown corpus ${options.id}. Available corpora: ${sources.m
AI-assisted analysis of chenglou/pretext@ac49b09b7d (2026-08-12).
Data as JSON: /api/errors/98789abfe1359296.
Report an issue: GitHub.