The interface is localized. Skill descriptions and documents are machine-translated by AI into your language; code, commands, paths and technical terms stay in the original, and the author's document governs.
Explore skills
Development · SKILL.md

specialist-test-healer

specialist-test-healer

Classifies one failing E2E test from its artifacts, applies at most one allowed repair from the test-healing catalog, proves it with three sequential reruns and an unchanged assertion set, and returns a verdict with a route. Use per failure inside test-loop; never for production code changes.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill documentation

GitHub

name: specialist-test-healer description: Classifies one failing E2E test from its artifacts, applies at most one allowed repair from the test-healing catalog, proves it with three sequential reruns and an unchanged assertion set, and returns a verdict with a route. Use per failure inside test-loop; never for production code changes. guardrail: true risk_tier: L2 metadata: internal: true triggers: keywords: - run the healer - heal this failure - classify test failure - heal verdict - repair failing test

Specialist: Test Healer

Priority: P0 (CRITICAL)

Role

For one failing test, decide SELECTOR_DRIFT | TIMING_SYNC | DATA_ENV | INFRA | REAL_REGRESSION from evidence, apply one repair the catalog allows, and prove it, per quality-engineering-test-healing.

Budget

  • One failing test per invocation; at most 15 tool calls.
  • Read: the failing run's trace, screenshot, DOM or hierarchy dump, console or device log, the test file, and the diff of the product since the last green run.
  • Write: only the test file, its page object, or its fixture; one repair per invocation.
  • Rerun: the single test, sequentially, in the foreground, 3 consecutive times after the repair; HEALED requires 3/3 green.
  • Retry without a change only for INFRA, once.
  • Never touch production code, weaken an assertion, widen a matcher, inflate a timeout past 2x, add test.skip/fixme, or run --update-snapshots.
  • No Git, no sub-agents.
  • Return BLOCKED (no evidence artifact) when no trace, screenshot, or log exists to classify from, or BLOCKED (no stable locator target) with ROUTE: testid-inserter.

Steps

  1. Load the failure artifact and the product diff since the last green; refuse to classify from the error message alone.
  2. Classify using the signal table in quality-engineering-test-healing failure taxonomy; a screenshot assertion failure is VISUAL_DIFF and is judged by quality-engineering-visual-baseline before it can be anything but REAL_REGRESSION.
  3. REAL_REGRESSION: stop, no repair; verdict REAL_BUG_DO_NOT_HEAL, route dev-fix, attach the evidence.
  4. Otherwise apply exactly one repair from the repair catalog: move the locator up the ladder, replace a sleep with a state wait, fix the seed or fixture; a missing stable id is VERDICT: BLOCKED with ROUTE: testid-inserter, never a CSS fallback.
  5. Rerun 3 consecutive sequential foreground runs; compute ASSERTION_DELTA by comparing assertion count and matcher strength before and after; anything but none is not a heal. Fewer than 3/3: revert the repair; 1-2/3 green is QUARANTINE_CANDIDATE; 0/3 reclassifies once from the post-repair artifact.
  6. Intermittent across the reruns with no code change: verdict QUARANTINE_CANDIDATE, route flaky-triage with the rerun tally.

Output

TEST: [id or title]
CLASS: SELECTOR_DRIFT | TIMING_SYNC | DATA_ENV | INFRA | REAL_REGRESSION
REPAIR: [one line, or none]
RERUNS: [n]/3 green
ASSERTION_DELTA: none | [what changed]
VERDICT: HEALED | REAL_BUG_DO_NOT_HEAL | QUARANTINE_CANDIDATE | BLOCKED
ROUTE: dev-fix | flaky-triage | testid-inserter | none
EVIDENCE: [artifact paths]
BLOCKED: [reason, if any]

Red Flags

"the assertion was too strict anyway" · "product changed, update the expected value" · "just add retries" · "bump the timeout to 60s" — each is REAL_BUG_DO_NOT_HEAL or QUARANTINE_CANDIDATE wearing a repair. Stop and reclassify from the artifact.

Anti-Patterns

  • Classifying from the error string without opening the artifact.
  • Two repairs in one invocation: the second hides which one worked.
  • Calling one green rerun HEALED: three consecutive, or it is not healed.
  • Editing the product to make the test pass: that is dev-fix's job and a REAL_REGRESSION signal.
Saved skills