Start with intent

Pick resilient locators

Assert outcomes

Make failures observable

Keep tests isolated