{"record":{"id":"dda0c87fff97c774","repo":"chenglou/pretext","slug":"firefox-is-not-currently-supported-for-pre-wrap-or","errorCode":null,"errorMessage":"Firefox is not currently supported for pre-wrap oracle checks","messagePattern":"Firefox is not currently supported for pre-wrap oracle checks","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"scripts/pre-wrap-check.ts","lineNumber":108,"sourceCode":"function reportIsExact(report: ProbeReport): boolean {\n  return (\n    report.status === 'ready' &&\n    report.diffPx === 0 &&\n    report.predictedLineCount === report.browserLineCount &&\n    report.predictedHeight === report.actualHeight\n  )\n}\n\nasync function runBrowser(browser: AutomationBrowserKind, port: number): Promise<boolean> {\n  const lock = await acquireBrowserAutomationLock(browser)\n  const reportBrowser: BrowserKind | null = browser === 'firefox' ? null : browser\n  const session = reportBrowser === null ? null : createBrowserSession(reportBrowser)\n  let serverProcess: ChildProcess | null = null\n  let ok = true\n\n  try {\n    if (session === null || reportBrowser === null) {\n      throw new Error('Firefox is not currently supported for pre-wrap oracle checks')\n    }\n\n    const pageServer = await ensurePageServer(port, '/probe', process.cwd())\n    serverProcess = pageServer.process\n    const requestId = `${browser}-${Date.now()}-${Math.random().toString(36).slice(2)}`\n    const reportServer = await startPostedReportServer<ProbeBatchReport>(requestId)\n\n    try {\n      const url =\n        `${pageServer.baseUrl}/probe?batch=pre-wrap` +\n        `&requestId=${encodeURIComponent(requestId)}` +\n        `&reportEndpoint=${encodeURIComponent(reportServer.endpoint)}`\n      const batchReport = await loadPostedReport(\n        session,\n        url,\n        () => reportServer.waitForReport(null),\n        requestId,\n        reportBrowser,","sourceCodeStart":90,"sourceCodeEnd":126,"githubUrl":"https://github.com/chenglou/pretext/blob/ac49b09b7d83ede19581fa94a8b892b07d309baf/scripts/pre-wrap-check.ts#L90-L126","documentation":"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.","triggerScenarios":"Running `bun run pre-wrap-check -- --browser=firefox` or including firefox in the list. Passes parse validation, fails immediately in runBrowser.","commonSituations":"A maintainer expects firefox parity; the pre-wrap probe deliberately omits it.","solutions":["Remove firefox: use `--browser=chrome,safari` (default).","Adding firefox support is a feature change to pre-wrap-check.ts runBrowser, not a runtime flag."],"exampleFix":"# before\nbun run pre-wrap-check -- --browser=firefox\n\n# after\nbun run pre-wrap-check -- --browser=chrome,safari","handlingStrategy":"validation","validationCode":"// pre-wrap-check does not support firefox; filter it out before invoking\nconst requested = (parseStringFlag('browser') ?? 'chrome,safari')\n  .split(',').map(s => s.trim().toLowerCase()).filter(b => b !== 'firefox')\nif (requested.length === 0) requested.push('chrome', 'safari')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["The oracle scripts (keep-all, letter-spacing, pre-wrap) all hard-reject firefox despite parseBrowsers accepting it.","Default to `--browser=chrome,safari` for pre-wrap checks."],"tags":["browser-automation","firefox","unsupported","cli"],"backgroundTag":null,"analyzedSha":"ac49b09b7d83ede19581fa94a8b892b07d309baf","analyzedAt":"2026-08-12T17:03:16.263Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}