name: e2e-test-maker description: Create, repair, and review Gardens V2 Playwright/Synpress E2E tests in pkg/e2e. Use when adding E2E scenarios, stabilizing flaky E2E CI, deciding UI-vs-RPC setup boundaries, adding Playwright projects, using MetaMask helpers, or updating the E2E GitHub Actions workflow.
Gardens E2E Test Maker
When To Use
Use this skill for Gardens V2 end-to-end work in pkg/e2e, especially:
- Adding or repairing Playwright/Synpress tests.
- Debugging E2E CI flakiness, retries, Vercel preview selection, or
PLAYWRIGHT_BASE_URLissues. - Deciding which parts of a flow should be prepared with RPC/subgraph and which parts must be exercised through the UI.
- Adding a new test project to
pkg/e2e/playwright.config.ts. - Working with MetaMask confirmation, visible-only locators, token minting/funding, pool archive cleanup, or proposal lifecycle tests.
If the task is primarily GitHub Actions failure triage, also use the GitHub gh-fix-ci skill. If the task requires live Gardens data or contract state, combine this skill with query-subgraph, read-contracts, or write-contract as appropriate.
Workflow
- Read
references/e2e-patterns.mdbefore changing tests. It contains the current project layout, helper inventory, CI behavior, and scenario patterns. - Inspect the relevant current source files with
rg,sed, and package-local scripts. Prefer existing helpers inpkg/e2e/tests/utils/before adding new ones. - Use the UI for the behavior under test. Use RPC/subgraph only to make prerequisite state deterministic or to verify final state.
- Keep Playwright projects serial and dependency ordered. If adding a scenario, wire it into
pkg/e2e/playwright.config.tsin the intended lifecycle position. - Validate narrowly first with the target project, then run the dependent flow when credentials and network access are available.
Validation Commands
From pkg/e2e:
CI=true PLAYWRIGHT_BASE_URL="https://preview.example" pnpm exec playwright test tests/<test>.e2e.ts --project=<project-name>
For local UI:
PLAYWRIGHT_BASE_URL="http://localhost:3000" pnpm exec playwright test tests/<test>.e2e.ts --project=<project-name>
Use PLAYWRIGHT_BASE_URL; E2E_BASE_URL is not read by the Playwright config.