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
Safety: Verify Local Config
Before running any tests or SDK operations, check ~/.opik.config. The Python Opik SDK (used by the Flask test helper service) reads this file. If it points to a cloud environment, the workflow will accidentally create real data there.
cat ~/.opik.config
If url_override points to anything other than http://localhost:5173/api, back up and fix it:
cp ~/.opik.config ~/.opik.config.bak 2>/dev/null || true
cat > ~/.opik.config << 'EOF'
[opik]
url_override = http://localhost:5173/api
workspace = default
EOF
After the workflow is complete, remind the user to restore their config: cp ~/.opik.config.bak ~/.opik.config
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
More from comet-ml/opik
typescript-sdk
TypeScript SDK patterns for Opik. Use when working in sdks/typescript.
47diagram-generation
Generate self-contained HTML architecture diagrams. Use when creating visual diagrams for PRs, task plans, or architectural explanations.
28documentation
Feature documentation and release notes patterns. Use when documenting changes, writing PR descriptions, or preparing releases.
27opik-frontend
React frontend patterns for Opik. Use when working in apps/opik-frontend, on components, state, or data fetching.
24python-sdk
Python SDK patterns for Opik. Use when working in sdks/python, on SDK APIs, integrations, or message processing.
24opik-backend
Java backend patterns for Opik. Use when working in apps/opik-backend, designing APIs, database operations, or services.
22