CheckOps
Paparazzi
Paparazzi is Cash App's Apache-2.0 Android library for rendering application screens without a physical device or emulator, enabling fast screenshot tests on the JVM.
- Mobile
- Android
- Kotlin
- Open source
- Free
- Snapshot Testing
- Visual Testing
- End-to-end & functional
- Prototype & UX testing
- Unit testing
Latest public signals
Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.
Introduction
Paparazzi is an Android library from Cash App that renders your application screens without a physical device or emulator. It uses Android Studio’s layout rendering engine on the JVM, so screenshot tests run as fast local tests in CI with no emulator infrastructure.
You add a Paparazzi JUnit rule configured with a device (for example PIXEL_5) and theme, then call paparazzi.snapshot(view) for inflated layouts or custom views, or paparazzi.snapshot { MyComposable() } for Jetpack Compose. Gradle tasks record golden images (recordPaparazziDebug) and verify against them (verifyPaparazziDebug), and failures produce diff images. Device configurations cover screen sizes, densities, night mode and font scales, which makes it easy to check many variants. Paparazzi 2.0 was in alpha at the time of writing (2.0.0-alpha05.1 on 28 September 2026), with active development.
The source code is at cashapp/paparazzi on GitHub under the Apache-2.0 licence, with about 2,600 stars; the most recent commit was on 10 November 2026.
Features
- No emulator: Renders on the JVM with layoutlib.
- Views and Compose: Snapshot layouts, custom views and composables.
- Record and verify tasks: Gradle tasks with diff images.
- Device configurations: Sizes, densities, night mode and font scale.
Pros
- Free to use: Open source under the Apache-2.0 licence, so the core tool costs nothing to use.
- Actively maintained: The repository had commits as recent as 10 November 2026.
Cons
- Rendering differences: Layoutlib may differ slightly from real devices.
- Limited interaction: Primarily static screenshots, not full interaction flows.
Usage and Links (Example)
class LaunchViewTest {
@get:Rule
val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_5)
@Test
fun launchScreen() {
paparazzi.snapshot { LaunchScreen(state = LaunchState.Ready) }
}
}
./gradlew recordPaparazziDebug
./gradlew verifyPaparazziDebug
Resources:
Pricing
Paparazzi is free and open source under the Apache-2.0 licence.
Recommended for?
- Android teams wanting fast screenshot tests without emulators.
- Design systems checking components across many configurations.
Conclusion
Paparazzi makes Android screenshot testing fast and CI-friendly by rendering screens directly on the JVM.
Alternatives
Other tools on CheckOps that cover similar ground. Open a page, or compare one with Paparazzi side by side.
RRoborazziRoborazzi is an Apache-2.0 Android screenshot testing library that captures screenshots in JVM tests using Robolectric Native Graphics, supporting interactions, Compose and Espresso-style flows.Compare with Paparazzi
RRobolectricRobolectric is an MIT-licensed Android unit testing framework that runs tests in a simulated Android environment inside the JVM, routinely 10x faster than cold-started emulators, supporting 14 Android versions from API 24 to 37.Compare with Paparazzi
JJetpack Compose UI testingJetpack Compose's testing APIs (ui-test-junit4) let Android developers find, assert on and interact with composables through semantics, using createComposeRule on devices or with Robolectric on the JVM.Compare with Paparazzi
SSnapshotTesting (Point-Free)SnapshotTesting is Point-Free's MIT-licensed snapshot testing library for Swift, snapshotting views, view controllers and any value as images, text, JSON and more, with XCTest and Swift Testing support.Compare with Paparazzi
EEspressoEspresso is an Android testing framework for writing concise, beautiful, and reliable UI tests that synchronize automatically with the application's UI.Compare with Paparazzi
Iinstainsta is an Apache-2.0 snapshot testing library for Rust by Armin Ronacher, with assert_snapshot! macros, serde-based formats, redactions, inline snapshots and the cargo insta review tool.Compare with Paparazzi