TesterArmy's open-source TypeScript test runner for web and mobile apps, where each test can be fully deterministic, fully agent-driven from natural-language goals, or a mix of both.
Set it up with npx e2e@latest init. The wizard asks whether you're testing web (Playwright) or mobile (iOS/Android) and which model provider to use, or none if you only want plain tests. In one test you can combine agent.act goals with ordinary locators and expect. Once an agent.act step has been verified, its recorded actions replay without a model call until the app changes. agent.assert, agent.waitFor and agent.extract always run live.
You bring your own model and infra. Any AI SDK model works, through a subscription via npx e2e login, API keys, Vercel AI Gateway, OpenRouter or a local server. Web runs on Chromium, Firefox and WebKit. Mobile runs on iOS simulators, Android emulators and physical devices, and there are packages for hosted browser and device providers. In CI it switches to one retry and a read-only cache, so CI never records, and @e2e-dev/github posts one PR comment per run. e2e explore lets the agent plan its own steps and report findings with repro steps and screenshots. e2e mcp is an MCP server that lets Claude Code, Cursor and other coding agents drive a live session, and it doesn't need a model.
The repo also ships a companion skill that makes e2e the verification layer for your agent's own work:
npx skills add tester-army/e2e --skill create-verification-skillIt looks through the repo to find how the app runs and generates a project-local verify-<app> skill. That skill launches the app, drives it through e2e mcp, pins behavior with tests, bug-bashes with e2e explore and keeps the evidence in .e2e/. It's based on @poteto's verification skills, and a generated skill doesn't count as done until it has been run end to end once. Apache-2.0, still pre-1.0.
Repo: tester-army/e2e · Docs: e2e.tester.army/docs