# Quality Engineering Test Healing

Failure taxonomy and allowed/forbidden repairs for a failing E2E test.

- Repository: https://github.com/HoangNguyen0403/agent-skills-standard (582 stars)
- Category: Testing
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add HoangNguyen0403/agent-skills-standard --skill quality-engineering-test-healing -g -a claude-code -y`
Codex: `npx skills add HoangNguyen0403/agent-skills-standard --skill quality-engineering-test-healing -g -a codex -y`
Cursor: `npx skills add HoangNguyen0403/agent-skills-standard --skill quality-engineering-test-healing -g -a cursor -y`
Gemini CLI: `npx skills add HoangNguyen0403/agent-skills-standard --skill quality-engineering-test-healing -g -a gemini-cli -y`

## Description

Failure taxonomy and allowed/forbidden repairs for a failing E2E test. Use when a Playwright/Maestro/Detox/XCUITest/Espresso/Appium test fails and you must decide whether to repair the test or route to a real bug.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Quality Engineering: Test Healing

## **Priority: P0 (CRITICAL)**

## Failure Classes

`SELECTOR_DRIFT` (id/locator changed) · `TIMING_SYNC` (race/wait, no state change) · `DATA_ENV` (fixture/seed/env stale) · `INFRA` (network/runner/flake) · `REAL_REGRESSION` (product behavior actually changed).

Classify from evidence: trace/screenshot/DOM diff supports a drift/timing/data explanation, or the product diff shows an intentional behavior change (REAL_REGRESSION).

## Allowed Repairs

Move the locator up the selector ladder (e.g., `getByRole` if the ID changed); replace a sleep with an explicit state wait; fix a stale fixture/seed; retry only for `INFRA`.

## Forbidden Repairs

Never weaken an assertion. Unchanged assertion text does NOT authorize weakening fixtures, state preconditions, or locator specificity (e.g., replacing targeted test seeds with generic/empty defaults or widening selectors to match unintended elements). Never add `test.skip`/`fixme`; a test that must stop gating goes to quarantine per `quality-engineering-flaky-triage` with a ticket + expiry, and keeps running. Never widen a matcher. Never inflate a timeout by more than 2x. Never blind `--update-snapshots`. Never catch-and-continue. Never touch production code, that is `REAL_REGRESSION`, not a heal.

## Verdicts

`HEALED` (repair verified by 3 consecutive green reruns, ASSERTION_DELTA: none, fixture and selector integrity preserved) · `REAL_BUG_DO_NOT_HEAL` (product behavior changed or real defect exposed; route to dev-fix) · `QUARANTINE_CANDIDATE` (intermittent failure across isolated reruns; route to flaky-triage) · `BLOCKED` (no evidence artifact, or no stable locator target: route to `specialist-testid-inserter`).

## Red Flags

The rest: https://github.com/HoangNguyen0403/agent-skills-standard/blob/HEAD/.claude/skills/quality-engineering/quality-engineering-test-healing/SKILL.md
