playwright-e2e
Playwright E2E Test Workflow
Three-agent workflow for generating end-to-end tests for the Opik application:
- Planner -> Explores the Opik UI, generates a markdown test plan with fixture/page-object references
- Generator -> Transforms the plan into executable Playwright tests following Opik conventions
- Healer -> Automatically fixes failing tests with Opik-specific debugging knowledge
When to Use
Use when developer requests E2E test generation or repair:
- "Generate an E2E test for the new dashboard"
- "Create automated test for the upload flow"
- "Add happy path test for experiment creation"
- "Fix the failing prompts test"
Prerequisites
# Opik must be running locally
# Frontend at http://localhost:5173
# Backend healthy
# Playwright environment
cd tests_end_to_end/typescript-tests
npm install
npx playwright install chromium
Knowledge Base
These context files provide the domain knowledge agents need to produce accurate tests:
- opik-app-context.md - Opik entities, URL structure, dual SDK/UI pattern, Flask bridge architecture
- test-conventions.md - Import patterns, naming, tags, annotations, locator preferences, waiting strategies
- page-object-catalog.md - All page objects with method signatures and constructor info
- fixture-catalog.md - Fixture hierarchy, types, cleanup behavior, import paths
Workflow Phases
Phase 1: Planning
Agent: agents/playwright-test-planner.md
Input: Running Opik app + feature description
Output: tests_end_to_end/typescript-tests/specs/{feature-name}.md
Uses seed test: tests/seed-for-planner.spec.ts
Phase 2: Generation
Agent: agents/playwright-test-generator.md
Input: Markdown test plan from specs/
Output: tests_end_to_end/typescript-tests/tests/{feature-area}/{test-name}.spec.ts
Uses existing fixtures and page objects. References test-conventions.md for all coding standards.
Phase 3: Healing
Agent: agents/playwright-test-healer.md
Input: Failing test + error info
Output: Passing test or test.fixme() if the feature is genuinely broken
Directory Structure
tests_end_to_end/
├── test-helper-service/ # Flask service bridging TS tests to Python SDK
├── test_files/ # Test attachments (images, audio, PDFs)
├── installer_utils/ # Shell scripts for environment checks
└── typescript-tests/
├── specs/ # Markdown test plans (planner output)
├── tests/ # Executable tests (generator output)
│ ├── projects/
│ ├── datasets/
│ ├── experiments/
│ ├── prompts/
│ ├── tracing/
│ ├── feedback-scores/
│ ├── playground/
│ ├── online-scoring/
│ └── seed-for-planner.spec.ts
├── fixtures/ # Test fixtures (base -> feature-specific)
├── page-objects/ # Page Object Model classes
├── helpers/ # TestHelperClient, random, wait utilities
├── config/ # Environment configuration
└── playwright.config.ts # Playwright configuration