e2e-frontend-validation

e2e-frontend-validation

Popular

E2E validation workflow for frontend changes in playground packages using Playwright MCP

20Kestrelas
1.5Kforks
Atualizado 1/25/2026
SKILL.md
readonlyread-only
name
e2e-frontend-validation
description

E2E validation workflow for frontend changes in playground packages using Playwright MCP

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:

  1. Build the CLI
pnpm build:cli
  1. Start the dev server
cd packages/playground/e2e/kitchen-sink && pnpm dev
  1. Verify server is running

  2. Identify impacted routes

    • Routes are defined in packages/playground/src/App.tsx
    • Browse them ALL to verify behavior
  3. Test with Playwright MCP

    • Use browser_navigate to visit each impacted route
    • Visually verify the changes render correctly
    • Test any interactive elements modified
    • Use browser_screenshot to capture results for the user
  4. 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
    /agents agents/page.spec.ts
    /agents/:id/... agents/$agentId/page.spec.ts
    /agents/:id/chat/:chatId agents/$agentId/stream.spec.ts (if streaming)
    /tools tools/page.spec.ts
    /tools/:id tools/$toolId/page.spec.ts
    /workflows workflows/page.spec.ts
    /workflows/:id workflows/$workflowId/page.spec.ts
    /mcps mcps/page.spec.ts
    /mcps/:id/tools/:toolId mcps/$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, afterEach hook, 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() in test.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.ts file, and register it in fixtures/index.ts
    • Update types: Add the fixture name to the Fixtures union in e2e/kitchen-sink/types.ts and e2e/tests/__utils__/select-fixture.ts
    • New tools/agents/workflows: Add to the corresponding files in e2e/kitchen-sink/src/mastra/
  5. Verify Tests Pass

    cd packages/playground && pnpm test:e2e
    

    If 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/

You Might Also Like

Related Skills

fix

fix

243Kdev-testing

Use when you have lint errors, formatting issues, or before committing code to ensure it passes CI.

facebook avatarfacebook
Obter
peekaboo

peekaboo

179Kdev-testing

Capture and automate macOS UI with the Peekaboo CLI.

openclaw avataropenclaw
Obter
frontend-testing

frontend-testing

128Kdev-testing

Generate Vitest + React Testing Library tests for Dify frontend components, hooks, and utilities. Triggers on testing, spec files, coverage, Vitest, RTL, unit tests, integration tests, or write/review test requests.

langgenius avatarlanggenius
Obter
frontend-code-review

frontend-code-review

127Kdev-testing

Trigger when the user requests a review of frontend files (e.g., `.tsx`, `.ts`, `.js`). Support both pending-change reviews and focused file reviews while applying the checklist rules.

langgenius avatarlanggenius
Obter
code-reviewer

code-reviewer

92Kdev-testing

Use this skill to review code. It supports both local changes (staged or working tree) and remote Pull Requests (by ID or URL). It focuses on correctness, maintainability, and adherence to project standards.

google-gemini avatargoogle-gemini
Obter
session-logs

session-logs

90Kdev-testing

Search and analyze your own session logs (older/parent conversations) using jq.

moltbot avatarmoltbot
Obter