Making your UI tests resilient to change

User interface tests are famously finicky and prone to breakage. Let's talk about how to improve this.