Skip to main content
The app graph turns test-run traces into a model of your application’s user journeys. Use it to see which flows are covered, improve AI test selection, and give product risk analysis the context to connect failures to affected journeys.
The app graph is in alpha and may change. Contact us to join the waitlist.

How it is built

Every run produces page states. The app graph turns those into structure without you maintaining a map by hand:
  1. Each observed UI state is fingerprinted (canonical URL plus a normalized, minhashed view of the DOM) so near-identical states collapse to one.
  2. A short semantic summary of each state is embedded.
  3. States are clustered into a taxonomy of product areas, features, journeys, variants, and segments.
The graph is versioned and recomputed as new runs come in, so coverage tracks the app as it changes rather than going stale.

The taxonomy

  • Product area and Feature group the app by what it does.
  • Journey is a user-facing flow. A journey has one or more variants (for example, the success path and an error path), and each variant is a sequence of segments (steps a test would walk through).
Coverage is journey-rooted: there is one row per journey and variant. A single journey can touch several product areas and features through its segments, so those surface as lists rather than a single column.

Coverage states

Each journey variant has a status derived from the latest runs of the tests that match it: When a variant is Missing, the reason is surfaced (no matching test vs. all matching tests failing) so a failing population does not look like an untested one.

Proposals

As runs reveal journeys the graph does not yet model, the system proposes additions (new product areas, features, journeys, variants, or segments). You review them in a proposals queue and approve or reject each one, so the model stays accurate without absorbing noise automatically.

AI test selection

AI test selection uses the app graph to map a pull request’s code changes to the product journeys and tests that can regress. The graph adds runtime evidence that a code index cannot derive from imports alone, including connections across API, data, and UI boundaries. AI test selection can start with a partial graph, but selection quality improves as more runs connect application states and journeys to tests.