- Home
- Visual Regression Testing Software
- Roborazzi
Roborazzi
What it is
Roborazzi is a free, open-source library for screenshot testing in JVM Android integration tests. It records screenshots, compares them with saved images, and can fail verification when they differ. Through Robolectric, Android screenshot tests can run as JVM tests without a device or emulator. Capture options include Jetpack Compose nodes, Espresso views, Android Views, and Compose lambdas. The project can generate screenshot tests for Jetpack Compose previews and supports Compose Multiplatform common previews. It also documents Compose Desktop and JVM preview testing, as well as experimental Compose Multiplatform iOS support. Gradle tasks record, compare, and verify screenshots; the library is available on Maven Central and includes documented GitHub Actions workflows for CI. An IntelliJ IDEA and Android Studio plugin displays test screenshots in the IDE. Other listed tools include accessibility checks, machine-readable UI tree output, and GIF capture. Video recording is experimental, and compare or verify mode does not record or verify video. Roborazzi is licensed under Apache License 2.0. The project notes that graphics can differ across operating systems and does not guarantee identical rendering.
For and against
For
- Android screenshot tests can run without a device or emulator.
- Captures Compose nodes, Espresso views, Android Views, and lambdas.
- Gradle tasks record, compare, and verify screenshots.
- GitHub Actions workflows are documented.
- Apache License 2.0.
Against
- No direct support for running with Bazel.
- Compose Desktop and iOS support are experimental.
- iOS output is PNG only and requires an explicit file path.
- Rendering may differ across operating systems.
The verdict
Roborazzi provides screenshot recording and verification for Android JVM tests, with additional Compose support across listed platforms. Account for its experimental platform support and possible operating-system rendering differences when using the comparisons.
Who it suits
Roborazzi suits Android and Compose developers who want screenshot checks in JVM tests or CI. Its experimental desktop and iOS support may be relevant to teams working with those Compose targets.
Plans and prices
Roborazzi
Available on Maven Central · Apache-2.0 licensed
Read 8 Oct 2026 · github.com
On the record
- Accessibility
- The project provides a Roborazzi Accessibility Checks library that integrates accessibility checks with Roborazzi.github.com · read 8 Oct 2026
- AI assertions
- An experimental AI-powered image assertion feature has modules for Gemini and OpenAI, and the project also describes manual assertions that can use local or other LLMs.github.com · read 8 Oct 2026
- Android testing
- Roborazzi integrates with Robolectric to run screenshot tests as JVM tests without requiring a device or emulator.github.com · read 8 Oct 2026
- Animated captures
- Roborazzi can capture GIFs and record UI animations as GIF or APNG; video recording is marked experimental and compare/verify mode does not record or verify it.github.com · read 8 Oct 2026
- Bazel support
- The FAQ states there is no direct support for running Roborazzi with Bazel.github.com · read 8 Oct 2026
- Capture APIs
- Screenshots can be captured from Jetpack Compose nodes, Espresso views, Android Views, and Compose lambdas.github.com · read 8 Oct 2026
- CI
- The documentation describes integrating Roborazzi with GitHub Actions to store, verify, and compare screenshots.github.com · read 8 Oct 2026
- CI integration
- The project documents GitHub Actions workflows for storing screenshots and verifying them in CI.github.com · read 8 Oct 2026
- Compose and Views
- Screenshot capture supports Jetpack Compose nodes, Espresso views, Android Views, and Compose lambdas.github.com · read 8 Oct 2026
- Compose previews
- It can generate screenshot tests for Jetpack Compose previews and supports Compose Multiplatform common previews.github.com · read 8 Oct 2026
- Desktop support
- Roborazzi supports Compose Desktop and JVM preview screenshot tests, with screenshots rendered using the host's Skia.github.com · read 8 Oct 2026
- IDE integration
- Its IntelliJ IDEA and Android Studio plugin displays screenshots from Roborazzi screenshot tests in the IDE.github.com · read 8 Oct 2026
- Integrations
- Roborazzi is available on Maven Central and provides Gradle tasks for recording, comparing, and verifying screenshots.github.com · read 8 Oct 2026
- iOS limitation
- On iOS, capture calls require an explicit file path and image output is PNG only, without WebP encoding.github.com · read 8 Oct 2026
- iOS support
- Experimental Compose Multiplatform iOS support includes screenshot recording, comparison, verification, and reports.github.com · read 8 Oct 2026
- Known platform variation
- The project says graphics libraries can render differently across operating systems and does not guarantee identical screenshot rendering across environments.github.com · read 8 Oct 2026
- License
- The repository identifies Roborazzi as licensed under Apache License 2.0.github.com · read 8 Oct 2026
- Limitations
- The project states that Roborazzi has no direct support for running with Bazel.github.com · read 8 Oct 2026
The review
Roborazzi is a free, open-source screenshot-testing library for Android JVM integration tests, with additional Compose workflows on desktop and iOS. It best suits teams that want visual regression checks inside Gradle and Robolectric tests, especially when device-free execution matters. Its broad capture support is useful, but experimental platforms and cross-operating-system rendering differences make environment discipline essential.
Overview
Roborazzi records screenshots, compares them with saved baselines, and fails verification when an image changes. That turns visual changes into repeatable test outcomes instead of a manual image-by-image review. Robolectric integration lets Android tests run as JVM tests without a device or emulator, and Hilt can be used in those tests.
Gradle tasks cover recording, comparison, and verification, while documented GitHub Actions workflows support storing and checking screenshots in CI. The library is distributed through Maven Central and uses the Apache License 2.0. Baseline consistency remains a real operational concern: graphics libraries can render differently on different operating systems, and identical output across environments is not guaranteed.
Key features
Capture APIs cover Jetpack Compose nodes, Espresso views, Android Views, and Compose lambdas. That makes the library practical for projects that mix legacy Views, Espresso-driven screens, and Compose rather than forcing one UI technology.
Roborazzi can generate screenshot tests from Jetpack Compose previews and supports common previews in Compose Multiplatform. Compose Desktop and JVM preview screenshots are rendered with the host's Skia library, which extends coverage beyond Android but also reinforces the need to control rendering environments.
An optional UI-tree dump writes machine-readable JSON beside screenshots for Android/Robolectric, Compose Desktop, and Compose iOS. The separate accessibility-checks library adds accessibility checks to Roborazzi workflows. Animated captures can produce GIF or APNG files; video recording is experimental, and compare/verify mode does not record or verify video.
IntelliJ IDEA and Android Studio plugins display screenshots from Roborazzi tests in the IDE. Experimental AI image assertions include Gemini and OpenAI modules, with manual assertions that can use local or other LLMs. API keys should be supplied through environment variables rather than embedded in source code.
Pricing
Roborazzi — free. The free plan includes the Maven Central distribution and Apache-2.0 licensing. There are no paid tiers, seat charges, screenshot quotas, renewal terms, or trial deadlines to weigh. That is a strong fit for open-source projects and teams that prefer to keep screenshot storage and CI orchestration in their existing tooling, rather than buying a hosted visual-testing service.
Platforms
Documented coverage includes Android, experimental Compose Desktop, and experimental Compose Multiplatform iOS support. Android is the clearest fit because Robolectric enables JVM execution. iOS support includes recording, comparison, verification, and reports, but capture calls require an explicit file path and output is PNG only, without WebP encoding. On every platform, operating-system rendering differences can affect comparisons. Roborazzi has no direct support for running with Bazel, which rules it out for teams whose test pipeline depends on Bazel integration.
Who it's for
Choose Roborazzi if you build Android or Compose interfaces and want visual assertions close to JVM tests, Gradle tasks, and GitHub Actions. It is particularly suitable for teams with mixed Compose and View-based screens, preview-heavy development, or a need for IDE-visible baselines and optional UI-tree data. It is less suitable when Bazel is mandatory, when identical screenshots must be portable across operating systems without environmental controls, or when experimental desktop and iOS behavior is not acceptable.
Pros and cons
Pros
- Device-free Android testing: Robolectric integration keeps screenshot checks in JVM tests without an emulator.
- Broad capture coverage: Compose nodes, Espresso views, Android Views, and Compose lambdas support mixed UI stacks.
- Useful automation hooks: Gradle recording, comparison, and verification tasks fit local and GitHub Actions workflows.
- Free and open source: There are no plan charges, quotas, or seat limits, and the project uses Apache 2.0.
- Diagnostic extensions: IDE previews, UI-tree JSON, accessibility checks, and animated GIF/APNG capture add context beyond a single diff.
Cons
- Rendering can vary by operating system: Baselines and verification may disagree when environments use different graphics libraries.
- Some platform features are experimental: Desktop and iOS workflows need more caution than the Android path.
- Bazel is unsupported directly: Bazel-centered teams cannot treat Roborazzi as a drop-in test integration.
- AI assertions add operational risk: Gemini and OpenAI modules require careful API-key handling and are experimental.
- iOS output is constrained: Capture requires an explicit path and produces PNG rather than WebP.
Alternatives
For a hosted service with visual and accessibility testing, Happo offers a free tier with 5,000 snapshots per month and Chrome support, while paid plans add service capacity. Pick it when managed infrastructure matters more than a local, open-source Gradle library.
Loki is another free, MIT-licensed open-source option spanning Android, iOS, desktop, web, and self-hosted use; choose it when that broader platform list or Node-based setup fits better.
Percy suits teams wanting hosted visual review with 5,000 free screenshots per month, unlimited users, and unlimited projects. SmartUI is worth considering for hosted testing with a lifetime allotment of 2,000 free screenshots and limited seats. Screenshotbot fits usage-based budgets, charging $0.01 a month per screenshot with 10,000 free screenshots monthly and up to five users. Visual Regression Tracker is a free alternative for teams seeking broad platform and self-hosted coverage. PolyglotPiranha is a free option when its listed API, iOS, desktop, and self-hosted coverage is sufficient. Applitools Ultrafast Grid is the paid choice for large-scale hosted checkpoint testing, with its Starter plan priced at $667 a month when paid annually.
Verdict
Roborazzi is a strong choice for Android and Compose teams that want free, open-source visual verification in JVM and Gradle workflows, with Robolectric removing device and emulator overhead. Look elsewhere if Bazel support, fully stable cross-platform rendering, or a hosted review service is a primary requirement.