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

  1. Drop firefox from the keep-all browser list: use `--browser=chrome,safari` (the default).
  2. 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

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


AI-assisted analysis of chenglou/pretext@ac49b09b7d (2026-08-12). Data as JSON: /api/errors/92dddaecd0ef8fb8. Report an issue: GitHub.