Skip to content
SPECIFICTION
Get listed

Espresso

developer.android.com

Free plan WebmacOSLinuxiOSAndroid
Visit developer.android.com
Spec score 8.8 #4 of 34 in Automated Testing

What it is

Espresso is a free, open-source framework for writing automated user-interface tests for Android apps. Before a test acts or checks a screen, it waits for the app’s message queue, AsyncTask work and developer-defined idling resources to become idle. Its packages cover core testing, WebView components, idling resources, intents and other testing support. Espresso-Web tests Android WebViews, while Espresso-Intents can validate and stub app intents. Multiprocess Espresso supports interactions across processes within an app, but it requires Android 8.0/API 26 or later and does not test external processes. Tests run in Android Studio or from the command line with Gradle; installation uses the SDK Manager and Gradle, and Android Studio is recommended. The framework supports Android 4.0.1/API 14 or higher. Test Recorder can capture device interactions and assertions to generate a UI test, while AccessibilityChecks can evaluate views during actions. The listed stable release and core dependency are version 3.7.0. Espresso is Apache-2.0 licensed.

Spec sheet

Purpose
Espresso provides APIs for writing concise Android UI tests that simulate user interactions with Views.Read 1 Oct 2026 · developer.android.com
Audience
Espresso targets developers who consider automated testing an integral part of the development lifecycle.Read 30 Sep 2026 · developer.android.com
Support
The project directs general questions to its AndroidX Test Discuss mailing list and specific questions to Stack Overflow, while using GitHub issues for feature requests and bugs.Read 30 Sep 2026 · github.com
License
The Espresso source repository is public and identifies its license as Apache-2.0.Read 1 Oct 2026 · github.com
Accessibility
AccessibilityChecks can be enabled in Espresso tests to evaluate views and their descendants during view actions.Read 1 Oct 2026 · developer.android.com
Analytics
The test runner uploads a hash of the application package name for each invocation, and analytics can be disabled with the disableAnalytics instrumentation argument.Read 1 Oct 2026 · developer.android.com
Core packages
The core packages include espresso-core, espresso-web, espresso-idling-resource, espresso-contrib, espresso-intents, and espresso-remote.Read 30 Sep 2026 · developer.android.com
Current artifact
The AndroidX Test release page lists androidx.test.espresso:espresso-core:3.7.0 as a dependency.Read 1 Oct 2026 · developer.android.com
Device API
The Espresso Device API simulates configuration changes such as rotation and screen unfolding and runs actions synchronously.Read 1 Oct 2026 · developer.android.com
Device API requirements
Espresso Device API requires Android Studio Iguana or higher, Android Gradle Plugin 8.3 or higher, Android Emulator 33.1.10 or higher, and an API 24 or higher virtual device.Read 1 Oct 2026 · developer.android.com
Execution
Espresso tests can run in Android Studio or from the command line with Gradle.Read 30 Sep 2026 · developer.android.com
Installation
The setup guide recommends Android Studio and uses Gradle dependencies from the AndroidX Test libraries.Read 1 Oct 2026 · developer.android.com
Intent testing
Espresso-Intents can match and validate outgoing intents or provide stub responses for delegated functionality.Read 1 Oct 2026 · developer.android.com
Maker products
Google says it makes hundreds of products including Android, YouTube, Gmail, and Google Search.Read 1 Oct 2026 · about.google
Multiprocess limit
Multiprocess Espresso requires Android 8.0 API level 26 or higher and cannot test external processes.Read 30 Sep 2026 · developer.android.com
Multiprocess testing
Multiprocess Espresso tests UI interactions across processes within an app while maintaining Espresso synchronization guarantees.Read 30 Sep 2026 · developer.android.com
Release
The AndroidX Test release page lists Espresso stable release 3.7.0.Read 30 Sep 2026 · developer.android.com
Supported Android
The Espresso testing framework supports Android 4.0.1/API level 14 or higher.Read 1 Oct 2026 · developer.android.com
Synchronization
Espresso automatically synchronizes test actions with the app UI by detecting when the main thread is idle.Read 1 Oct 2026 · developer.android.com
Test execution
Tests can run in Android Studio or from the command line.Read 1 Oct 2026 · developer.android.com
Test Recorder
Espresso Test Recorder records device interactions and assertions, then generates a corresponding UI test without requiring manual test code.Read 1 Oct 2026 · developer.android.com
WebView testing
Espresso-Web tests Android WebView UI components and reuses WebDriver atoms.Read 30 Sep 2026 · developer.android.com

Plans and prices

Espresso Free Android UI testing · Android 4.0.1/API 14+ · single target app Read 1 Oct 2026 · developer.android.com

Every Espresso plan and price →

Strong points and limits

Strong points

  • Waits for app activity to become idle before actions.
  • Supports Android 4.0.1/API 14 and higher.
  • Tests can run in Android Studio or Gradle.
  • Test Recorder generates tests from recorded interactions.
  • Free and Apache-2.0 licensed.

Limits

  • Multiprocess tests require Android 8.0/API 26 or higher.
  • Cannot test external processes.
  • Device API has specific tooling and emulator requirements.

Who it suits

Espresso suits Android developers who include automated testing in their development lifecycle. It supports teams writing UI tests in Kotlin or Java.

Espresso in depth

Read the full write-up

Overview

Espresso is a free, open-source framework for automated Android UI testing, best suited to developers who make tests part of their app-development lifecycle. Its appeal is focused: synchronized tests for an Android app, with extra tools for WebViews, intents, and accessibility. Choose it for app-level Android coverage, not for a single framework spanning iOS and Android.

