CheckOps home

Tools directory

P

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.

Visit website

Latest public signals

Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.

Visit Website

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

  1. No emulator: Renders on the JVM with layoutlib.
  2. Views and Compose: Snapshot layouts, custom views and composables.
  3. Record and verify tasks: Gradle tasks with diff images.
  4. Device configurations: Sizes, densities, night mode and font scale.

Pros

  1. Free to use: Open source under the Apache-2.0 licence, so the core tool costs nothing to use.
  2. Actively maintained: The repository had commits as recent as 10 November 2026.

Cons

  1. Rendering differences: Layoutlib may differ slightly from real devices.
  2. Limited interaction: Primarily static screenshots, not full interaction flows.
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.

  1. Android teams wanting fast screenshot tests without emulators.
  2. 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.