bitti
Plain-text web tests that run on real Chrome. One native binary drives the browser in-process through navigera: no Node, no transpile step, no driver process, and no model at run time.
# tests/shop.bt
base http://127.0.0.1:8000
before each
goto /shop
click --selector "#cookie-accept"
scenario "Adding a product counts it in the cart" @smoke
click --text "Add to cart"
expect --selector "#cart-count" text is 1
goto /cart
expect text "Your cart"
$ bitti run tests --junit report.xml
PASS tests/shop.bt:7 Adding a product counts it in the cart (557 ms)
1 passed, 0 failed in 0.9 s
API tests are .bt files too: a scenario of http steps and their
checks runs with no browser at all, in milliseconds (API tests without a
browser).
Start
- Install: Every way to install bitti, and how to check it worked.
- Quick start: One .bt file, one scenario, one run.
- Worked examples: The example suites in the repository, as they are: a shop, a sign-in, data rows and shared flows, and a Kubernetes Job.
Guides
- Test an API without a browser: Scenarios of http and exec steps that start no browser, and what each request costs.
- Run Gherkin feature files: Run .feature files as they are, beside .bt files, with their steps defined in .bt.
- Run bitti in GitHub Actions or a container: The GitHub Action, the container image, and a Kubernetes Job.
Concepts
- Flows, sign-ins and hooks: Steps shared between scenarios: flows, optional steps and conditions, signing in once per run, the hooks around scenarios, and handing a step to a person.
Reference
- The .bt format: Every top-level line, step and variable a .bt file can hold.
- Checks: expect: The expect table: every check a step can make, and how each comparison reads.
- Checks: soft, ax and screenshots:
--softfailures that fail a scenario at its end, matching the accessibility tree, and screenshot baselines and diffs. - Running: bitti run and its flags: which scenarios run, and in which browsers and apps.
- Reports and evidence: What a run prints and saves: console, jsonl, JUnit, Allure, the HTML report, video, traces, watch and shards.
- Failures and fixes: What a failure prints, fixing locators with bitti fix, and the tools that write scenarios: navigera, from-session, record, mcp.
- Config: bitti.toml: What a run takes by default from bitti.toml, the app it starts first, and named environments.
- bitti –help: The commands and each one’s options, exactly as this build prints them.
Agents
- For AI agents: What an agent gets: the skill, the MCP server with the browser and the test tools, and these docs as markdown.
- Skill: The guide
bitti skillgives an agent, as this version prints it.
Benchmarks
- Results: bitti against Playwright Test on Node and on Bun, on Playwright’s own TodoMVC suite, from one CI run: time, CPU, and runner and browser memory.
- Where bitti is not ahead: Each measure on which Playwright beat bitti in the same run.
- The 40-scenario suite: bitti’s 40-scenario suite and its Playwright Test twin, on a shop and a gauntlet of awkward pages, which CI runs on three operating systems.
Project
- Changelog: What changed in each release, and what is on the way.
- Contributing: How to build bitti against navigera, run its tests, and keep its performance gate green.
- Security: What bitti protects and how, and how to report a problem.
Built from commit c612c9e, 2 commits after v0.3.0, of 2026-11-13; bitti --version says bitti 0.3.1. These docs are ahead of the 0.3.0 release: what the changelog lists under Unreleased is not in 0.3.0 yet.