Video: https://www.youtube.com/watch?v=SkkO6x6LhCQ
How hard can it be to chain together a few Espresso commands and produce an Android UI test? There's even a test recorder built into the IDE for this purpose! It is easy... Unless, of course, one actually wants to run the test continuously and have it block merges to master. Now, we need not just a test, but a test that provides a reliable signal; a test that is not flaky. At Slack, we started by solving the problem of writing reliable UI tests, by making them targeted and hermetic. And we made good progress. However, as our UI test suite grew to hundreds of tests, we discovered a problem - developers hated the process. It was cumbersome and time-consuming. It turns out, the difficult part of writing the test was not about testing at all - it was about setting up application state. In this talk, we will present our approach of simplifying our test setup to the extent that makes it easy and, dare we say it - enjoyable - to develop reliable UI tests.