The testing industry spent fifteen years solving the wrong problem.
CSS selectors break? Use data-testid. Data-testid is too coupled? Use aria-labels. Aria-labels change? Try XPath. XPath is fragile? Add a custom attribute. Custom attribute got refactored? Write a more resilient selector strategy.
More layers. More conventions. More things to maintain.
Nobody stopped to ask: why are we pointing at DOM nodes at all?
Bug0 Studio doesn't use selectors. The AI reads the accessibility tree — the same structured representation that screen readers use. It understands what's on the page semantically. "Click the Sign In button" doesn't resolve to [data-testid="signin-btn"]. It resolves to the thing that looks and behaves like a sign-in button.
Button moves to the header? Still works. Text changes from "Sign In" to "Log In"? Still works. Entire component gets rebuilt in a different framework? Still works.
The selector was always a proxy for intent. We just skipped the proxy.
This isn't a new selector strategy. It's the end of selectors as a concept in testing.
Every improvement to selectors was the industry building a better horse when it needed a car. The abstraction was wrong from the start.
The right question was never "how do we make selectors more resilient." It was "how do we stop needing selectors at all."




