chenglou/pretext · error · Error
Firefox is not currently supported for letter-spacing oracle
Error message
Firefox is not currently supported for letter-spacing oracle checks
What it means
runBrowser() in letter-spacing-check.ts hard-rejects firefox: even though parseBrowsers accepts it, the letter-spacing oracle probe path sets reportBrowser to null for firefox and throws before creating a session. This is a deliberate, consistent limitation shared with the other oracle checks.
Source
Thrown at scripts/letter-spacing-check.ts:208
predictedLineCount: report.predictedLineCount ?? null,
browserLineCount: report.browserLineCount ?? null,
geometryMatches,
firstBreakMismatch: report.firstBreakMismatch ?? null,
extractorSensitivity: report.extractorSensitivity ?? null,
message: report.message ?? null,
}
}
async function runBrowser(browser: AutomationBrowserKind, port: number): Promise<OracleResult[]> {
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
const results: OracleResult[] = []
try {
if (session === null || reportBrowser === null) {
throw new Error('Firefox is not currently supported for letter-spacing 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=letter-spacing` +
`&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
- Remove firefox from the list: `--browser=chrome,safari` (default).
- Adding firefox support is a feature change to letter-spacing-check.ts runBrowser, not a runtime flag.
Example fix
# before bun run letter-spacing-check -- --browser=firefox # after bun run letter-spacing-check -- --browser=chrome,safari
Defensive patterns
Strategy: validation
Validate before calling
// letter-spacing-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
- The oracle scripts (keep-all, letter-spacing, pre-wrap) all hard-reject firefox despite parseBrowsers accepting it.
- Default to `--browser=chrome,safari`.
When it happens
Trigger: Running `bun run letter-spacing-check -- --browser=firefox` or including firefox in the list. It clears the parse step but fails immediately in runBrowser.
Common situations: A maintainer expects firefox parity across check scripts; the letter-spacing probe deliberately omits it.
Related errors
- Firefox is not currently supported for keep-all oracle check
- 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/e5478bcd36a1ccf4.
Report an issue: GitHub.