A home for every locator your tests depend on.
Capture a locator once, get it graded A–F on uniqueness and stability, keep its full history, and use it in seven frameworks. That is COR.
Every layer of your suite survives a rename. Locators are where it stops.
Rename a button and follow what happens. Each layer your suite depends on has something that catches the change and tells you. One of them has nothing.
Change a function name and the compiler stops you, or review does. Bump a package and the lockfile records exactly what moved. Alter a column and the migration is ordered, reversible, and replayable on every machine. Rotate a credential and the secrets manager knows who still has access. Change a button’s test id and nothing anywhere notices, until CI goes red in four specs at once.
Locators never got that layer, and not because they matter less. A suite fails completely without them. They got skipped because they are written inside test files, so they inherited the test file’s tooling and nothing more. It never became a category, so it never became anyone’s job.
The known fixes each take one half of the problem. Page objects gave locators a tidier file and left them copies. Self-healing gets the run to the end and leaves the wrong locator sitting in your repo, healing itself again next run. AI writes a better locator than most people do by hand, and still hands two engineers two different selectors for the same button. Each one improves a moment. None of them leaves anything behind.
COR takes the other half: making the locator itself the thing that is owned, graded, versioned, and fixed in one place instead of four.
I have spent 12+ years in test automation — Java/TestNG, Nightwatch and WebdriverIO on the web, Appium and Espresso on mobile. Different languages, different runners, different decades. The same failure every time: someone changes the UI, a pile of tests go red, and I lose a morning proving nothing was actually broken. The product was fine. The locators were not.
What wore me down was not any single broken selector. It was the duplication. The same button would be defined in four places across a suite, so fixing it meant finding all four. I would fix three, ship, and the fourth would fail next week in a spec I had forgotten existed.
What I kept picturing was one place where each locator is defined, graded, and versioned like the rest of the code. Fix the button there and every test that uses it is fixed. No fixing three of four and waiting on the fourth. One capture that runs in Playwright, Cypress, Selenium, or whatever the team picks next.
Past that, I wanted locator upkeep to stop being anyone’s job at all. Locators that re-score themselves as the DOM moves and update in place, so those mornings go to the problems that actually need an engineer. No tool did that, so I wanted to build one. COR is it.
Kush ShahFounder · builds all of it
Tell me where it breaks.
Bug reports and disagreements are equally welcome — a locator tool that only hears from the people it worked for is one that stops improving. Email [email protected], use the contact form, or find me on X and Discord.