The Brittle Foundation of UI Automation
The fundamental flaw of traditional mobile and web automation is reliance on static selectors. Whether it's an auto-generated XPath (`/hierarchy/android.widget.FrameLayout/...`), an unstable testID, or a Tailwind CSS class hash, real-world applications change constantly.
When a product team runs an A/B test or refactors a checkout screen, IDs shift. Conventional test runners fail immediately with a fatal `NoSuchElementException`, stalling deployments and requiring engineers to spend hours re-recording locators.
Graph-Based Heuristic Matching
Graviton AI rethinks how elements are identified. When a test records an action on an element, Graviton doesn't just store a single selector string. It snapshots a multi-dimensional topological fingerprint of that element:
1. Accessibility semantics: Role, contentDescription, accessibilityLabel, and trait masks.
2. Spatial geometry: Relative bounding box, screen aspect ratio, and proximity to adjacent stable landmarks (e.g. headers, icons, price tags).
3. Structural AST hierarchy: Parent-child relationship depth and sibling index weighting.
{
"target": "checkout_button",
"heuristic_weights": {
"semantic_label_similarity": 0.45,
"spatial_anchor_proximity": 0.25,
"view_hierarchy_depth": 0.15,
"text_content_hash": 0.15
},
"confidence_threshold": 0.88,
"auto_heal_strategy": "DYNAMIC_REBIND"
}When a test executes and the primary selector is missing, Graviton evaluates the current DOM/accessibility tree against the fingerprint vector in under 8ms. If an element scores above the 0.88 confidence threshold, Graviton re-anchors the action, logs a healing suggestion, and lets the test pass cleanly.