e2e-frontend-validation
maintained by mastra-ai
star
20.6k
account_tree
1.5k
verified_user
MIT License
name: e2e-frontend-validation description: E2E validation workflow for frontend changes in playground packages using Playwright MCP model: claude-opus-4-5
E2E Validation for Frontend Modifications
Prerequisites
Requires Playwright MCP server. If the browser_navigate tool is unavailable, instruct the user to add it:
claude mcp add playwright -- npx @playwright/mcp@latest
Validation Steps
After completing frontend changes:
- Build the CLI
pnpm build:cli
- Start the dev server
cd packages/playground/e2e/kitchen-sink && pnpm dev
-
Verify server is running
- URL: http://localhost:4111
- Wait for the server to be ready before proceeding
-
Identify impacted routes
- Routes are defined in
packages/playground/src/App.tsx - Browse them ALL to verify behavior
- Routes are defined in
-
Test with Playwright MCP
- Use
browser_navigateto visit each impacted route - Visually verify the changes render correctly
- Test any interactive elements modified
- Use
browser_screenshotto capture results for the user
- Use
-
Write E2E Tests
Write Playwright tests covering the validated behavior. Follow the conventions below.
File Placement
Map validated routes to test file paths under
packages/playground/e2e/tests/:Route pattern Test file /agentsagents/page.spec.ts/agents/:id/...agents/$agentId/page.spec.ts/agents/:id/chat/:chatIdagents/$agentId/stream.spec.ts(if streaming)/toolstools/page.spec.ts/tools/:idtools/$toolId/page.spec.ts/workflowsworkflows/page.spec.ts/workflows/:idworkflows/$workflowId/page.spec.ts/mcpsmcps/page.spec.ts/mcps/:id/tools/:toolIdmcps/$serverId/tools/$toolId/page.spec.ts- Layout/navigation tests →
page.spec.ts - Streaming/chat tests →
stream.spec.ts
New File vs Extend Existing
- If the spec file already exists, add new
test()blocks to it. - If it doesn't exist, create a new file with the full boilerplate (imports,
afterEachhook, etc.).
Fixture Decision Tree
-
AI streaming responses (text-delta, tool calls, workflow execution) → use
selectFixture()+nanoid()for deterministic, isolated tests - Static UI, navigation, forms, deterministic tool execution → no fixture needed
Test Conventions
// Imports import { test, expect } from '@playwright/test'; import { resetStorage } from '../__utils__/reset-storage'; // Only for streaming tests: import { selectFixture } from '../__utils__/select-fixture'; import { nanoid } from 'nanoid';- Always call
resetStorage()intest.afterEach - For streaming tests, create a fresh browser context in
test.beforeEach:let page: Page; test.beforeEach(async ({ browser }) => { const context = await browser.newContext(); page = await context.newPage(); }); - Locator priority:
getByTestId>getByRole>getByLabel>locator('text=...') - Use
{ timeout: 20000 }for async/streaming content assertions - Use
nanoid()for unique chat session IDs in URLs - Verify memory persistence with
page.reload()where applicable - Use
toMatchAriaSnapshot()for stable layout assertions
Kitchen-Sink Extension
When the feature under test requires new fixtures or entities:
-
New fixtures: Add to
e2e/kitchen-sink/fixtures/, create a<name>.fixture.tsfile, and register it infixtures/index.ts -
Update types: Add the fixture name to the
Fixturesunion ine2e/kitchen-sink/types.tsande2e/tests/__utils__/select-fixture.ts -
New tools/agents/workflows: Add to the corresponding files in
e2e/kitchen-sink/src/mastra/
- Layout/navigation tests →
-
Verify Tests Pass
cd packages/playground && pnpm test:e2eIf tests fail, fix them and re-run until green.
Quick Reference
| Step | Command/Action |
|---|---|
| Build | pnpm build:cli |
| Start | cd packages/playground/e2e/kitchen-sink && pnpm dev |
| App URL | http://localhost:4111 |
| Routes | @packages/playground/src/App.tsx |
| Run tests | cd packages/playground && pnpm test:e2e |
| Test dir | packages/playground/e2e/tests/ |
| Fixtures | packages/playground/e2e/kitchen-sink/fixtures/ |
| Kitchen-sink | packages/playground/e2e/kitchen-sink/src/mastra/ |
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
GitHub Stars
20.6k
GitHub Forks
1.5k
Created
Jan 2026
Last Updated
4 months ago
tools
tools testing
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!