This site is available as Markdown for AI agents. For the full index, see llms.txt.
AI-native · MCP-native · local-first

Your agent writes the E2E tests. You review and commit.

unotest is AI-native end-to-end testing. Your AI agent drives your real app over MCP and writes clean, reviewable tests in your repo — for web and for iOS.

Works with Claude Code · Cursor · Codex

Full control

AI does the work. You keep control.

The whole point: speed from the agent, ownership stays with you.

Plain .js in your repo

Tests are ordinary JavaScript in unotest/e2e/*.js. Git, code review, CI — no proprietary format, no binary blob.

No silent fixes

agent_fix composes context and a suggestion — it never calls an LLM itself and never applies a patch on its own. You read the diff and commit.

Runs locally

Everything runs on your machine. Your app never leaves it. No cloud, no account to start.

Safe to run blindly

Scenarios execute in a sandboxed AST interpreter — no require, no fetch, no filesystem. AI-generated tests can run without surprises.

What's new

unotest 0.56.0

Released 30 October 2026.

A test knows its environments

// @env local, dev above a test keeps it to those environments. e2e --env prod leaves it out as skipped, with the reason, without starting a browser, and lint --env prod does not check it against a host it never meets.

Every migration note in one place

npx @unotest/web upgrade-check prints each Migration note between the version your suite pins and the one that runs, oldest first, so an upgrade across several releases is one list to read instead of a changelog to search.

Cookies and requests, said exactly

hasCookie('session') tells a missing cookie from an empty one, and setCookie fails when the browser drops the cookie. waitForRequest('**/api/save', {method: 'POST'}) takes only the POST, so a GET to the same path no longer gets in the way.

Pick your platform

Same idea, two surfaces — the web and iOS.