-
-
Notifications
You must be signed in to change notification settings - Fork 20
Update roborazzi to v1.56.0 #682
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
renovate
wants to merge
1
commit into
master
Choose a base branch
from
renovate/roborazzi
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
d4f341d to
af7c4e6
Compare
af7c4e6 to
6a3f1ee
Compare
6a3f1ee to
b0edb6c
Compare
b0edb6c to
dc45a33
Compare
dc45a33 to
6bacc66
Compare
6bacc66 to
0b6388d
Compare
0b6388d to
8eb1696
Compare
8eb1696 to
45e46a3
Compare
45e46a3 to
922fdd6
Compare
922fdd6 to
4f1658d
Compare
4f1658d to
59696c6
Compare
59696c6 to
014d7d4
Compare
014d7d4 to
8d53dfa
Compare
8d53dfa to
f82502b
Compare
f82502b to
5bbbef6
Compare
5bbbef6 to
caf59f6
Compare
caf59f6 to
16fd88b
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.40.1→1.56.01.40.1→1.56.01.40.1→1.56.01.40.1→1.56.01.40.1→1.56.01.40.1→1.56.01.40.1→1.56.0Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
takahirom/roborazzi (io.github.takahirom.roborazzi)
v1.56.0Compare Source
Added AGP 9.0 compatibility to RoborazziPlugin
Roborazzi was previously using APIs and classes that have since been deprecated, such as
Variant.unitTestand TestedExtension. We have now migrated to alternative, supported classes and methods. Thanks for reporting this, @allanconda-mercari !Behavior changes: Stabilized preview LaunchedEffect execution for Compose Preview support
Previously, screenshots occasionally differed from Android Studio Composable Preview when using LaunchedEffect. We now invoke
composeTestRule.mainClock.advanceTimeByFrame()by default, so some screenshots may appear different. You can restore the previous behavior by implementing a custom tester as follows:What's Changed
Full Changelog: takahirom/roborazzi@1.55.0...1.56.0
v1.55.0Compare Source
Bugfix: Fix WebP ClassCastException
What happened
SdkSandboxClassLoader.ImageIO.getImageWritersByMIMEType, which internally caches writers in a static field. When the writer is first created, the code is executed by SdkSandboxClassLoader1.What we did
We leveraged reflection to force
ImageIO.getImageWritersByMIMETypeto use the System ClassLoader, thereby guaranteeing that the same class definition is shared irrespective of the current SdkSandboxClassLoader.Many thanks to @eygraber for reporting this bug!
What's Changed
Full Changelog: takahirom/roborazzi@1.54.0...1.55.0
v1.54.0Compare Source
Breaking change: Report HTML and JSON paths have changed
The HTML report used to be at
build/reports/roborazzi/index.htmlbut is now located atbuild/reports/roborazzi/<build_variant>/index.html. This is a first step toward fixing a long-standing issue where runningrecordRoborazzi(instead ofrecordRoborazziDebug) could break test results; further work is still needed to make it fully reliable.You should be able to fix it by adding
/debug/(or your build variant) to the path in your CI script. I believe the change is straightforward, but if you run into any cases where it's difficult please let me know.Note: This change does not affect the paths of the generated screenshot images, so most users will not be impacted.
Thank you for your contribution, @vladcudoidem!
Behavioral change: Fixed screenshot timing for Compose Preview Support
Previously, we used Espresso.onIdle() and ShadowLooper.idle(), but these APIs are not suitable for Compose. Consequently, screenshots could not be captured after onSizeChanged completed.
If you encounter issues with infinite animations—such as
CircularProgressIndicator—you can configure frame-based captures using@RoboComposePreviewOptions.Thank you for reporting this issue, @savvasenok!
What's Changed
Full Changelog: takahirom/roborazzi@1.53.0...1.54.0
v1.53.0Compare Source
New feature
generatedTestClassCountand behavior changes to Compose Preview supportWe've added the
generatedTestClassCountoption, which enables us to run Preview tests in parallel when you set maxParallelForks to a value greater than 1.As the name
generatedTestClassCountsuggests, this option generates as many test classes as specified. It creates tests whosepreviewIndex % totalTestClassCount == testClassIndex. However, this option does not modify maxParallelForks, so you must also set maxParallelForks yourself to run tests in parallel. This is our policy: we never alter other plugin(AGP) settings in order to keep one single source of configuration.Behavior changes: generatedTestClassCount now defaults to the same value as maxParallelForks. Therefore, if you already use maxParallelForks during testing, the behavior may change if your tests are non-deterministic—for example, if they depend on the order in which other tests run.
Last but not least, thanks to @sergio-sastre for suggesting this feature, reviewing the code, and confirming the approach works!
Fix configuration-time resolution when using BOM to Compose Preview support
Fixed an error where the version verification logic triggered configuration-time resolution errors when using BOM (Bill of Materials) for dependency management.
The fix simplifies the
verifyComposablePreviewScannerVersionmethod by removing the complex fallback logic that attempted to infer versions from test configurations. Instead, the plugin now only checks explicitly declared versions—when no version is specified (indicating BOM management), verification is skipped.Thanks to @igokoro for reporting this issue!
Fix iOS snapshot not creating parent directories before writing files
Fixed a critical bug where iOS snapshot tests weren't being recorded on the first run. The root cause was that
NSData.writeToFilesilently fails when parent directories don't exist.The fix ensures parent directories are automatically created before writing files using
NSFileManager.defaultManager.createDirectoryAtPathwithwithIntermediateDirectories = true. Additionally, error logging was added to report both successful and failed file operations, preventing silent failures.Thanks to @jl-jonas for reporting this issue!
What's Changed
34e1148by @renovate[bot] in #764Full Changelog: takahirom/roborazzi@1.52.0...1.53.0
v1.52.0Compare Source
Support for
com.android.kotlin.multiplatform.librarypluginEven though we can use
androidUnitTestin Kotlin Multiplatform Plugin, there is a way to add Android target to KMP and this might become mainstream. Roborazzi did not add the task for this plugin so we added tasks likerecordRoborazziAndroidHostTest. Thank you for reporting this issue @xVemu !Support for KMP testRuns API
When we add testRuns in build.gradle, that enables us to control dependencies for tests in KMP, Roborazzi used to fail with
Cannot add task 'clearRoborazziJvm' as a task with that name already exists.. Thank you for reporting this issue as well @xVemu !Fix preview tests plugin when using Bom dependencies
There are patterns that we cannot build with Roborazzi due to configuration cache issues. We addressed this issue using a new API for configuration cache. Thank you for reporting this @igokoro !
What's Changed
Full Changelog: takahirom/roborazzi@1.51.0...1.52.0
v1.51.0Compare Source
Add validation for Compose Preview Support users
includePrivatePreviews is an option we can set in Gradle DSL. However, there is a scenario where we cannot use it, and it appears to be a flaw. The reason why includePrivatePreviews is not utilized is that users can specify a custom tester in their code, and Roborazzi's default tester applies the option using parameters from the Gradle DSL. You can see the error message if you do not set options properly, as shown below. You can simply review and follow what the error message indicates. Thank you, @egorikftp, for reporting this issue! Thank you, @sergio-sastre, for your input on this issue!
https://redirect.github.com/takahirom/roborazzi/pull/740/files#diff-0ed97664cea9b889781317183ecffc5ab489f71f3c1ee34484ea1eeb392dd3a5R121-R167
What's Changed
08eba0bby @renovate[bot] in #743d3f86a1by @renovate[bot] in #74473f8f37by @renovate[bot] in #745Full Changelog: takahirom/roborazzi@1.50.0...1.51.0
v1.50.0Compare Source
Fixed: Resolved Gradle task dependency errors with Android Gradle Plugin 8.12+ where
GenerateComposePreviewRobolectricTestsTaskoutput was used by compilation tasks without explicit dependencies. Thank you @papo2608 for reporting this issue.What's Changed
Full Changelog: takahirom/roborazzi@1.49.0...1.50.0
v1.49.0Compare Source
ComposablePreviewScanner 0.7.0 Compatibility Update
Breaking Change - Compatibility Update Required
This release addresses a breaking compatibility issue with ComposablePreviewScanner 0.7.0 that affects users of Roborazzi's Preview support feature.
The Problem
When using ComposablePreviewScanner 0.7.0 with previous versions of Roborazzi, you'll encounter
NoSuchMethodErrorat runtime. This happens because:AndroidPreviewScreenshotIdBuilderto provide commonPreviewScreenshotIdBuildermethods for Glance and Compose MultiplatformThe Solution
This Roborazzi update replaces the old method calls and import statements with new ones compatible with ComposablePreviewScanner 0.7.0+. However, since these new method locations don't exist in ComposablePreviewScanner 0.6.x, you must update both libraries together.
If you use Roborazzi's Preview support, you must:
Both updates are required - updating only one will cause build or runtime errors.
Migration Steps
Improved Error Detection
We've added clear build-time error messages to help you identify when this compatibility issue occurs, so you'll know exactly what needs to be updated instead of encountering cryptic runtime errors.
Common Update Scenarios
Scenario 1: Update only ComposablePreviewScanner to 0.7.0
→
NoSuchMethodErrorwith old Roborazzi. Update Roborazzi to resolve.Scenario 2: Update only Roborazzi
→ Compile-time error with clear message to update ComposablePreviewScanner ✅
Acknowledgments
Thanks to @sergio-sastre for collaboration on resolving this compatibility challenge and maintaining the ComposablePreviewScanner library.
What's Changed
Full Changelog: takahirom/roborazzi@1.48.0...1.49.0
v1.48.0Compare Source
Fix Preview Size Retention Bug
Fixed issue where
@Previewannotation size attributes (heightDp/widthDp) incorrectly persisted between capturesProblem
Subsequent previews without explicit size would inherit dimensions from previous previews instead of using defaults.
Solution
Save and restore Robolectric qualifiers properly in captureRoboImage() to ensure preview size isolation.
Thanks to @smuldr for reporting this issue!
Breaking Changes: Update Libraries
You can see the changes at: https://github.com/takahirom/roborazzi/actions/runs/16952566040
Overall, we are now using Kotlin 2.0.21. We don't chase the latest versions, but we want to add tests using the latest Compose Multiplatform Previews. Thank you for letting me know about this! @sergio-sastre
What's Changed
Full Changelog: takahirom/roborazzi@1.47.0...1.48.0
v1.47.0Compare Source
Compose Preview Tester Customization
Added
Capturerinterface toAndroidComposePreviewTesterfor customizing capture behavior (#716). This allows setting customcomparison thresholds and other RoborazziOptions for generated Compose preview tests.
Fixes #703. Thanks @pavel163 for the issue report and @sergio-sastre for the review!
What's Changed
New Contributors
Full Changelog: takahirom/roborazzi@1.46.1...1.47.0
v1.46.1Compare Source
Bugfix: Fix screenshot sizing for RoborazziComposeSizeOption and Previews on Robolectric 4.15+
This release finally resolves a complex screenshot sizing issue that occurred after the Robolectric 4.15 update. Version 1.46.0 was never released as we discovered additional edge cases during the pre-release phase. This version, 1.46.1, addresses all known issues.
Initially, we migrated to using
RuntimeEnvironment.setQualifiers()to configure the screen size, following the recommended approach for recent Robolectric versions. However, this change introduced new problems, especially when awidthDpandheightDpwith different values were specified, or when used in combination with thedeviceparameter in@Preview.After extensive investigation and discussion, we've implemented a more robust solution. Roborazzi now automatically adds the correct orientation qualifier (
-landor-port) based on the provided dimensions and ensures the qualifiers are applied in the correct order to avoid conflicts with other configurations. This fixes sizing for all Compose screenshot tests, making them reliable and predictable again.Acknowledgements
A huge thank you to everyone who contributed to resolving this challenging issue! This fix would not have been possible without the collaborative effort of the community.
setQualifiersand orientation work were crucial in pointing us toward the correct and final solution.What's Changed
Full Changelog: takahirom/roborazzi@1.46.0...1.46.1
v1.45.1Compare Source
Please refer to https://github.com/takahirom/roborazzi/releases/tag/1.45.0
v1.45.0: (Publishing Failed)Compare Source
The attempt to publish version 1.45.0 to the Maven Central repository appears to have failed. The release status is showing as "FAILED," so I will publish version 1.45.1 instead.
(This issue has since been resolved by contacting Maven Central support. Please use 1.45.1)
Bug fixes
The dialog's background dimming is now visible, just as it would be on a real device. Thank you for investigating this. @jeppeman

