Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Aug 11, 2023

This PR contains the following updates:

Package Change Age Confidence
io.github.takahirom.roborazzi 1.3.0 -> 1.52.0 age confidence
io.github.takahirom.roborazzi:roborazzi-compose 1.3.0 -> 1.52.0 age confidence
io.github.takahirom.roborazzi:roborazzi-junit-rule 1.3.0 -> 1.52.0 age confidence
io.github.takahirom.roborazzi:roborazzi 1.3.0 -> 1.52.0 age confidence

Release Notes

takahirom/roborazzi (io.github.takahirom.roborazzi)

v1.52.0

Compare Source

Support for com.android.kotlin.multiplatform.library plugin

Even though we can use androidUnitTest in 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 like recordRoborazziAndroidHostTest. 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.0

Compare 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!

  You have two options:
  1. Remove 'includePrivatePreviews = true' from generateComposePreviewRobolectricTests configuration
     and call '.includePrivatePreviews()' directly in your custom tester's testParameters() method.

  2. Set 'useScanOptionParametersInTester = true' in generateComposePreviewRobolectricTests configuration
     and check 'options.scanOptions.includePrivatePreviews' in your testParameters() implementation.

  Example for option 1:

https://redirect.github.com/takahirom/roborazzi/pull/740/files#diff-0ed97664cea9b889781317183ecffc5ab489f71f3c1ee34484ea1eeb392dd3a5R121-R167

What's Changed

Full Changelog: takahirom/roborazzi@1.50.0...1.51.0

v1.50.0

Compare Source

Fixed: Resolved Gradle task dependency errors with Android Gradle Plugin 8.12+ where GenerateComposePreviewRobolectricTestsTask output 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.0

Compare 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 NoSuchMethodError at runtime. This happens because:

  • Method relocation: ComposablePreviewScanner 0.7.0 moved methods from AndroidPreviewScreenshotIdBuilder to provide common PreviewScreenshotIdBuilder methods for Glance and Compose Multiplatform
  • Import mismatch: Previous Roborazzi versions contain generated code with outdated import statements
  • Runtime failure: Auto-generated Roborazzi tests from Previews crash when trying to execute methods at their old locations

The 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.

⚠️ Required Action

If you use Roborazzi's Preview support, you must:

  • Update Roborazzi to this version
  • Update ComposablePreviewScanner to 0.7.0 or later

Both updates are required - updating only one will cause build or runtime errors.

Migration Steps
// Update both dependencies together
implementation "io.github.takahirom.roborazzi:roborazzi:1.49.0"
implementation "io.github.sergio-sastre.ComposablePreviewScanner:android:0.7.0" // or newer

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
NoSuchMethodError with 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.0

Compare Source

Fix Preview Size Retention Bug

Fixed issue where @Preview annotation size attributes (heightDp/widthDp) incorrectly persisted between captures

Problem

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.0

Compare Source

Compose Preview Tester Customization

