Skip to content

Firefox engine ​

The Firefox engine is a real Gecko that boots in the page and installs your extension, in place of the Chromium emulator. Reach for it when you want Firefox's own verdict on a build, in Firefox's own words.

Quick start ​

text
preview-firefox

Press Switch to Firefox in the actions bar above the preview. The address gains a /firefox suffix, the engine boots, and the build installs. Type the command above in the terminal and it prints whether the engine is alive, which build it judged, and the verdict.

How it works ​

A switch, not a second page ​

The actions bar names the runner, Chromium runner or Firefox runner, with a link to switch. Each engine has its own address: /new/chromium and /new/firefox, /drafts/<id>/chromium and /drafts/<id>/firefox. The switch is drawn only when the browser can run the engine: WebAssembly JSPI, a viewport at least 768 px wide, and a fine pointer such as a mouse.

Who can open it ​

The engine answers only to logins on its own allowlist, which is separate from the workbench's. Any other login, and any address outside the workbench, gets a 404. Today that list is the owner's.

What Gecko gets ​

Firefox refuses background.service_worker, so the build is adapted on its way to Gecko: service_worker becomes background.scripts, firefox:-prefixed manifest keys apply, chromium:-prefixed keys drop, and a browser_specific_settings.gecko.id is added. Scripts and styles stay the Chromium build, so an API only Chrome ships can still fail there, and whatever Gecko refuses is reported in its own words.

Reading the verdict ​

preview-firefox prints the engine's liveness, the current build, and one of three verdicts: booted and painted the first build, applied, or refused with Gecko's sentence. A refusal exits non-zero. A verdict for an older build carries a [stale: ...] mark until the newer build is answered. The same refusal sentence appears above the terminal as Firefox refused this build, and preview-errors carries a firefox: line while the engine is up.

Reference ​

AddressEngine
/new/chromium, /drafts/<id>/chromiumChromium emulator
/new/firefox, /drafts/<id>/firefoxReal Gecko
RequirementValue
WebAssembly JSPIRequired
Viewport768 px or wider, with a fine pointer
LoginOn the engine allowlist
Output of preview-firefoxMeaning
firefox: booted and painted the first buildThe engine is up and the first build installed
firefox: appliedThe current build installed
firefox refused: <sentence>Gecko refused the install, exit 1
No verdict yet: the engine is booting or the first build is still applying.Wait and run it again

When it fails ​

  • There is no Switch to Firefox link. The browser has no WebAssembly JSPI, the window is narrower than 768 px, or the pointer is coarse. Open the workbench on a desktop Chrome or Edge 137 or newer, or Firefox 153 or newer.
  • The /firefox address answers Not found. Your login is not on the engine's allowlist. The Chromium address still works.
  • preview-firefox says no Firefox tab has spoken yet. The engine has not booted. Switch to Firefox and wait for the first paint, then run it again.
  • Gecko refused the build. Read the sentence word for word. A background.service_worker refusal means the adaptation did not apply, and a refused permission is one Firefox does not grant.
  • The download still says chrome. The built zip is the Chromium build. The Gecko adaptation happens in the preview only.

Next ​