# robolectric

Published articles for robolectric.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How We Moved 1,500 Android Screenshot Tests to Roborazzi

DevFeed: [How We Moved 1,500 Android Screenshot Tests to Roborazzi](<https://devfeed.tech/articles/how-we-moved-1-500-android-screenshot-tests-to-roborazzi-24726.md>)

Original publisher: [Read original article](<https://medium.com/thumbtack-engineering/how-we-moved-1-500-android-screenshot-tests-to-roborazzi-9a5247d61340?source=rss----1199c607a13f---4>)

Author: Zachary Wander

Published: 2026-08-08T05:03:41Z

Content type: tutorial

Language: en

Sources: [Thumbtack Engineering - Medium](<https://devfeed.tech/sources/thumbtack-engineering-medium.md>)

Topics: [screenshot-testing](<https://devfeed.tech/topics/screenshot-testing.md>), [Android](<https://devfeed.tech/topics/android.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [git](<https://devfeed.tech/tags/git.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [robolectric](<https://devfeed.tech/tags/robolectric.md>), [roborazzi](<https://devfeed.tech/tags/roborazzi.md>), [screenshot](<https://devfeed.tech/tags/screenshot.md>), [screenshot-testing](<https://devfeed.tech/tags/screenshot-testing.md>), [software-testing](<https://devfeed.tech/tags/software-testing.md>), [technology](<https://devfeed.tech/tags/technology.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

Thumbtack Engineering describes migrating 1,500 Android screenshot tests from Firebase Test Lab to Roborazzi, which runs locally on the JVM. The article covers porting existing suites, comparing screenshots in Git, and addressing rendering, test-data injection, and dependency-injection differences.

### Source excerpt

How we moved 1,500 Android screenshot tests to Roborazzi.Introduction If you're a mobile developer you're probably no stranger to screenshot tests. Making sure that layouts remain consistent as time goes on and code changes is important for ensuring functionality and accessibility. Since Thumbtack uses Kotlin and Jetpack Compose for its Android apps, we had historically been using Firebase Test Lab to capture and compare layouts. However, using Firebase can be slow, tedious, and error-prone, so we decided it was time for a change. Instead of Firebase, we decided to migrate to using Roborazzi, a screenshot testing framework that runs fully locally inside the local JVM instead of relying on remote emulators and devices. For more details on why we migrated and the alternatives we evaluated, check out the previous blog post from Brian. This post is going to go into the details of how we migrated, and the challenges we faced along the way. Porting Loop Because the purpose of screenshot tests is ensuring consistency over time, we wanted to bring over our existing test suites into Roborazzi. Deleting the old ones and just creating new tests as we built new layouts was a potential option, but it would wipe out a lot of our automated verification. Instead, we ported our existing Firebase Test Lab screenshot test suites over to Roborazzi. In general, the porting process was pretty simple: Delete the old screenshots. Move the test suites over from androidTest to test. Adjust the code for any API differences. Record new screenshots. Compare the old and new screenshots in the git diff to make sure nothing is broken. Fix broken screenshots. Since Roborazzi uses Robolectric, and Robolectric implements the Android API, most of the test suites needed very few changes to work, with updating the main test rule and test annotations being enough to get them running. A few, like those that relied on permission granting rules or interacted directly with the test Activity, needed some more

## Headless Screenshot Testing in Thumbtack's Android Apps

DevFeed: [Headless Screenshot Testing in Thumbtack's Android Apps](<https://devfeed.tech/articles/headless-screenshot-testing-in-thumbtack-s-android-apps-24725.md>)

Original publisher: [Read original article](<https://medium.com/thumbtack-engineering/headless-screenshot-testing-in-thumbtacks-android-apps-c6254f229a97?source=rss----1199c607a13f---4>)

Author: Brian Terczynski

Published: 2026-03-31T22:47:00Z

Content type: tutorial

Language: en

Sources: [Thumbtack Engineering - Medium](<https://devfeed.tech/sources/thumbtack-engineering-medium.md>)

Topics: [screenshot-testing](<https://devfeed.tech/topics/screenshot-testing.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Android](<https://devfeed.tech/topics/android.md>), [Emulator](<https://devfeed.tech/topics/emulator.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Jenkins](<https://devfeed.tech/topics/jenkins.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [jenkins](<https://devfeed.tech/tags/jenkins.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [robolectric](<https://devfeed.tech/tags/robolectric.md>), [roborazzi](<https://devfeed.tech/tags/roborazzi.md>), [screenshot-testing](<https://devfeed.tech/tags/screenshot-testing.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

Thumbtack explains how it chose Roborazzi to run high-fidelity screenshot tests for its Android apps without an emulator. The article describes how emulator-based testing was slow and difficult to use for Jenkins verification, especially with more than 1,500 tests.

### Source excerpt

How we chose Roborazzi for fast, easy, and high-fidelity screenshot tests of our Android apps, without needing to run them on an emulator. As mentioned in our earlier blog post, screenshot tests are a fundamental part of our testing pyramid at Thumbtack. They validate that our UI code renders correctly. They catch UI regressions as our code evolves. They make it easy to share incremental progress with designers. In code reviews, they provide a great way for reviewers to "see" what the UI code is doing. Finally, they are very easy to write! But they were not always easy to run. Because they tested Android UI code, they had to run in a "real" Android environment so that the drawing operations would work. This meant running them on an Android device or emulator. To ensure consistent renderings, developers would have to run their tests on the same device used by our CI job. In the past, this meant having to run a script that would connect to our cloud device testing provider to generate the reference image, which would then be downloaded for inclusion in the local Git branch. Such a process would take minutes to run (not including build time). This got easier when we switched to Firebase Test Lab (FTL), because their emulators were the same as the emulators provided in the Android SDK used on developers' machines. Developers could then simply run their tests on a local emulator which sped up execution time significantly. But it still meant the emulator profile needed to match that of the device on FTL; in particular, the screen size and pixel density. Another problem was, because these were run on an emulator, they could not run with our CR verification job on Jenkins because their execution time was too slow (especially since we have over 1,500 of these tests!). This therefore meant that we had to run our screenshot tests separately, and they could not be used to gate code pushes because they were just too slow to run. So what would often happen was developers would me

## Efficient Testing with Robolectric & Roborazzi Across Many UI States, Devices and Configurations

DevFeed: [Efficient Testing with Robolectric & Roborazzi Across Many UI States, Devices and Configurations](<https://devfeed.tech/articles/efficient-testing-with-robolectric-roborazzi-across-many-ui-states-devices-and-configurations-25690.md>)

Original publisher: [Read original article](<https://sergiosastre.hashnode.dev/efficient-testing-with-robolectric-roborazzi-across-many-ui-states-devices-and-configurations>)

Author: Sergio Sastre Florez

Published: 2023-11-09T21:45:00Z

Content type: tutorial

Language: en

Sources: [Sergio's little tech corner](<https://devfeed.tech/sources/sergio-s-little-tech-corner.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [screenshot-testing](<https://devfeed.tech/topics/screenshot-testing.md>), [ui-testing](<https://devfeed.tech/topics/ui-testing.md>), [Android](<https://devfeed.tech/topics/android.md>), [Software Process](<https://devfeed.tech/topics/software-process.md>), [enum](<https://devfeed.tech/topics/enum.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [devices](<https://devfeed.tech/tags/devices.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [espresso](<https://devfeed.tech/tags/espresso.md>), [google](<https://devfeed.tech/tags/google.md>), [robolectric](<https://devfeed.tech/tags/robolectric.md>), [roborazzi](<https://devfeed.tech/tags/roborazzi.md>), [screenshot-testing](<https://devfeed.tech/tags/screenshot-testing.md>), [screenshots](<https://devfeed.tech/tags/screenshots.md>), [software](<https://devfeed.tech/tags/software.md>), [software-process](<https://devfeed.tech/tags/software-process.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-testing](<https://devfeed.tech/tags/ui-testing.md>)

### AI overview

This tutorial explains how to use Robolectric and Roborazzi for screenshot testing across many UI states, devices, and configurations. It introduces parameterized tests, enum-based UI states, and device qualifiers for generating screenshots efficiently.

### Source excerpt

Robolectric is a popular UI testing tool from Google that enables running UI tests without a physical device or emulator. It supports most androidx.test APIs, like Espresso, ActivityScenario & FragmentScenario as well as ComposeTestRule. Robolectric ...

## Write Once, Test Everywhere: Cross-Library Screenshot Testing with AndroidUiTestingUtils 2.0.0

DevFeed: [Write Once, Test Everywhere: Cross-Library Screenshot Testing with AndroidUiTestingUtils 2.0.0](<https://devfeed.tech/articles/write-once-test-everywhere-cross-library-screenshot-testing-with-androiduitestingutils-2-0-0-25695.md>)

Original publisher: [Read original article](<https://sergiosastre.hashnode.dev/write-once-test-everywhere-cross-library-screenshot-testing-with-androiduitestingutils>)

Author: Sergio Sastre Florez

Published: 2023-09-15T15:06:04Z

Content type: tutorial

Language: en

Sources: [Sergio's little tech corner](<https://devfeed.tech/sources/sergio-s-little-tech-corner.md>)

Topics: [screenshot-testing](<https://devfeed.tech/topics/screenshot-testing.md>), [ui-testing](<https://devfeed.tech/topics/ui-testing.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Android](<https://devfeed.tech/topics/android.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [robolectric](<https://devfeed.tech/tags/robolectric.md>), [roborazzi](<https://devfeed.tech/tags/roborazzi.md>), [screenshot-testing](<https://devfeed.tech/tags/screenshot-testing.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui-testing](<https://devfeed.tech/tags/ui-testing.md>)

### AI overview

This tutorial explains how AndroidUiTestingUtils 2.0.0 supports cross-library screenshot tests. It describes a common interface for device configuration, the subject under test, and screenshot recording or verification, with separate modules for Paparazzi, Dropshots, Roborazzi, and Shot. It also discusses enabling Robolectric Native Graphics mode through Gradle.

### Source excerpt

As observed in the previous blog post of this series, screenshot tests have a lot in common regardless of the library they're written with, namely: Setting the device configuration (e.g. Locale, Ui Mode, Font scale...) Setting the Subject Under Tes...

## A World Beyond Libraries: Cross-Library screenshot tests on Android

DevFeed: [A World Beyond Libraries: Cross-Library screenshot tests on Android](<https://devfeed.tech/articles/a-world-beyond-libraries-cross-library-screenshot-tests-on-android-25685.md>)

Original publisher: [Read original article](<https://sergiosastre.hashnode.dev/a-world-beyond-libraries-cross-library-screenshot-tests-on-android>)

Author: Sergio Sastre Florez

Published: 2023-08-23T21:23:13Z

Content type: opinion

Language: en

Sources: [Sergio's little tech corner](<https://devfeed.tech/sources/sergio-s-little-tech-corner.md>)

Topics: [screenshot-testing](<https://devfeed.tech/topics/screenshot-testing.md>), [Android](<https://devfeed.tech/topics/android.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [robolectric](<https://devfeed.tech/tags/robolectric.md>), [roborazzi](<https://devfeed.tech/tags/roborazzi.md>), [screenshot-testing](<https://devfeed.tech/tags/screenshot-testing.md>), [screenshots](<https://devfeed.tech/tags/screenshots.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

An analysis of Android screenshot-testing libraries, comparing JVM-based approaches such as Paparazzi and Roborazzi with on-device tools. It explains trade-offs involving rendering fidelity, emulator reliability, speed, and platform limitations, including fixes in Robolectric 4.12.1.

### Source excerpt

The state of the art of screenshot testing for Android Screenshot testing is trending in Android. Many new libraries have come up, and even Google announced at I/O 20231 that they're working on a new tool for this based on Composable Previews powered...

## Sharing Android Business Logic with iOS Using Doppl and MVP Architecture

DevFeed: [Sharing Android Business Logic with iOS Using Doppl and MVP Architecture](<https://devfeed.tech/articles/mvp-for-ios-and-and-pdq-kevin-galligan-38301.md>)

Original publisher: [Read original article](<https://touchlab.co/mvp-for-ios-and-and-pdq>)

Published: 2016-12-12T17:00:07Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [backends](<https://devfeed.tech/topics/backends.md>), [MVVM](<https://devfeed.tech/topics/mvvm.md>), [Dagger](<https://devfeed.tech/topics/dagger.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [built-by-touchlab](<https://devfeed.tech/tags/built-by-touchlab.md>), [code-sharing](<https://devfeed.tech/tags/code-sharing.md>), [dagger](<https://devfeed.tech/tags/dagger.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [native](<https://devfeed.tech/tags/native.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [press](<https://devfeed.tech/tags/press.md>), [robolectric](<https://devfeed.tech/tags/robolectric.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>)

### AI overview

The article explains Doppl, a set of tools and libraries built around j2objc for sharing Android business logic with iOS while keeping native user interfaces. It discusses applying MVP architecture, adding Dagger for dependency injection, and using sample test runners, while noting that iOS unit tests must currently be run from an Xcode app rather than the command line.

### Source excerpt

Are you building a product and decided to build native? Do you have some no trivial business logic? If so then be sure to read this latest post.

## Better Android Testing with Robolectric 2.0

DevFeed: [Better Android Testing with Robolectric 2.0](<https://devfeed.tech/articles/better-android-testing-with-robolectric-2-0-15544.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/better-android-testing-with-robolectric-2-0>)

Author: Square Engineering

Published: 2013-05-09T16:03:00Z

Content type: article

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Android](<https://devfeed.tech/topics/android.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Mocking](<https://devfeed.tech/topics/mocking.md>), [Instrumentation](<https://devfeed.tech/topics/instrumentation.md>), [ide](<https://devfeed.tech/topics/ide.md>), [releases](<https://devfeed.tech/topics/releases.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-testing](<https://devfeed.tech/tags/android-testing.md>), [announce](<https://devfeed.tech/tags/announce.md>), [availability](<https://devfeed.tech/tags/availability.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [fragments](<https://devfeed.tech/tags/fragments.md>), [framework](<https://devfeed.tech/tags/framework.md>), [ide](<https://devfeed.tech/tags/ide.md>), [instrumentation](<https://devfeed.tech/tags/instrumentation.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [robolectric](<https://devfeed.tech/tags/robolectric.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

This article announces Robolectric 2.0 release candidate 1 and explains how the framework supports Android unit testing on a desktop JVM. It describes improved Android OS emulation using modified Android SDK code, support for styles, themes, and system resources, faster test startup, and bug fixes.

### Source excerpt

The essential framework for testing Android applications

## The Resurrection of Testing for Android

DevFeed: [The Resurrection of Testing for Android](<https://devfeed.tech/articles/the-resurrection-of-testing-for-android-15913.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/the-resurrection-of-testing-for-android>)

Author: Square Engineering

Published: 2013-04-03T16:02:00Z

Content type: tutorial

Language: en

Sources: [Jake Wharton](<https://devfeed.tech/sources/jake-wharton.md>), [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Android](<https://devfeed.tech/topics/android.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [instrumentation](<https://devfeed.tech/tags/instrumentation.md>), [junit](<https://devfeed.tech/tags/junit.md>), [performance](<https://devfeed.tech/tags/performance.md>), [robolectric](<https://devfeed.tech/tags/robolectric.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

This article explains Android testing challenges caused by empty API jars and presents Robolectric as a framework that replaces those stubs with actual code. It demonstrates using Robolectric with JUnit to test layouts, views, activities, and UI interactions, and notes improvements planned for version 2.

### Source excerpt

An oft-overlooked aspect of development gets a fresh look.