There was a bug that caused Roborazzi to crash when using BoxWithConstraints with a Dialog. Thank you, @matsudamper, for the report and the sample code.
What's Changed
Full Changelog: takahirom/roborazzi@1.44.0...1.45.0
v1.44.0Compare Source
Please refer to https://github.com/takahirom/roborazzi/releases/tag/1.44.0-alpha01 to see the main changes in version 1.44.0. We are still seeking feedback on RoboComposePreviewOptions. RoboComposePreviewOptions is still experimental, and we may introduce breaking changes.
New feature: Added JUnit
@Categoryto auto-generated tests from Compose PreviewYou can now filter tests using JUnit4's
RoborazziComposePreviewTestCategory. Thanks to @hellohj for the suggestion.Bugfix: Subdirectory screenshots are now removed when
roborazzi.cleanupOldScreenshots=truePreviously, when
roborazzi.cleanupOldScreenshots=truewas used, subdirectory screenshots were not removed as intended. Thanks to @pacoalface-jt for reporting the bug.What's Changed
4d78a74by @renovate in #66095815c3by @renovate in #670ea165f8by @renovate in #672Full Changelog: takahirom/roborazzi@1.43.1...1.44.0
v1.43.1Compare Source
We added error handling for font availability checks in 1.43.0. However, it seems that the "font not available" error is an Error rather than an Exception, so we updated the code to handle Throwable.
What's Changed
Full Changelog: takahirom/roborazzi@1.43.0...1.43.1
v1.43.0Compare Source
Bugfix
Added error handling for font availability checks in headless environments, falling back to
Font.MONOSPACEDwhen preferred fonts are unavailable. Thanks for reporting this issue @pavel163What's Changed
Full Changelog: takahirom/roborazzi@1.42.0...1.43.0
v1.42.0Compare Source
Bug fixes
We are using the "Courier New" font for comparison image text and screenshot dumps. It appears that "Courier New" is not available in CentOS, although this may not be an issue for Mac, Ubuntu, and Windows users.
To address this problem, we have introduced two mechanisms. Thank you for reporting this issue, @LloydBlv.
roborazzi.theme.typography.font.name=Your Font NameWhat's Changed
Full Changelog: takahirom/roborazzi@1.41.1...1.42.0
v1.41.1Compare Source
In some cases, the new test result format breaks the report's HTML/JS. Thank for fixing this, @unni-dm!
What's Changed
New Contributors
Full Changelog: takahirom/roborazzi@1.41.0...1.41.1
v1.41.0Compare Source
HTML Report Improvements
Thanks to @mannodermaus's contribution, context and AI assertion results now display more intuitively instead of showing raw data class

toString()outputs.Bug Fixes
Automatic Retry Handling for 429 Errors
(Only relevant for arbigent-ai-openai users)
We've implemented automatic retry logic for HTTP 429 errors common with AI model rate limits, eliminating manual intervention.
Experimental Multi-Image AI Assertion
Originally developed for Arbigent, this feature now supports multi-image inputs for AI assertions - enabling detection of video playback or animated content through AI analysis.
What's Changed
Full Changelog: takahirom/roborazzi@1.40.1...1.41.0
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.