tester-army/e2e

verify

Prove a change to the e2e runner, an engine, the CLI, a reporter, the MCP server, or the docs works the way a user sees it - the real CLI against the testbed and benchmark apps, headed and on video when it matters, main against the branch for fixes.

소스 보기
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

Verify

Every change ships with evidence from the real thing. Unit tests passing is not evidence that the CLI prints the right line, a locator finds the node on a real page, or an agent step replays. The testbed and the benchmarks are the app here: they consume the built packages the way a user does. Use this skill in the loop, not only at the end: change, build, run, look, repeat.

Setup

bash
pnpm install --frozen-lockfile
pnpm --filter @e2e-dev/web exec playwright install chromium
pnpm build                    # every consumer below runs dist; rebuild after each change

A stale dist is the most common false result. Rebuild before trusting any run, and after switching branches.

Pick the surface

ChangeRunProves
Runner, collect, locator, config, sessions, CLI flagsthe testbed suite, or the file covering itThe built CLI end to end on a deterministic app
Reporters (list, json, markdown, junit)the testbed file plus test:stressThe printed and written output, hostile titles included
@e2e-dev/webthe testbed file, then the web benchmark's tests/Real Chromium on plain and hard surfaces
Agent (src/agent/), prompts, trace cachethe web benchmark's tests-agent/ replay, then --no-cache --ai-traceReplay still hits, and the live agent still reaches the goal
@e2e-dev/mobilethe mobile benchmark on a simulator or emulatorReal devices; see apps/mobile-benchmark
e2e mcpthe e2e MCP server on the testbedThe tools as a coding agent sees them
e2e init, packaging, the skillpacked tarballs in a scratch project under /tmpWhat a new user gets from npm
Docs pagespnpm docs:devThe rendered page
@e2e-dev/githubthe PR's own e2e-github commentsThe comment a user's PR gets

Commands (run from the app directory; call the CLI directly, since pnpm run <script> -- --flag forwards the -- and the CLI reads the flag as a file):

bash
cd apps/testbed && node node_modules/e2e/dist/cli/bin.js run tests/todos.e2e.ts
cd apps/web-benchmark && pnpm run build     # the Next.js app, once per scenario change
cd apps/web-benchmark && node node_modules/e2e/dist/cli/bin.js run tests/<scenario>.e2e.ts
cd apps/web-benchmark && node node_modules/e2e/dist/cli/bin.js run --config e2e.agent.config.ts
pnpm test:testbed && pnpm test:web-benchmark          # the whole gate, as CI runs it

Add a deterministic test next to the behavior when it must stay proven: a testbed page plus test for a runner feature, a benchmark scenario for a hard surface (keep scenario diffs minimal, never fix a planted bug). Tests follow skills/e2e, the consumer skill; this repo is its first consumer.

Agentic runs need AI_GATEWAY_API_KEY. The benchmark agent suites replay their committed recordings and call the model only for a step with none, as CI does; a step that spends a model call there means its recording went stale. Go live with --no-cache --ai-trace only when the change is to the agent, and read the trace with unbox-ai (compare main against the branch), never by opening it. Re-recorded entries are committed in the same PR ("Committed recordings" in AGENTS.md).

The MCP server

.mcp.json registers e2e mcp on the testbed. open_session, then call {tool: "observe"}, locate, screenshot, and the action verbs. Pass config: "../web-benchmark/e2e.config.ts" to open_session for a benchmark. The server process runs the dist it started with: after a rebuild, restart it (/mcp in Claude Code) before verifying MCP or engine changes through it. Several sessions can be open at once (--max-sessions, default 4); pass the session id to every call and close_session when done.

Use it to write locators (locate prints the screen.* call), to look at a surface before testing it, to verify changes to the MCP tools themselves, and to record a video of what you drove when the engine records video (both web and mobile do): start_recording once the screen is set up, stop_recording for the file paths.

Drive it like a user

  • Run the built CLI, not a unit test harness. Read what it prints and what it

