chenglou/pretext · error · Error
Firefox is not currently supported for keep-all oracle check
Error message
Firefox is not currently supported for keep-all oracle checks
What it means
runBrowser() in keep-all-check.ts throws this hard guard when the requested browser is firefox. Although parseBrowsers() accepts 'firefox', the keep-all oracle probe path deliberately does not support it, so reportBrowser is forced to null and the session is never created. This is a deliberate, documented product limitation, not a bug.
Source
Thrown at scripts/keep-all-check.ts:129
report.predictedHeight === report.actualHeight &&
report.firstBreakMismatch === null
)
}
function caseRunsInBrowser(testCase: ProbeOracleCase, browser: AutomationBrowserKind): boolean {
return testCase.browsers === undefined || testCase.browsers.includes(browser)
}
async function runBrowser(browser: AutomationBrowserKind, port: number): Promise<boolean> {
const lock = await acquireBrowserAutomationLock(browser)
const reportBrowser: BrowserKind | null = browser === 'firefox' ? null : browser
const session = reportBrowser === null ? null : createBrowserSession(reportBrowser)
let serverProcess: ChildProcess | null = null
let ok = true
try {
if (session === null || reportBrowser === null) {
throw new Error('Firefox is not currently supported for keep-all oracle checks')
}
const pageServer = await ensurePageServer(port, '/probe', process.cwd())
serverProcess = pageServer.process
const requestId = `${browser}-${Date.now()}-${Math.random().toString(36).slice(2)}`
const reportServer = await startPostedReportServer<ProbeBatchReport>(requestId)
try {
const url =
`${pageServer.baseUrl}/probe?batch=keep-all` +
`&requestId=${encodeURIComponent(requestId)}` +
`&reportEndpoint=${encodeURIComponent(reportServer.endpoint)}`
const batchReport = await loadPostedReport(
session,
url,
() => reportServer.waitForReport(null),
requestId,
reportBrowser,View on GitHub (pinned to ac49b09b7d)
Solutions
- Drop firefox from the keep-all browser list: use `--browser=chrome,safari` (the default).
- If firefox support is genuinely needed, that is a feature request against keep-all-check.ts's runBrowser path, not a flag you can set.
Example fix
# before bun run keep-all-check -- --browser=chrome,firefox # after bun run keep-all-check -- --browser=chrome,safari
Defensive patterns
Strategy: validation
Validate before calling
// keep-all-check does not support firefox; filter it out before invoking
const requested = (parseStringFlag('browser') ?? 'chrome,safari')
.split(',').map(s => s.trim().toLowerCase()).filter(b => b !== 'firefox')
if (requested.length === 0) requested.push('chrome', 'safari') Prevention
- Remember the oracle scripts (keep-all, letter-spacing, pre-wrap) all hard-reject firefox even though parseBrowsers accepts it.
- Default to `--browser=chrome,safari` for these checks.
When it happens
Trigger: Running `bun run keep-all-check -- --browser=firefox` or `--browser=chrome,firefox`. Firefox passes the parseBrowsers validation but fails immediately inside runBrowser.
Common situations: A maintainer assumes the shared browser-automation layer supports firefox uniformly across all check scripts; it does for some but not the keep-all oracle.
Related errors
- Firefox is not currently supported for letter-spacing oracle
- Firefox is not currently supported for pre-wrap oracle check
- Timed out waiting for local port ${port}
- ${session.message ?? session.error}
- ${tree.message ?? tree.error}
AI-assisted analysis of chenglou/pretext@ac49b09b7d (2026-08-12).
Data as JSON: /api/errors/92dddaecd0ef8fb8.
Report an issue: GitHub.