chenglou/pretext · error · Error
Unsupported browser ${browser}
Error message
Unsupported browser ${browser} What it means
parseBrowsers() in pre-wrap-check.ts validates each `--browser=` entry against {chrome, safari, firefox} and throws on any unrecognized name, identical to the guard in the sibling oracle scripts.
Source
Thrown at scripts/pre-wrap-check.ts:63
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 parseBrowsers(value: string | null): AutomationBrowserKind[] {
const raw = (value ?? 'chrome,safari').trim()
if (raw.length === 0) return ['chrome', 'safari']
const browsers = raw
.split(',')
.map(part => part.trim().toLowerCase())
.filter(Boolean)
for (const browser of browsers) {
if (browser !== 'chrome' && browser !== 'safari' && browser !== 'firefox') {
throw new Error(`Unsupported browser ${browser}`)
}
}
return browsers as AutomationBrowserKind[]
}
const requestedPort = parseNumberFlag('port', 0)
const browsers = parseBrowsers(parseStringFlag('browser'))
const timeoutMs = parseNumberFlag('timeout', 60_000)
function printCaseResult(browser: AutomationBrowserKind, testCase: ProbeOracleCase, report: ProbeReport): void {
if (report.status === 'error') {
console.log(`${browser} | ${testCase.label}: error: ${report.message ?? 'unknown error'}`)
return
}
const sensitivity =
report.extractorSensitivity === null || report.extractorSensitivity === undefinedView on GitHub (pinned to ac49b09b7d)
Solutions
- Use only chrome, safari, or firefox (case-insensitive), e.g. `--browser=chrome,safari`.
- Omit `--browser` to get the default chrome,safari.
Example fix
# before bun run pre-wrap-check -- --browser=chromium # after bun run pre-wrap-check -- --browser=chrome
Defensive patterns
Strategy: type-guard
Validate before calling
const SUPPORTED = new Set(['chrome', 'safari', 'firefox'])
function parseBrowsers(value: string | null): ('chrome' | 'safari' | 'firefox')[] {
const parts = (value ?? 'chrome,safari').split(',').map(p => p.trim().toLowerCase()).filter(Boolean)
const bad = parts.filter(p => !SUPPORTED.has(p))
if (bad.length) {
console.error(`Unsupported browser(s): ${bad.join(', ')}. Supported: chrome, safari, firefox`)
process.exit(2)
}
return parts as ('chrome' | 'safari' | 'firefox')[]
} Type guard
const isSupportedBrowser = (v: string): v is 'chrome' | 'safari' | 'firefox' => v === 'chrome' || v === 'safari' || v === 'firefox'
Prevention
- Omit `--browser` to use the curated default.
- Keep the accepted-browser list documented in each check script.
When it happens
Trigger: Passing `--browser=ie`, `--browser=chromium`, `--browser=edge`, or any token outside the accepted trio.
Common situations: Pasting a browser list from a tool with a wider set, or assuming a Chromium alias is accepted.
Related errors
- Unsupported browser ${browser}
- Unsupported browser ${browser}
- Invalid value for --${name}: ${raw}
- Unsupported browser ${browser}; expected chrome or safari
- --step must be > 0
AI-assisted analysis of chenglou/pretext@ac49b09b7d (2026-08-12).
Data as JSON: /api/errors/36fff8e7630b760d.
Report an issue: GitHub.