writes (.e2e/report.json, --reporter list,markdown for .e2e/summary.md and .e2e/failures/).

  • Exercise the failure path too: a change to an error code, a timeout, or a

policy refusal is verified by triggering it and reading the message a user gets.

  • Check the side effects: artifacts land where the docs say, and a filled

secret stays out of every file under .e2e/ (grep -r the value).

  • APP_ALREADY_RUNNING means another checkout's run holds the app port.

Wait for it or ask; never stop a process you did not start.

  • Mobile: follow apps/mobile-benchmark/README.md for devices. One run per

device at a time.

Evidence

The PR must show it working (writing-pr). Report the surface, what you ran, and what you saw, with media:

  • Terminal output: paste the relevant lines of the CLI output as a

fenced text block (ANSI stripped, paths trimmed). This is the primary evidence for runner, CLI, and reporter changes.

  • Video: --video (add --headed to watch it) records every attempt to

.e2e/artifacts/<target>/<test>/.../attempt-<n>/video/: video.webm from @e2e-dev/web, video.mp4 from @e2e-dev/mobile. Attach it for engine, locator, and agent changes a viewer can see.

  • Stills: cut a frame from the video

(ffmpeg -ss <seconds> -i <video> -frames:v 1 after.png), or screenshot the docs page.

  • Bug fixes, main vs branch: write the regression test first and run it

while the checkout still matches main, so the failure is captured. Already changed the code? Build main beside it: git worktree add /tmp/e2e-main origin/main, then pnpm install --frozen-lockfile && pnpm build there and run the same command in both.

  • Upload: gh pr create|edit --body-file body.md --attach ./after.png --attach ./video.webm

(gh 2.99+) uploads each file, rewrites markdown image paths in the body, and appends videos as players. With an older gh, drag the files into the PR in the browser, or say the media is local and why.

If something could not be verified, say so and name the blocker. A confident claim without evidence is worse than "inconclusive".

Cleanup

e2e run stops the apps it started. close_session stops the MCP session's. Remove a /tmp/e2e-main worktree with git worktree remove when done.

같은 저장소의 Skills

더 많은 Skills

모든 Skills
tester-army
커뮤니티

create-verification-skill

Generate a project-local verify- skill on top of e2e, so any coding agent can launch the app, check it is worth driving, exercise a feature the way a user does, keep evidence, and bug bash it. Writes the skill, a feature map with one explore charter per feature, and proves it once. Use for /create-verification-skill, "make a verification skill for this repo", or when a project has no scripted way to prove UI behavior.

설치 수
5
GitHub Stars
9.6천
업데이트
10월 12일
tester-army
커뮤니티

e2e

Writes, runs, and debugs end-to-end tests for web and mobile apps with e2e, the agentic test runner, which mixes agent.act goals with exact locator assertions on a Playwright browser or an iOS or Android device. Also drives a project's running app live over the e2e MCP server to look at a screen, check a UI change, take a screenshot or record a video, and try a locator; and runs bug bashes, parallel e2e explore runs with each bug proven by a repro test. Use when a project depends on e2e or has a

설치 수
7
GitHub Stars
9.5천
업데이트
10월 12일
tester-army
커뮤니티

babysit

Drive an open tester-army/e2e PR through conflicts, review bots, and CI until it is green with every thread handled, then label it Ready for Human Review. Use after opening a PR, or when asked to babysit, watch, monitor, check on, or get a PR green.

설치 수
3
GitHub Stars
1.8천
업데이트
10월 2일
tester-army
커뮤니티

ship-pr

Take finished work in tester-army/e2e to a PR a human can review without fighting CI or bots - checks, verification against the built packages, a fresh-context self-review, the PR itself, then babysitting to the Ready for Human Review label. Use whenever you are asked to open, create, ship, or submit a PR, or when implementation is done and the next step is review.

설치 수
3
GitHub Stars
1.8천
업데이트
10월 2일