The Test Suite Had to Grow Up
Smoke tests are easy to celebrate because they turn green quickly. They are also a very efficient way to misunderstand the state of a product.
At some point, route checks stopped being enough. A platform that claims to support real features needs browser tests that execute those features, not just wave at them.
Green was not enough
A route loading is not the same thing as a feature working. A page shell rendering is not the same thing as a system behaving correctly under real interaction.
Once that distinction becomes obvious, the test strategy has to change with it.
Contracts changed the standard
Playwright, traces, seeded execution plans, coverage audits, and explicit contracts changed what green meant. The browser layer stopped asking whether something appeared and started asking whether the platform performed the thing it claimed to support.
That is a harder standard, but it is also a more useful one.
Coverage exposed design gaps
One of the best side effects was that missing tests started pointing at missing platform definition. Dynamic routes, row actions, vague UI contracts, and unsupported surfaces became easier to see.
That is the kind of test system I trust. One that does not flatter the product. One that forces it to become clearer.