Test runner
Playwright-shaped runner for Rust. Parallel workers, auto-retrying assertions, DAG-resolved fixtures, hooks, retries with flaky detection, snapshots, traces, and a wide set of reporters. Runs the same execution pipeline whether tests are written in Rust or as Gherkin features (with Rust or JavaScript / TypeScript step bodies).
Features
- Parallel execution. N workers, each with its own browser. MPMC
work-stealing dispatch. Browsers launch concurrently (
tokio::join!), saving 80–100 ms per extra worker on warm machines. - Serial suites.
SuiteMode::Serialruns tests in order and skips the rest on first failure. - Auto-retrying assertions.
expect()polls on the Playwright schedule (100, 250, 500, 1000, 1000, ...ms). - Fixtures. DAG-resolved, scoped (global / worker / test), injected
via
FixturePool. - Hooks.
#[before_all],#[after_all],#[before_each],#[after_each], per-suite per-worker tracking. - Retries with flaky detection. Failed tests re-dispatched; final
status is
Flakyif a later attempt passes. - Reporters. list, line, dot, progress, JSON (Playwright's shape),
JUnit, HTML, blob +
merge-reports, GitHub annotations, markdown, TAP, TeamCity, CTRF, allure, rerun, Cucumber Messages, cucumber-json, usage, null — multiplexed via an event bus. See Reporters. - Snapshots. Text
.snapfiles with unified diff, plus pixel-diff PNG snapshots. - Traces. Playwright-compatible ZIP traces (viewable with
npx playwright show-trace). - Filters.
--grep,--grep-invert(-G),--tag,--shard,--last-failed,--forbid-only,--project. - Order.
--shuffleruns files, and tests in parallel mode, in a random order and prints the seed;--shuffle <seed>repeats it. - Reporters.
--reporterreplaces the configured reporters;--add-reporteradds one on top of them.
Entry points
- Rust —
#[ferritest],ferridriver_test::main!(),cargo test-driven. - BDD — Gherkin features with Rust or JS / TS step bodies via
ferridriver bdd. expectmatchers — all 38 matchers with auto-retry.- Fixtures and hooks — wiring test state.
- Configuration —
ferridriver.{toml,yaml,json}, env vars, CLI flags.