From test-engineering
Generic E2E web test authoring contracts. Defines universal error taxonomy (E1-E6), agent behavior contracts for all 5 agents when test_type=e2e, knowledge management conventions, and browser exploration interface. Framework-agnostic -- does NOT define selector rankings, wait hierarchies, fix strategies, or error regex patterns. Those belong in framework-specific reference files under skills/e2e/frameworks/.
npx claudepluginhub issacchaos/local-marketplace --plugin test-engineeringThis skill uses the workspace's default tool permissions.
**Version**: 1.0.0
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Version: 1.0.0
Category: Testing
Languages: Cross-language (E2E frameworks span languages)
Purpose: Define universal contracts for E2E web test authoring that all agents reference when test_type=e2e
The E2E Testing Skill provides the generic contract layer for end-to-end web test authoring within Dante. When framework detection identifies an E2E framework (Playwright, Cypress, Selenium, etc.) as primary and sets test_type=e2e, all five agents reference this skill for universal E2E concepts: error taxonomy, agent behavior expectations, knowledge management, and browser exploration.
This skill is Level 1 of a two-level architecture:
skills/e2e/frameworks/{framework}.md): Framework-specific references -- defines HOW (selector APIs, wait patterns, error regex, fix strategies, CLI workflows)Agents always load Level 1. They load Level 2 based on the detected framework. Adding a new E2E framework means creating one framework reference file -- no agent modifications required.
project_path: Path to the project root directory
e2e_framework: Detected E2E framework name (e.g., "playwright", "cypress", "selenium")
test_type: "e2e"
base_url: Application base URL extracted from framework config (e.g., "http://localhost:3000")
e2e_config_path: Path to framework config file (e.g., "playwright.config.ts")
e2e_test_targets: List of user flow test targets identified during analysis
- flow_name: Name of the user flow (e.g., "Login flow", "Checkout flow")
entry_point: Starting URL or route
steps: High-level description of flow steps
priority: Importance ranking (critical, high, medium, low)
selector_strategies: Loaded from framework reference file (not defined here)
known_patterns: Loaded from .dante/e2e-knowledge/ if present
e2e_knowledge_loaded: Boolean indicating whether project knowledge was found and loaded
E2E test failures fall into 6 universal categories (E1-E6). These categories are framework-agnostic -- every E2E framework can produce errors in each category. The specific error messages and regex patterns differ per framework and are defined in skills/e2e/frameworks/{framework}.md.
Each E2E error category maps to a validate-agent subcategory (1f-1k), extending the existing unit test subcategories (1a-1e).
| Category | Name | Subcategory | Description |
|---|---|---|---|
| E1 | Selector Errors | 1f | Element not found, ambiguous match, stale reference, not interactable |
| E2 | Timing Errors | 1g | Timeout waiting for element/condition, race condition between actions |
| E3 | Navigation Errors | 1h | Page load failure, URL mismatch, redirect loop |
| E4 | Network/Mock Errors | 1i | Unexpected API response, missing mock, CORS failure |
| E5 | Browser Errors | 1j | Browser crash, WebSocket disconnect, resource exhaustion |
| E6 | UI Assertion Errors | 1k | Expected vs actual UI state mismatch (text, visibility, attribute) |
The validate-agent uses subcategories 1a-1e for unit test errors. When test_type=e2e, subcategories 1f-1k extend the taxonomy:
Category 1 (Test Bug) Subcategories:
Unit Test Errors (existing):
1a: Import/Syntax Error
1b: Fixture/Setup Error
1c: Assertion Logic Error
1d: Mock/Stub Error
1e: Async/Timing Error
E2E Test Errors (new, when test_type=e2e):
1f: Selector Issue (E1) -- element targeting problem in test code
1g: Timing Issue (E2) -- insufficient or incorrect wait strategy in test
1h: Navigation Issue (E3) -- incorrect URL or navigation expectation in test
1i: Network/Mock Issue (E4) -- missing or misconfigured API mock in test
1j: Browser Issue (E5) -- usually escalates to Category 3 (Environment)
1k: UI Assertion Issue (E6) -- incorrect expected value in test assertion
Each E2E error is classified into one of three top-level categories, consistent with existing Dante error categorization:
Classification heuristic:
.dante/e2e-knowledge/known-issues.md, use the stored classificationSee error-classification.md for the complete error taxonomy reference.
When test_type=e2e, each agent adapts its behavior. The contracts below describe WHAT each agent does differently -- the specific APIs, patterns, and strategies come from the framework reference file.
When test_type=e2e, the analyze-agent shifts from function-level analysis to user-flow analysis:
skills/e2e/SKILL.md) for generic contractsskills/e2e/frameworks/{framework}.md for framework-specific detailsbase_url to determine if browser exploration should activate (see browser-exploration.md App Availability Check).dante/e2e-knowledge/ directory; load known-issues.md and project-patterns.md if present (see knowledge-management.md)Output additions: test_type: "e2e", base_url, page_structures (from snapshots if available), e2e_knowledge_loaded: true/false, e2e_config (parsed framework config), browser_exploration: active/disabled, browser_exploration_reason
When test_type=e2e, the write-agent generates flow-based E2E tests:
skills/templates/{language}-{framework}-template.md"user can log in with valid credentials", "shopping cart updates when item is added"When test_type=e2e, the execute-agent manages browser-based test execution:
webServer config in framework config, verify base_url is accessible before running testsskills/result-parsing/parsers/{framework}-parser.mdWhen test_type=e2e, the validate-agent applies the E2E error taxonomy:
skills/e2e/frameworks/{framework}.md.dante/e2e-knowledge/known-issues.md for matching symptoms; flag known vs novel issuesWhen test_type=e2e, the fix-agent applies E2E-aware resolution strategies:
.dante/e2e-knowledge/known-issues.md; if current failure matches a known issue (by symptom + category), apply the stored resolution first (highest confidence match wins)skills/e2e/frameworks/{framework}.md for the relevant error category.dante/e2e-knowledge/known-issues.md with symptom, root cause, resolution, framework, category, and confidence (see knowledge-management.md)When test_type=e2e, agents load content in this order:
Step 1: Framework Detection
-> Detects E2E framework, sets test_type=e2e, framework={name}
-> Source: skills/framework-detection/e2e-frameworks.md
Step 2: Generic E2E Skill (this file)
-> Agent reads skills/e2e/SKILL.md
-> Provides: error taxonomy, agent contracts, conventions, references
Step 3: Framework-Specific Reference
-> Agent reads skills/e2e/frameworks/{framework}.md
-> Provides: selector APIs, wait patterns, error regex, fix strategies, CLI workflows
Step 4: Test Template
-> Write-agent reads skills/templates/{language}-{framework}-template.md
-> Provides: test file structure, fixture patterns, assertion patterns, examples
Step 5: Result Parser
-> Execute-agent reads skills/result-parsing/parsers/{framework}-parser.md
-> Provides: output parsing rules (pass/fail counts, failure details, retry indicators)
Step 6: Project Knowledge
-> Agent reads .dante/e2e-knowledge/ (known-issues.md, project-patterns.md)
-> Provides: project-specific known issues, auth flows, navigation patterns
This skill references three supporting documents that define detailed conventions:
.dante/e2e-knowledge/ directory structure, entry format, auto-population rules, and consumption rulesThe generic E2E layer (this file and its supporting files) does NOT contain:
data-testid vs role vs text vs CSS selectors is defined per framework in skills/e2e/frameworks/{framework}.mdskills/e2e/frameworks/{framework}.mdskills/e2e/frameworks/{framework}.mdskills/e2e/frameworks/{framework}.mdThis separation ensures that adding a new E2E framework requires only a new framework reference file and detection markers -- zero agent modifications.
All agents check test_type from the framework detection output. When test_type=e2e:
1. Read this skill: skills/e2e/SKILL.md
2. Read framework reference: skills/e2e/frameworks/{framework}.md
3. Follow agent-specific contract (see Agent Behavior Contracts above)
4. Apply E2E error taxonomy when classifying failures
5. Consult/update .dante/e2e-knowledge/ as specified
test_type is "unit" or "integration" -- standard agent behavior appliestest_type=e2e; existing unit test behavior is unaffected.sdd/specs/2026-02-13-e2e-web-test-authoring.mdskills/framework-detection/SKILL.mdskills/result-parsing/SKILL.mdskills/state-management/SKILL.mdskills/templates/SKILL.mdLast Updated: 2026-02-25 Status: Phase 2 - Browser exploration default-on, agent contracts updated Next: Framework-specific reference files (Playwright, Cypress stubs, Selenium stubs)