Docs · Test format
Plain Playwright. Eject any time.
Omea's tests are @playwright/test files, stock-runnable with npx playwright test. Natural-language steps are opt-in, per-step resilience layered on top of real code — never a replacement for it, never the only representation of a test.
Eject is compilation, not a data export
Delete Omea's SDK from a repo and the suite still runs, because there was never a proprietary format underneath it — the tests you keep are the same plain Playwright files the suite always ran. Lock-in, if any, lives in the boot recipe and runner integrity, never in the file format.
How coverage instruments your tests, with zero edits
Coverage is injected through two environment variables, set on every Node process you want instrumented:
NODE_OPTIONS=--require /path/to/harness/preload.cjs
OMEA_OUT=/path/to/output/dir
OMEA_OUT is the switch: without it, the harness is a complete no-op — safe to leave NODE_OPTIONS set permanently, with zero overhead and zero behavior change when it's unset. There's no omea.config.*, no test file imports, and no package.json changes. git status during an instrumented run shows nothing touched in your repo.
What gets instrumented
- Every Node process that loads the harness gets in-process V8 precise coverage for its own application code (
node_modulesand Node built-ins excluded). @playwright/testis wrapped transparently — every test, any file, zero edits — and captures browser JS coverage via CDP when it uses thepagefixture.- An app server started alongside your tests (for example, via Playwright's
webServer) that shares the sameOMEA_OUTgets its own coverage sliced to the same per-test window, so backend coverage is attributed without forking a VM per test. better-sqlite3and Node's built-innode:sqliteare wrapped so every query inside a test's window is appended to that test's query trace.
Tested against Node 22 LTS and Node 24. Below Node 20.6 the harness doesn't load at all.
Write it natively from your agent
Your agent can write this format natively: omea ships an installable agent pack (Claude Code skill, AGENTS.md snippet, Cursor rule) that teaches when to run omea run, how to read its NDJSON verdicts, and how to write a kept-suite-accepted @playwright/test spec.
Read next
- Coverage artifacts explained — what the harness writes out, and how to read it.
- Getting started — run the whole loop with
npx @omea/cli run.