Recently one of my teammates was showing off a WPF application he had built. Since it's easy to do, she built a Logical Functional Model and used it to script her demo.

One of the cool things her app supported was reskinning (including rearranging and relocating the various widgets), and at various points during the demo she switched to yet another skin. Of course the LFM didn't care one whit about these UI changes and so the demo continued without pause.

Most of the audience didn't catch the significance of this. I did however see one PM nudge his neighbor excitedly, remarking "The UI just completely changed! And the test didn't even notice!"

This is the power of our automation stack. When you write tests in terms of user actions rather than UI, you can change that UI in radical ways, and as long as the application semantics don't change it all just works - you don't need to touch a single test case.

This may seem like a fantasy world but my team is living in it today. Other teams within Microsoft are starting to live there too, as are companies around the world. What's stopping you?