A TesterArmy saved test is a list of plain-language steps that a QA agent
runs in TesterArmy’s cloud. In e2e, each step becomes a line in a TypeScript
test that runs on your machine or in your CI: an agent.act or
agent.assert call, or a locator call when the step needs no judgment. A
coding agent reads your projects and tests through the TesterArmy MCP server
and writes the e2e tests.
Migrate this project's TesterArmy saved tests to e2e, one group at a time. Docs: https://e2e.tester.army/docs/migrate/testerarmy.md
- Read the migration guide above. It maps TesterArmy project settings, steps, and groups to e2e and marks what e2e does not have yet.
- If you have no
testerarmyMCP tools, add the server withnpx add-mcp --global --name testerarmy https://tester.army/mcp. If Claude Code uses a customCLAUDE_CONFIG_DIR, runclaude mcp add --transport http testerarmy https://tester.army/mcpinstead. Ask me to sign in and restart the session, then wait until I confirm. - Call
list_projectsand ask me which project to migrate. Read it withget_project,list_project_environments,list_project_credentials,list_project_memories,list_project_files,list_groups, andlist_tests. Use only read tools. Never create, update, delete, or run anything in TesterArmy. - If the project has no e2e config (
e2e.config.ts,.mts,.js, or.mjs), runnpx e2e init --yes(or the pnpm or bun equivalent), with--engine mobilefor a mobile project. Rewritetests/example.e2e.tsfor the app or delete it. - Read the e2e skill (
npx e2e guideprints it,npx e2e guide <topic>prints a topic) and follow it for every step below. - If you ran init, ask me which model to use for agent steps: a ChatGPT, GitHub Copilot, OpenCode Console, or SuperGrok subscription, an API key, or a local model. Configure it with its provider package. If it needs a sign-in, give me the
npx e2e logincommand and wait until I confirm. - Port the project into the e2e config with the guide's "Port the project" table. TesterArmy never returns passwords. Name each credential in
credentials, read its password from an environment variable, and ask me to set it. - List the groups and their tests, and ask me which group to move first. Suggest a small one, or the one with the preparation test the others need.
- For each test, read it with
get_testand write a.e2e.tsfile undertests/, one awaited call per enabled step, with the guide's "Map each step" table. Turn a preparation or login test into atest.setupthat saves a session. Where the guide says "Not yet" or "No equivalent", leave that test in TesterArmy and tell me why. - After the last
agent.assertof each test, add a locator assertion on the same end state when a label or test id names it. - Run the new files with
npx e2e run <file>and fix them until they pass. Keep the TesterArmy tests until I confirm they can go. - Summarize which tests moved, which stayed in TesterArmy, and why.
For a migration that spans several sessions, the migrate-to-e2e skill records what moved in a progress file and keeps the TesterArmy tests until you retire each one.
Connect the TesterArmy MCP server
The coding agent reads your tests from the hosted server at
https://tester.army/mcp. Add it to the coding agents on your machine:
add-mcp writes Claude Code’s entry to ~/.claude.json. If you set
CLAUDE_CONFIG_DIR, run
claude mcp add --transport http testerarmy https://tester.army/mcp instead.
Sign in when the client asks. Other ways to add the server are in
TesterArmy’s MCP setup.
The migration only reads from TesterArmy. It never edits, deletes, or runs your tests there.
Port the project
Rewrite one test
Each step becomes one awaited call. A login step becomes a setup test that
signs in one time and saves a session:
TesterArmy opens the project URL before the first step. In e2e, nothing
opens on its own, so each test starts with app.open().
Map each step
Keep the agent for a step that reads the screen to decide, spans several screens, or names no stable control. Before you swap a step for a locator, find the control’s exact name, and check the same end state.
What differs on purpose
- Tests run on your machine or in your CI, not in TesterArmy’s cloud. You choose the app URL and the device.
- The model never sees a password. The runner types it from a handle, see Signing in.
- An
agent.actstep replays its recorded actions without a model call. When the screen no longer matches, the agent takes over, see Replay cache.