Skip to content

ci(e2e): run the dashboard e2e suite on pull requests and main - #206

Merged
stewartjarod merged 1 commit into
mainfrom
ci/e2e-workflow
Oct 28, 2026
Merged

stewartjarod merged 1 commit into
mainfrom
ci/e2e-workflow

Conversation

@stewartjarod

Copy link
Copy Markdown
Contributor

Stacked on #205. Adds .github/workflows/e2e.yml. It runs the suite on PRs into main and on pushes to main, skipping website, docs, plans, and Markdown-only changes.

A run replays the agent steps recorded in apps/e2e/.e2e/cache, which is now committed. In a fresh worktree with CI=1 and no .env.local, all 29 passed in about 110 seconds. Cost was $0.003, one model call for the single agent.assert. Unreplayed, the same run cost $0.11.

Getting replays to work outside my machine took two fixes:

  • Recordings store the start path, and the workspace slug changes every run. Agent steps now take it as unique(slug), which the runner swaps in at replay.
  • A cold next dev compile outlasted the 5s assertion default on the first visit to each route. It's 30s now.

The job uses TEST_DATABASE_URL, the Neon branch test-web uses. e2e only inserts uniquely named rows, so it can't delete a fixture test-web reads. It keeps its own concurrency group. Sharing test.yml's would let a queued e2e run cancel a pending Test run, and Test gates the deploy.

AI_GATEWAY_API_KEY is set as a repo secret. Uploaded artifacts are the report, JUnit, and traces. The app log stays out because e2e writes it unredacted.

If a UI change breaks a recording, CI still passes on the live agent but pays for it every run. The fix is pnpm test:e2e locally, then commit the changed cache files. docs/agents/ci-and-deploy.md has the note.

This PR targets test/e2e-dashboard, so the workflow won't run here. Once #205 merges and this retargets to main, push once or close and reopen to get the first run.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BLzw17iv19ctMndm8WmVGz

@vercel

vercel Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
wraps-web Ready Ready Preview Oct 28, 2026 4:48pm UTC
wraps-website Ready Ready Preview Oct 28, 2026 4:48pm UTC

Request Review

The suite only ran on a laptop, so a broken signup or onboarding could
merge unnoticed. CI starts next dev on the runner with TEST_DATABASE_URL
and replays the agent steps recorded in the committed .e2e/cache, so a
run costs one model judgment instead of every step.

Recordings store the start path, and the workspace slug changed every
run, so nothing replayed outside the machine that recorded it. Agent
steps now take the slug as unique(), which the runner swaps in at
replay. A cold next dev also outlasted the 5s assertion default on the
first visit to each route.

The workflow keeps its own concurrency group: sharing test.yml's would
let a queued e2e run cancel a pending Test run, which gates deploys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BLzw17iv19ctMndm8WmVGz
@stewartjarod
stewartjarod merged commit 95dcd40 into main Oct 28, 2026
18 of 19 checks passed
@stewartjarod
stewartjarod deleted the ci/e2e-workflow branch October 28, 2026 16:48

This branch was successfully deployed

2 active deployments
Preview – wraps-website — e4955350 Deployed Oct 28, 2026 by vercel[bot]
Preview – wraps-web — e4955350 Deployed Oct 28, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant