Rust engine, four backends
One Browser/Page/Locator surface dispatching to CDP over pipes (default), CDP over WebSocket, Playwright WebKit, and Firefox over WebDriver BiDi. Enum dispatch — no vtable cost.
Playwright-compatible API. Four backends behind one surface. Test runner, BDD with native JS/TS step bodies, and an MCP server — one binary.
One Browser/Page/Locator surface dispatching to CDP over pipes (default), CDP over WebSocket, Playwright WebKit, and Firefox over WebDriver BiDi. Enum dispatch — no vtable cost.
@ferridriver/node ships the same Browser/Page/Locator/Frame/BrowserContext to Node.js and Bun via NAPI-RS. The Rust engine does the work; the JS layer is a thin typed wrapper.
#[ferritest] in Rust. Parallel workers, DAG-resolved fixtures, hooks, retries with flaky detection, 38 auto-retrying expect matchers, snapshots, Playwright-compatible traces.
Gherkin backed by the Page API. Step bodies in Rust or JavaScript/TypeScript — TS/JS files bundle to QuickJS bytecode once and run through the same runner. No Node or Bun in the loop.
Scripting-focused MCP server with 10 tools. run_script runs sandboxed JavaScript against the live session with full Page / Context / HttpClient bindings. Multi-step automation in one LLM turn.
`ferridriver` is the only thing to install. MCP server, BDD runner, script runner, test wrapper, browser installer — all subcommands.
Copy-paste patterns for login + saved auth state, network mocking, file upload/download, multi-tab, mobile emulation, screenshots, traces, and CI on GitHub Actions.
We do not ship position-stability checks or codegen yet. The comparison page lists every gap against Playwright, Puppeteer, Selenium, and Cypress.
Common install issues, flake patterns, MCP setup quirks, CI fixes, and an FAQ. Hit a problem in 5 minutes, find the fix in 30 seconds.