quality-engineering-test-healing
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. Never add test.skip/fixme without a ticket + expiry; never skip without these. 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.