The core API is small, predictable, and easy to learn and yet remains open for
customization. Espresso tests state expectations, interactions, and assertions
clearly without the distraction of boilerplate content, custom infrastructure,
or messy implementation details getting in the way.

Espresso tests run optimally fast! It lets you leave your waits, syncs, sleeps,
and polls behind while it manipulates and asserts on the application
UI when it is at rest.

Target audience

Espresso is targeted at developers, who believe that automated testing is an
integral part of the development lifecycle. While it can be used for black-box
testing, Espresso’s full power is unlocked by those who are familiar with the
codebase under test.

Synchronization capabilities

Each time your test invokes
onView(),
Espresso waits to perform the corresponding UI action or assertion until the
following synchronization conditions are met:

By performing these checks, Espresso substantially increases the likelihood that
only one UI action or assertion can occur at any given time. This capability
gives you more reliable and dependable test results.