Top 7 Alternatives to Paparazzi (Cash App) for Kotlin Testing
Introduction: Where Paparazzi Came From and Why It Matters
Visual regression testing has long been a pain point in Android development. Historically, capturing UI screenshots meant spinning up emulators or devices, running instrumentation tests, and dealing with slow, flaky environments. As teams adopted Jetpack Compose and modernized their pipelines, this friction only became more obvious.
Paparazzi (by Cash App) emerged to directly address that pain. It’s an open-source, Apache-2.0–licensed screenshot testing tool for Android that runs on the JVM—no emulator required. Under the hood, Paparazzi renders Android views using the Android rendering engine outside of a device, so you can generate and compare screenshots deterministically as part of your Gradle build. It integrates neatly into CI, is developer-friendly for Kotlin projects, and is particularly strong at catching UI regressions early.
Why did Paparazzi become popular?
It removes the emulator/device dependency for screenshot tests.
It’s fast and deterministic, which reduces flakiness.
It integrates well with Gradle and common CI setups.
It works great for Visual checks in Android apps written in Kotlin (and Java).
Paparazzi’s focus on JVM-based screenshots is a strength—but it also defines its scope. As teams scale testing to cover interactive flows, system-level behaviors, and cross-platform experiences—or as non-developers need to contribute—many look for complementary tools or replacements. That’s where the alternatives come in.
Overview: The Top 7 Alternatives Covered
Here are the top 7 alternatives to Paparazzi (Cash App) for Kotlin testing:
Espresso
Shot (Kakao)
UI Automator
Repeato
Waldo
Mabl
TestCafe Studio
These options span native Android frameworks, screenshot testing plugins, and codeless/cloud platforms that can complement Kotlin-based Android pipelines.
Why Look for Paparazzi Alternatives?
Paparazzi is excellent at what it does—fast, emulator-free screenshot testing—but teams often need more. Common reasons to consider alternatives:
Need for interaction and end-to-end flows: Paparazzi validates visuals, not user interactions, navigation, or system dialogs. If you need to verify touch events, animations, or permissions flows, you’ll want functional UI testing.
System-level coverage: Paparazzi doesn’t exercise system UI (notifications, app-switching, permissions) or cross-app scenarios. Tools like UI Automator can.
On-device fidelity: Because Paparazzi renders off-device, you may miss hardware/OS-level quirks, OEM-specific rendering differences, or runtime performance issues visible only on devices.
Broader team access: Non-developers (QA, Product, Design) may prefer codeless tools and cloud device runs with sharable reports and built-in analytics.
Cross-platform needs: If your Kotlin team also owns iOS or web interfaces, you might need tools that cover multiple platforms in a single workflow.
Reporting and test management: Paparazzi focuses on screenshots and diffs. If you need dashboards, flaky test detection, trend analytics, and collaboration features, you may look elsewhere.
Golden image maintenance: Snapshot testing can lead to large sets of baselines. Alternatives with auto-maintenance or “self-healing” models may reduce this overhead.
Alternatives: Detailed Breakdown
Espresso
What it is and who built it:
Espresso is the official Android UI testing framework maintained in the Android Open Source Project. It runs instrumentation tests on real devices or emulators and is used widely across Android teams.
What makes it different:
It focuses on behavior-driven testing: interactions, assertions, and synchronization with the app’s UI thread.
Core strengths:
Rich, stable UI interactions and assertions for both Views and (with ecosystem support) Jetpack Compose.
Built-in synchronization (IdlingResources) reduces flakiness when used correctly.
First-class Android Studio and Gradle support; large community and documentation.
Works on emulators and physical devices for realistic runtime fidelity.
Flexible matchers and test structure suitable for component, screen, and end-to-end flows.
How it compares to Paparazzi:
Espresso vs. Paparazzi is behavior vs. visuals. Paparazzi excels at fast, deterministic screenshots on the JVM. Espresso validates user interactions, system timing, and runtime behavior on-device/emulator.
Choose Espresso when you need to test flows, gestures, and integration points. Keep Paparazzi for pure visual diffs and layout regressions.
When to pick Espresso:
You want end-to-end UI coverage in Kotlin.
You need to verify runtime behavior, not just visuals.
Your CI can handle emulator/device orchestration.
Platforms and licensing:
Android; Open Source (Apache-2.0). Primary tech: Java/Kotlin.
Shot (Kakao)
What it is and who built it:
Shot (Kakao) is an open-source screenshot testing tool for Android that runs instrumentation-based screenshot tests. It’s commonly used in Kotlin projects to capture real device or emulator screenshots and compare them against baselines.
What makes it different:
Executes on actual Android runtimes, giving you screenshots that reflect real fonts, GPU/renderer behavior, and OS-level quirks.
Core strengths:
On-device fidelity: captures screenshots from emulators or devices.
Works with existing Android UI tests and CI setups.
Integrates with Gradle; good baseline/diff workflow for teams used to snapshot testing.
Useful for both Views and modern UI stacks (subject to project setup).
How it compares to Paparazzi:
Shot runs on-device; Paparazzi renders off-device on the JVM. Shot may catch styling or rendering differences that Paparazzi misses, at the cost of slower execution and emulator/device management.
Paparazzi is faster and more deterministic; Shot is more realistic.
Many teams use both: Paparazzi for fast dev feedback, Shot for final on-device verification.
When to pick Shot (Kakao):
You need screenshot tests that reflect real device rendering.
Your team is comfortable with instrumentation tests in CI.
You want parity with how the UI appears across device configs.
Platforms and licensing:
Android; Open Source (Apache-2.0). Primary tech: Kotlin.
UI Automator
What it is and who built it:
UI Automator is Google’s framework for system-level UI automation on Android. It can interact across app boundaries, system dialogs, notifications, and settings.
What makes it different:
Cross-app and system UI control, ideal for end-to-end flows that go beyond your app’s process.
Core strengths:
Automates interactions with system dialogs (permissions, notifications).
Validates cross-app flows: deep links, intents, and interop with other apps.
Complements Espresso by reaching places Espresso can’t.
Useful for device policy apps, OEM features, or heavily integrated scenarios.
How it compares to Paparazzi:
Paparazzi doesn’t execute on devices, and it doesn’t test system UI or user flows. UI Automator is focused on automation at the device level.
Choose UI Automator when your Kotlin app relies on system permissions, notifications, or multi-app workflows.
When to pick UI Automator:
Your tests must cross app boundaries or interact with system UI.
You need to validate the real behavior of device-level dialogs and services.
Platforms and licensing:
Android (system-level); Open Source. Primary tech: Java/Kotlin.
Repeato
What it is and who built it:
Repeato is a commercial, codeless mobile UI testing tool for Android and iOS that uses computer vision. It aims to be resilient to UI changes and friendly to non-developers.
What makes it different:
Visual, computer-vision–driven approach with a recorder and no-code/low-code workflows. Designed to reduce brittle selectors and speed up test creation.
Core strengths:
Codeless recording and playback suitable for QA and product teams.
Cross-platform (Android and iOS) coverage in one tool.
Computer vision can be more resilient to UI refactors than strict ID-based selectors.
Cloud-friendly execution, reporting, and collaboration workflows.
Can integrate with CI/CD and support parallel test runs for faster feedback.
How it compares to Paparazzi:
Repeato targets end-to-end mobile automation with visual recognition, not JVM-based screenshot diffs. It’s built for broader team participation and cross-platform coverage.
Paparazzi is developer-centric and excels at fast visual regression checks in Kotlin codebases.
Choose Repeato if you want cross-platform, codeless automation and richer reporting that non-developers can use.
When to pick Repeato:
You need Android and iOS coverage with a single approach.
Your team values codeless creation and collaboration features.
You want resilient tests that tolerate UI tweaks.
Platforms and licensing:
Android, iOS; Commercial. Primary tech: Codeless/Computer Vision.
Waldo
What it is and who built it:
Waldo is a commercial, no-code testing platform for Android and iOS. It provides a recorder, cloud device runs, and shareable results to speed up mobile QA.
What makes it different:
Emphasizes fast onboarding, cloud execution, and team collaboration without writing code.
Core strengths:
No-code recorder for quick test creation by QA and product stakeholders.
Cloud device infrastructure with parallelization for fast feedback loops.
Built-in reporting, videos, logs, and collaboration features for quick triage.
CI/CD integrations to fit into existing pipelines.
Useful for smoke/regression suites that need coverage across device models.
How it compares to Paparazzi:
Waldo focuses on functional mobile testing in the cloud; Paparazzi is a local JVM-based screenshot tool.
Choose Waldo when you want broad, shareable, and codeless regression testing across devices and platforms. Keep Paparazzi for fast visual diffs during development.
When to pick Waldo:
You need to empower non-developers to create and run tests.
You want cross-device coverage without managing hardware.
You prefer built-in analytics and shareable artifacts.
Platforms and licensing:
Android, iOS; Commercial. Primary tech: Codeless.
Mabl
What it is and who built it:
Mabl is a commercial, low-code/AI end-to-end testing platform primarily for web and APIs. It offers self-healing tests, visual checks, and rich reporting.
What makes it different:
Places web and API testing in one SaaS-first platform with AI-driven maintenance, making it attractive to teams that own both mobile backends and web clients.
Core strengths:
Low-code test authoring with AI assistance and self-healing to reduce maintenance.
Integrated web and API testing, including visual change detection for web UIs.
CI/CD and pipeline-friendly; analytics and reporting for teams and stakeholders.
Scales for cross-browser testing without local setup complexity.
How it compares to Paparazzi:
Mabl is not a mobile-native UI runner; it’s primarily for web and API layers. However, Kotlin teams often own web backends or admin panels that need robust test coverage, which Mabl can handle.
Choose Mabl alongside Paparazzi when you need unified web/API automation and visual checks beyond the Android app.
When to pick Mabl:
Your Kotlin team also owns web applications or APIs.
You want low-code authoring with self-healing to reduce maintenance costs.
You need strong reporting and collaboration around web test results.
Platforms and licensing:
Web + API; Commercial. Primary tech: Low-code/AI-driven.
TestCafe Studio
What it is and who built it:
TestCafe Studio is a commercial, codeless desktop IDE for end-to-end web testing (from the creators of TestCafe). It runs tests without WebDriver, simplifying cross-browser automation.
What makes it different:
A packaged, codeless experience for web UI testing with built-in recording, editing, and parallel execution.
Core strengths:
Codeless recording and editing for web tests.
No Selenium/WebDriver setup; works across major browsers.
Robust selector strategies and network request handling.
Parallel and concurrent execution for faster suites.
Helpful for teams who want to standardize on an easy-to-use web testing IDE.
How it compares to Paparazzi:
Not an Android mobile tool. It’s relevant if your Kotlin team also owns web frontends (admin consoles, portals, or web clients) that need full-stack automation.
Choose TestCafe Studio to accelerate web testing for Kotlin-backed services while retaining Paparazzi for Android visual checks.
When to pick TestCafe Studio:
Your Kotlin product includes significant web UI surfaces.
You want codeless authoring and simple cross-browser execution.
You prefer an all-in-one desktop IDE for test management.
Platforms and licensing:
Web; Commercial. Primary tech: Codeless.
Things to Consider Before Choosing a Paparazzi Alternative
Project scope and coverage goals:
Language and ecosystem fit:
Ease of setup and maintenance:
Execution speed and determinism:
CI/CD integration and scalability:
Debugging tools and observability:
Community, support, and longevity:
Cost:
Conclusion: Picking the Right Fit for Modern Kotlin Teams
Paparazzi (Cash App) solved a real problem: fast, deterministic screenshot testing for Android without relying on emulators. It remains a valuable, widely used tool in Kotlin codebases—especially for developer-centric workflows and fine-grained visual regression checks.
However, modern teams often need more than visual diffs:
If you need to test interactive flows, Espresso is the natural, open-source choice for Android UI behavior.
If you want screenshot fidelity from real runtimes, Shot (Kakao) brings on-device screenshots that complement Paparazzi nicely.
If your app relies on permissions, notifications, or cross-app journeys, UI Automator fills the system-level gap.
If non-developers must contribute and you want cross-platform coverage, codeless platforms like Repeato and Waldo reduce friction and centralize results.
If your Kotlin services also power web frontends, Mabl and TestCafe Studio offer mature web and API testing that fits neatly alongside your mobile stack.
In practice, many Kotlin teams combine tools:
Use Paparazzi for quick, deterministic UI snapshots in PRs.
Add Espresso and UI Automator for behavior and system flows.
Layer in Shot (Kakao) for final on-device screenshot validation.
Adopt a codeless/cloud platform (Repeato or Waldo) to democratize testing and improve reporting.
Cover web and API edges with Mabl or TestCafe Studio if your product extends beyond Android.
By aligning your selection with your scope, team skills, and pipeline maturity, you’ll arrive at a balanced toolset that accelerates feedback, increases confidence, and reduces brittle maintenance—while keeping Kotlin at the center of your Android testing strategy.
Sep 24, 2025