Tests can run in Android Studio or from the command line with Gradle, so teams can work in an IDE or incorporate test runs into a command-line workflow. Espresso supports Android 4.0.1/API 14 and higher; the current stable release is 3.7.0, with androidx.test.espresso:espresso-core:3.7.0 as the core dependency. Kotlin and Java are the supported SDK languages.

Key features

Espresso’s packages divide testing needs across espresso-core, espresso-web, espresso-idling-resource, espresso-contrib, espresso-intents, and espresso-remote. That gives Android teams targeted support within one framework, though the scope remains Android UI testing rather than general cross-platform automation.

Synchronization: Before UI actions and assertions, Espresso waits for the message queue, AsyncTask operations, and developer-defined idling resources to become idle. This helps tests follow app work instead of relying on arbitrary timing; teams still need to define idling resources for work they want Espresso to track.

WebView testing: Espresso-Web tests Android WebView components and reuses WebDriver atoms. It suits apps with embedded web UI, not a broader browser-testing need.

Intent testing: Espresso-Intents validates and stubs intents sent by the app under test, which is useful when a test needs to check or control app-directed intent behavior.

Multiprocess testing: Multiprocess Espresso preserves Espresso synchronization while testing UI interactions across processes within an app. It requires Android 8.0/API 26 or higher and cannot test external processes, so it is not a fit for tests that need to cross that boundary.

Test Recorder: It records device interactions and assertions, then generates a corresponding UI test without manual test code. This offers a starting point for recorded flows rather than requiring every test to be authored from scratch.

Accessibility checks: AccessibilityChecks can evaluate views and their descendants during view actions. This lets teams add accessibility evaluation to UI tests without making a separate test flow.

Device API: The API simulates configuration changes such as rotation and screen unfolding, and runs actions synchronously. It requires Android Studio Iguana or newer, Android Gradle Plugin 8.3 or newer, Android Emulator 33.1.10 or newer, and an API 24 or higher virtual device; those prerequisites make it a more constrained option than the core framework.

Setup uses the SDK Manager and Gradle, with Android Studio recommended. The test runner uploads a hash of the application package name for each invocation; users can opt out with disableAnalytics.

Pricing

Espresso is open source and free. The Espresso plan costs free and covers Android UI testing on Android 4.0.1/API 14 or higher for a single target app. The plan’s single-app scope is appropriate for testing one app, but does not imply a multi-app testing package. Real-device testing and offline mode are supported; data synchronization is not included.

Platforms

Espresso is an Android framework, with support for Android 4.0.1/API 14 and higher. Its setup and execution use the Android SDK, Gradle, and optionally Android Studio. Although the platform list also names iOS, Linux, macOS, and web, Espresso’s stated purpose and testing framework support are Android-specific; do not choose it for iOS UI testing.

Who it's for

Espresso suits Android developers who treat automated testing as part of development and want synchronized UI tests runnable in Android Studio or through Gradle. It is especially relevant when the app’s tests need to cover WebView components, intents, accessibility checks, or supported configuration changes. Teams needing external-process testing, iOS coverage, or a cross-platform test framework should look elsewhere.

Pros and cons

Pros

Synchronization is built into UI actions: Waiting on the message queue, AsyncTask work, and defined idling resources can reduce timing issues in tests.

Useful Android-specific extensions: Dedicated packages cover WebViews and intents, while AccessibilityChecks and Test Recorder address additional test needs.

Flexible execution: Tests run in Android Studio or from the command line with Gradle, and real-device testing is supported.

No license cost: The open-source framework is free for a single target app.

Cons

Android-only testing: Espresso does not provide the iOS coverage its platform list might suggest.

Multiprocess scope is bounded: It requires Android 8.0/API 26 or higher and cannot test external processes.

Device API has a demanding toolchain floor: It needs Android Studio Iguana, Android Gradle Plugin 8.3, Android Emulator 33.1.10, and an API 24+ virtual device.

No data synchronization: Teams needing synchronized data as part of their testing setup will need another approach.

Alternatives

For database products rather than Android UI testing, these alternatives serve different needs:

Hive is a free mobile database with a free plan that includes 1,000 AI credits per month, 200MB of storage, and up to 10 workspace members; pick it when those database and workspace provisions matter more than UI testing.

Sparksee offers a free academic licence that requires a valid school or university ID; it is the relevant alternative for academic database use.

ObjectBox offers a no-cost core database plan; choose it when a core database, rather than UI test automation, is the need.

Ditto has a free plan with 10 cloud device connections, 2GB of storage, 5GB of data transfer, no SLA, and limited support; it fits readers comparing mobile databases with defined free-tier allowances.

Firestore is a freemium option for document reads and writes; consider it for document database needs rather than Android UI testing.

RxDB has a free plan with core, replication and realtime sync, and default storage capabilities; choose it if those database and sync features are the priority.

Drift is a free option for readers evaluating another mobile database.

Realm offers an open-source database and is now part of MongoDB Atlas Device SDKs; consider it for a database rather than a UI testing framework.

Browse Mobile App Testing Software for the testing category, or Mobile Databases for database options.

Verdict

Choose Espresso if you need free, synchronized Android UI tests with useful support for WebViews, intents, accessibility, and recorded interactions. Its focused Android scope and clear multiprocess boundary are the trade-offs: teams seeking iOS coverage or tests across external processes should choose a different tool.

Verdict

Espresso offers Android UI testing with synchronization, WebView and intent testing, and tools for recording tests and checking accessibility. Its multiprocess support is limited to interactions within an app, and the Device API has separate environment requirements.

Where Specifiction places it

Alternatives to EspressoAll alternatives →