TDD indeed relies on the tests being first. The described approach is not a pure TDD, I even doubt Espresso can ever serve as the tool for productive canonical TDD. But it’s close in many ways:
- you start with the test and then write the code to launch the app
- you iterate frequently and this lightweight test helps you iterate quicker than you’d do if you have to navigate to the screen under development through the app
- you end up with the less coupled code because you have to make the Activity independent
So it’s a way to taste TDD even for UI tests.