Added Capturer interface to AndroidComposePreviewTester for customizing capture behavior (#​716). This allows setting custom
comparison thresholds and other RoborazziOptions for generated Compose preview tests.

import com.dropbox.differ.SimpleImageComparator
import com.github.takahirom.roborazzi.*

@​ExperimentalRoborazziApi
class MyCustomComposePreviewTester(
  private val defaultCapturer: AndroidComposePreviewTester.Capturer = AndroidComposePreviewTester.DefaultCapturer()
) : AndroidComposePreviewTester(
  capturer = { parameter ->
    val customOptions = parameter.roborazziOptions.copy(
      compareOptions = parameter.roborazziOptions.compareOptions.copy(
        // Set custom comparison threshold (0.0 = exact match, 1.0 = ignore differences)
        imageComparator = SimpleImageComparator(maxDistance = 0.01f)
      )
    )
    defaultCapturer.capture(
      parameter.copy(roborazziOptions = customOptions)
    )
  }
)

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.1

Compare 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 a widthDp and heightDp with different values were specified, or when used in combination with the device parameter in @Preview.

After extensive investigation and discussion, we've implemented a more robust solution. Roborazzi now automatically adds the correct orientation qualifier (-land or -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.

  • A special and massive thank you to @​sergio-sastre for their incredibly thorough testing and persistent feedback. They identified several critical edge cases, provided detailed reproductions, and patiently validated every fix, which was essential for making this solution robust.
  • Thank you to the Robolectric team, especially @​paulsowden and @​hoisie, for their invaluable guidance. Their deep insights into Robolectric's internals and clear explanation of how setQualifiers and orientation work were crucial in pointing us toward the correct and final solution.
  • Thanks to @​mannodermaus for the initial detailed bug report that kicked off this entire investigation.
  • Also, thank you to @​suhtai for providing helpful information in the early stages.

What's Changed

Full Changelog: takahirom/roborazzi@1.46.0...1.46.1

v1.45.1

Compare 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
    image

  • 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.0

Compare 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 @Category to auto-generated tests from Compose Preview

You can now filter tests using JUnit4's RoborazziComposePreviewTestCategory. Thanks to @​hellohj for the suggestion.

Bugfix: Subdirectory screenshots are now removed when roborazzi.cleanupOldScreenshots=true

Previously, when roborazzi.cleanupOldScreenshots=true was used, subdirectory screenshots were not removed as intended. Thanks to @​pacoalface-jt for reporting the bug.

What's Changed

Full Changelog: takahirom/roborazzi@1.43.1...1.44.0

v1.43.1

Compare 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

  • [No Roborazzi library dependency update] Update dependency androidx.compose.ui:ui-tooling-preview to v1.7.8 by @​renovate in #​643
  • Handle font availability errors by catching Throwable by @​takahirom in #​665

Full Changelog: takahirom/roborazzi@1.43.0...1.43.1

v1.43.0

Compare Source

Bugfix

Added error handling for font availability checks in headless environments, falling back to Font.MONOSPACED when preferred fonts are unavailable. Thanks for reporting this issue @​pavel163

What's Changed

Full Changelog: takahirom/roborazzi@1.42.0...1.43.0

v1.42.0

Compare 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.

  • Added a fallback to Font.MONOSPACED to ensure execution when the font exists
  • Made the font customizable through roborazzi.theme.typography.font.name=Your Font Name

What's Changed

Full Changelog: takahirom/roborazzi@1.41.1...1.42.0

v1.41.1

Compare Source

In some cases, the new test result format breaks the report's HTML/JS. Thank for fixing this, @​unni-dm!

What's Changed

  • Fix for HTML result will break when context data key has special char… by @​unni-dm in #​654

New Contributors

Full Changelog: takahirom/roborazzi@1.41.0...1.41.1

v1.41.0

Compare 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.
image

Bug Fixes

  • Screenshot dumping now follows deterministic behavior thanks to @​siarhei-luskanau's implementation

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

v1.40.1

Compare Source

New Feature: Add AiAssertionOptions.AssertionImageType to Support Actual Image Validation

We previously introduced AI Assertion which utilizes a comparison image for assertions. However, we noticed the current implementation struggled with optimal performance due to image size constraints, where sufficient context size is crucial for accurate AI analysis. To address this, we've introduced the AssertionImageType parameter. You can now specify the image type via AiAssertionOptions.

  sealed interface AssertionImageType {
    class Comparison : AssertionImageType
    class Actual : AssertionImageType
  }

Bug Fix: Improved AI Assertion OpenAI API Error Messaging

Previously, API error messages were unclear and unhelpful. We've revamped the error handling to provide meaningful feedback, including proper API status details.

Before:

Fields [object, created, model, choices] are required for type with serial name 'com.github.takahirom.roborazzi.ChatCompletionResponse', but they were missing at path: $
kotlinx.serialization.MissingFieldException: Fields [object, created, model, choices] are required for type with serial name 'com.github.takahirom.roborazzi.ChatCompletionResponse', but they were missing at path: $

After:

Caused by: java.util.concurrent.ExecutionException: com.github.takahirom.roborazzi.AiAssertionApiException: {
    "error": {
        "message": "You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.",
        "type": "invalid_request_error",
        "param": null,
        "code": null
    }
}

Changes from 1.40.0

We initially introduced AssertionImageType.Reference instead of AssertionImageType.Actual in version 1.40.0. This was a mistake, as it referred to old images, a feature we've determined to be unnecessary. We have corrected this in the current release by using AssertionImageType.Actual.

What's Changed

  • [Not Roborazzi Library dependency update] Update actions/upload-artifact digest to 65c4c4a by @​renovate in #​619
  • [Not Roborazzi Library dependency update] Update dependency androidx.compose.material:material to v1.7.6 by @​renovate in #​629
  • [Not Roborazzi Library dependency update] Update dependency androidx.compose.runtime:runtime to v1.7.6 by @​renovate in #​630
  • [Not Roborazzi Library dependency update] Update dependency androidx.compose.ui:ui-test-junit4 to v1.7.6 by @​renovate in #​631
  • [Not Roborazzi Library dependency update] Update dependency androidx.compose.ui:ui-test-manifest to v1.7.6 by @​renovate in #​632
  • Add AssertionImageType to support reference image validation in AI Assertion by @​takahirom in #​637
  • Improve OpenAI api error handling by @​takahirom in #​638
  • Use class instead of object to maintain compatibility by @​takahirom in #​639
  • Use Actual image instead of Reference image for image assertion by @​takahirom in #​640

Full Changelog: takahirom/roborazzi@1.39.0...1.40.1

v1.40.0

Compare Source

Please refer to https://github.com/takahirom/roborazzi/releases/tag/1.40.1

v1.39.0

Compare Source

Bug Fixes
Diff screenshots are now as large as the largest of the two compared screenshots

Previously, when the size of a screenshot changed (e.g., became smaller), the image diff would not appear because it was based on the minimum size of each screenshot. This has been fixed so that the diff is now based on the largest of the two compared screenshots. Thank you for reporting this issue, @​outadoc!

Report HTML's image order is now deterministic

The image order in the HTML report used to be random. Thanks to @​mannodermaus, it is now sorted by name.

OpenAiAiAssertionModel is now Gemini compatible

Gemini has a compatibility mode with the OpenAI API (https://ai.google.dev/gemini-api/docs/openai). By using https://generativelanguage.googleapis.com/v1beta/openai/ as the base URL, we can essentially use Gemini. However, some properties are different, so we had to modify the OpenAiAiAssertionModel to be compatible with Gemini.

I'm currently developing another library called Arbigent, an AI agent testing framework. I'm planning to add an AI image assertion feature using Roborazzi's AI-Powered Image Assertion, and I needed this compatibility for that. This isn't directly related to this project, but if you're interested in testing, check it out: https://github.com/takahirom/arbigent

What's Changed

Full Changelog: takahirom/roborazzi@1.38.0...1.39.0

v1.38.0

Compare Source

Bugfix
Fix: Bug preventing the revival of deleted screenshot images

Thanks to @​pedromfmachado's contribution, we've addressed a bug where deleted screenshot test images would be erroneously revived. Previously, when screenshot tests were removed and their corresponding images deleted from the output directory, running the record task again would cause the Roborazzi Gradle task to recreate the removed images. While this could be temporarily resolved with roborazzi.cleanupOldScreenshots=true, that approach was undesirable as it would also remove images when test filters were used. This was a complex issue to solve, and we extend our gratitude to @​pedromfmachado for the fix.

Fix: Made screenshot dump deterministic

We have a dump feature that allows us to check the properties or hierarchy of views or composables in an image. We sorted the properties to ensure a deterministic output. Thanks to @​siarhei-luskanau for this contribution.

New Feature
Feature: Added RoborazziComposeActivityThemeOption

Previously, changing the theme of RoborazziTransparentActivity was not possible. We have now deprecated RoborazziTransparentActivity and renamed it to RoborazziActivity. Additionally, we added RoborazziComposeActivityThemeOption to enable changing the Activity's theme. Thank you again, @​pedromfmachado, for this feature.

You can now change the Activity theme like this:

 @​OptIn(ExperimentalRoborazziApi::class)
 @​Test
 fun whenNonTransparentThemeItShouldHaveNonTransparentBackground() {
   captureRoboImage(
     roborazziComposeOptions = RoborazziComposeOptions {
       activityTheme(android.R.style.Theme_Material_Light)
     }
   ) {
     Text("This composable function should NOT have transparent background!")
   }
 }
What's Changed
New Contributors

Full Changelog: takahirom/roborazzi@1.37.0...1.38.0

v1.37.0

Compare Source

Bug Fixes and Workarounds
Compose AlertDialog Support

Support for capturing Alert Dialogs has been fixed, ensuring correct screenshot display. captureScreenRoboImage(), which merges all windows, is now used only when multiple windows are present. Thanks to @​ashughes for reporting this and to @​mhidaka and @​hiroaki404 for bringing it to my attention at a Japan Android testing event.

image
Workaround for Overlap Handling for SDK 35 Compose Screenshots
Problem

When updating to SDK 35 and using the default theme, the ActionBar is included in screenshots, leading to overlap when using createComposeRule(). This occurs because createComposeRule() uses the default theme by default. Thank you for letting me know about this, @​keyboardsurfer!

<img width=400 src=https://github.com/user-attachments/assets/ba5f29ae-24bb-48f9-aa27-f335f80b784f />

I have filed an issue for this: https://issuetracker.google.com/issues/383368165

Why this happens

SDK 35 enforces edge-to-edge display, which means it does not provide automatic padding for the ActionBar.

How Roborazzi currently workarounds this

Roborazzi now automatically hides the ActionBar when taking screenshots on SDK 35 and higher. This functions similarly to view.getActivity()?.actionBar?.hide(). However, this workaround may cause performance issues and should not be relied upon. Roborazzi outputs warning logs with alternative suggestions. Thank you to @​sergio-sastre for advising on this workaround!

If you need to include the ActionBar in screenshots, Roborazzi provides a flag, roborazzi.compose.actionbar.overlap.fix=false, that can be added to your gradle.properties file.

What should we do?

A permanent solution will likely require changes from Google. In the meantime, adding <application android:theme="@&#8203;style/android:Theme.Material.Light.NoActionBar" /> to the module's src/test/AndroidManifest.xml file changes the Activity's default theme and resolves the issue. Thank you to @​mattinger for finding this!

#​598 (comment)

Stabilized Output for Dump Screenshots

Thanks to @​siarhei-luskanau for contributing an improvement that reduces unnecessary diffs for the Roborazzi dump feature.

New Features
Add inspectionMode() for Compose Previews

Thanks to @​YusukeMoriJapan's contribution, inspectionMode() is now available in RoborazziComposeOptions. This is particularly useful when working with libraries that have specific preview implementations. This mode is off by default to maintain high fidelity.

Here's how to enable it:

captureRoboImage(
    roborazziComposeOptions = RoborazziComposeOptions {
        inspectionMode(true)
    }
) {
    ...
}

What's Changed
New Contributors

Full Changelog: takahirom/roborazzi@1.36.0...1.37.0

v1.36.0

Compare Source

Behavior Changes to roborazzi.outputDir.set(file("somedir")) in build.gradle

Previously, when modifying roborazzi.outputDir, such as setting it to src/screenshots, this option also affected the paths for comparison images, like foo_compare.png. This behavior often caused issues, such as unintentionally saving comparison images to version control systems (e.g., Git). To address this, we have discontinued this behavior. Comparison images are now saved in build/outputs/roborazzi by default, while the behavior for reference images remains unchanged.

For users who wish to customize the path for comparison images, we have introduced a new option: roborazzi.compare.outputDir.

While I don't believe there are strong use cases for this, if you want to save the comparison images in a custom directory as you did before, you can specify roborazzi.compare.outputDir as follows:

roborazzi {
  outputDir.set(file("src/screenshots"))
  compare {
    outputDir.set(file("src/screenshots"))
  }
}

I believe this adjustment will be highly beneficial for most use cases involving changes to outputDir.

[!NOTE]
By default, when you use captureRoboImage("image.png"), the image will be saved as module/image.png.
You can customize the file path strategy for the recorded image. The default strategy is relativePathFromCurrentDirectory. If you select relativePathFromRoborazziContextOutputDirectory, the file will be saved in the output directory specified by roborazzi.outputDir.
This can be configured in your gradle.properties file:

roborazzi.record.filePathStrategy=relativePathFromRoborazziContextOutputDirectory
What's Changed

Full Changelog: takahirom/roborazzi@1.35.0...1.36.0

v1.35.0

Compare Source

Add support for heightDp, widthDp, showBackground, and backgroundColor of Compose Preview parameters

We have introduced Experimental Compose Preview Support in 1.22.0, but it does not yet support all parameters of the @Preview annotation. Thanks to @​sergio-sastre 's pull request, the Experimental Compose Preview Support now includes support for heightDp, widthDp, showBackground, and backgroundColor.

Introduce RoborazziComposeOptions

To accommodate the changes in preview parameters, we’ve made the API more flexible.

We’ve added the RoborazziComposeOptions parameter to ComposablePreview<AndroidPreviewInfo>.captureRoboImage() and the composable function version, captureRoboImage{}. Previously, the API was limited; for example, you couldn’t access the ActivityScenario or the composable function directly. Now, you have full control over these components. Thank you for your code review @​sergio-sastre

Here’s an example of a custom option:

    captureRoboImage(
      roborazziComposeOptions = RoborazziComposeOptions {
        // We have several options to configure the test environment.
        fontScale(2f)
        // We can also configure the activity scenario and the composable content.
        addOption(
          object : RoborazziComposeComposableOption,
            RoborazziComposeActivityScenarioOption {
            override fun configureWithActivityScenario(scenario: ActivityScenario<out Activity>) {
              scenario.onActivity {
                it.window.decorView.setBackgroundColor(Color.BLUE)
              }
            }

            override fun configureWithComposable(content: @&#8203;Composable () -> Unit): @&#8203;Composable () -> Unit {
              return {
                Box(Modifier
                  .padding(10.dp)
                  .background(color = androidx.compose.ui.graphics.Color.Red)
                  .padding(10.dp)
                ) {
                  content()
                }
              }
            }
          }
        )
      },
    ) {
      Text("Hello Compose!")
    }

image

Breaking Change: fun ComposablePreview<AndroidPreviewInfo>.applyToRobolectricConfiguration() is now deprecated and marked as an error

As part of our updates to how composables are configured, the applyToRobolectricConfiguration() function is now deprecated and marked as an error. Instead, you can use one of the following alternatives:

  • previewInfo.toRoborazziComposeOptions().apply(scenario, composeContent)
  • ComposablePreview<AndroidPreviewInfo>.captureRoboImage(roborazziComposeOptions)

We believe this feature is not widely used, and the migration should be straightforward. However, if you encounter any issues, please don’t hesitate to reach out.

Breaking Change: Composable captureRoboImage{} Behavior Change

We intended to use a transparent background for the Compose captureRoboImage function, but it was not applied due to Robolectric's resource merging mechanism. We have fixed this behavior; however, this change will result in altered screenshots. You can now specify the background in the new RoborazziComposeOptions as we had previously.

@&#8203;Test
fun captureComposeLambdaImage() {
    captureRoboImage(
        roborazziComposeOptions = RoborazziComposeOptions {
            background(
                showBackground = true
            )
        }
    ) {
        Text("Hello Compose!")
    }
}
What's Changed

Configuration

📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM ( * 0-3 * * * ) in timezone Asia/Seoul, Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot requested a review from jisungbin as a code owner August 11, 2023 16:38
@renovate renovate bot enabled auto-merge (rebase) August 11, 2023 16:38
@renovate renovate bot force-pushed the renovate/test.roborazzi branch 2 times, most recently from 71edbfc to 37679f0 Compare August 17, 2023 19:45
@renovate renovate bot force-pushed the renovate/test.roborazzi branch 3 times, most recently from d69422f to 767e6bc Compare August 26, 2023 06:16
@renovate renovate bot force-pushed the renovate/test.roborazzi branch 6 times, most recently from 91741b8 to aea3340 Compare September 6, 2023 22:35
@jisungbin jisungbin removed their request for review September 7, 2023 00:47
@renovate renovate bot force-pushed the renovate/test.roborazzi branch 4 times, most recently from 47c80b8 to 6f0fb26 Compare September 14, 2023 18:12
@renovate renovate bot force-pushed the renovate/test.roborazzi branch 2 times, most recently from 8ba7e81 to 7ae5a9c Compare September 18, 2023 07:17
@renovate renovate bot changed the title chore(deps): update test.roborazzi to v1.4.0 chore(deps): update test.roborazzi to v1.5.0 Sep 18, 2023
@renovate renovate bot force-pushed the renovate/test.roborazzi branch 3 times, most recently from 1f0f766 to ef8b1f5 Compare September 25, 2023 12:14
@renovate renovate bot force-pushed the renovate/test.roborazzi branch 3 times, most recently from 69b04cb to 04f0f71 Compare October 6, 2023 18:24
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 04f0f71 to e3a9d1d Compare October 8, 2023 06:51
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 7b67227 to 8a586ac Compare February 11, 2025 11:52
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.40.1 fix(deps): update test.roborazzi to v1.41.0 Feb 11, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 8a586ac to 528fbc4 Compare February 13, 2025 02:52
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.41.0 fix(deps): update test.roborazzi to v1.41.1 Feb 13, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 528fbc4 to 60983d2 Compare February 16, 2025 06:32
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.41.1 fix(deps): update test.roborazzi to v1.42.0 Feb 16, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 60983d2 to 9ce6965 Compare February 27, 2025 12:03
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.42.0 fix(deps): update test.roborazzi to v1.43.0 Feb 27, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 9ce6965 to 8e14b6e Compare March 21, 2025 03:25
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.43.0 fix(deps): update test.roborazzi to v1.43.1 Mar 21, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 8e14b6e to d923990 Compare June 1, 2025 13:54
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.43.1 fix(deps): update test.roborazzi to v1.44.0 Jun 1, 2025
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.44.0 fix(deps): update test.roborazzi Jun 18, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from d923990 to 19d312e Compare June 19, 2025 03:56
@renovate renovate bot changed the title fix(deps): update test.roborazzi fix(deps): update test.roborazzi to v1.45.1 Jun 19, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 19d312e to 48bcc88 Compare July 5, 2025 17:14
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.45.1 fix(deps): update test.roborazzi to v1.46.1 Jul 5, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 48bcc88 to fcfdd0e Compare August 11, 2025 13:02
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.46.1 fix(deps): update test.roborazzi to v1.47.0 Aug 11, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from fcfdd0e to 93811d3 Compare August 14, 2025 09:40
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.47.0 fix(deps): update test.roborazzi to v1.48.0 Aug 14, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 93811d3 to 6f4eb24 Compare August 19, 2025 05:36
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.48.0 fix(deps): update test.roborazzi to v1.49.0 Aug 19, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 6f4eb24 to 5de058e Compare August 23, 2025 04:27
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.49.0 fix(deps): update test.roborazzi to v1.50.0 Aug 23, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 5de058e to 1bca0e7 Compare November 4, 2025 07:09
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.50.0 fix(deps): update test.roborazzi to v1.51.0 Nov 4, 2025
@renovate renovate bot force-pushed the renovate/test.roborazzi branch from 1bca0e7 to 34c3674 Compare November 24, 2025 10:38
@renovate renovate bot changed the title fix(deps): update test.roborazzi to v1.51.0 fix(deps): update test.roborazzi to v1.52.0 Nov 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant