Impact Analysis
Impact analysis answers a fundamental question: given a code change, which E2E tests need to run?
How It Works
The impact engine takes a git diff and maps each changed file to the route families it belongs to. A route family represents a product feature (e.g., “channels”, “messaging”, “settings”) with associated source paths, test directories, and user flows.
channel.go changed -> belongs to "channels" family -> specs live in specs/functional/channels/ -> run those tests, flag coverage gapsThree Mapping Strategies
- Route families — the
route-families.jsonmanifest maps source file patterns to features - Dependency graph — static reverse-dependency analysis catches transitive impacts (a utility changed, so all consumers are affected)
- Traceability — file-to-test mappings from CI execution history provide empirical evidence of which tests exercise which files
Running Impact Analysis
npx impact-gate impact --path . --since origin/mainThe impact command prints a deterministic summary to stdout. Use plan when you want .e2e-ai-agents/plan.json and .e2e-ai-agents/ci-summary.md artifacts with impactedFamilies, runSet, confidence, and decision.
Building the Route Families Manifest
For accurate results, build a manifest that maps your codebase to features:
# Offline scan (free, no API key)npx impact-gate train --no-enrich --path .
# With LLM enrichment for better metadatanpx impact-gate train --path .The scanner uses directory matching, test-derived discovery, server-derived grouping, and name matching to build file-to-family mappings. LLM enrichment adds URL routes, priority levels, and human-readable flow descriptions.
Interpreting Results
Each impacted family in the output includes:
- confidence — how certain the mapping is (heuristic, traceability, or AI-confirmed)
- impactLevel — direct change vs. transitive dependency
- runSet — the specific spec files to execute
- gaps — user flows with no test coverage for the changed code