chenglou/pretext · error · Error

Firefox is not currently supported for pre-wrap oracle check

Error message

Firefox is not currently supported for pre-wrap oracle checks

What it means

runBrowser() in pre-wrap-check.ts hard-rejects firefox: parseBrowsers accepts it, but the pre-wrap oracle probe path sets reportBrowser to null for firefox and throws before creating a session. A deliberate, consistent limitation across the oracle check family.

Source

Thrown at scripts/pre-wrap-check.ts:108

function reportIsExact(report: ProbeReport): boolean {
  return (
    report.status === 'ready' &&
    report.diffPx === 0 &&
    report.predictedLineCount === report.browserLineCount &&
    report.predictedHeight === report.actualHeight
  )
}

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 pre-wrap 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=pre-wrap` +
        `&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. Remove firefox: use `--browser=chrome,safari` (default).
  2. Adding firefox support is a feature change to pre-wrap-check.ts runBrowser, not a runtime flag.

Example fix

# before
bun run pre-wrap-check -- --browser=firefox

# after
bun run pre-wrap-check -- --browser=chrome,safari
Defensive patterns

Strategy: validation

Validate before calling

// pre-wrap-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 pre-wrap-check -- --browser=firefox` or including firefox in the list. Passes parse validation, fails immediately in runBrowser.

Common situations: A maintainer expects firefox parity; the pre-wrap probe deliberately omits it.

Related errors


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