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.29.0
->1.32.2
1.29.0
->1.32.2
1.29.0
->1.32.2
1.29.0
->1.32.2
Release Notes
takahirom/roborazzi (io.github.takahirom.roborazzi)
v1.32.2
Compare Source
WebP Image Comparison Improvements
Improved handling for transparent pixels in WebP image comparisons. Previously, transparent pixels in WebP images were sometimes returned with unexpected color values (e.g., r = 1, g = 0, b = 0, a = 0), which caused inconsistencies in image comparisons. The comparison logic now correctly handles transparent pixels by interpreting them as fully transparent black (r = 0, g = 0, b = 0, a = 0) to ensure consistent results across comparisons.
Special thanks to @ArcaNO93 for identifying and reporting this issue!
What's Changed
Full Changelog: takahirom/roborazzi@1.32.1...1.32.2
v1.32.1
Compare Source
Experimental WebP support and other image formats
Now, you can set
roborazzi.record.image.extension
towebp
in yourgradle.properties
file to generate WebP images.To enable WebP support, add
testImplementation("io.github.darkxanter:webp-imageio:0.3.3")
to yourbuild.gradle.kts
file.roborazzi.record.image.extension=webp
WebP is a lossy image format by default, which can make managing image differences challenging. To address this, we provide a lossless WebP image feature.
WebP lossless images are reported to be 26% smaller in size compared to PNGs.
You can also use other image formats by implementing your own
AwtImageWriter
andAwtImageLoader
.Thank you, @ArcaNO93, for providing this suggestion and the code review!
Adjustments to AI-Powered Image Assertion
In version 1.30.0, we introduced Roborazzi AI-Powered Image Assertion.
We made some adjustments to the AI-Powered Image Assertion
InternalRoborazziApi
despite being documented in the README. We have now changed it to ExperimentalRoborazzi API.Changes from 1.32.0
API Key Masking in Logs for OpenAiAiAssertionModel
For users enabling logging through
OpenAiAiAssertionModel.loggingEnabled
, API keys in log outputs are now masked to improve security. Previously, API keys could appear in logs, which could unintentionally expose them, especially in test reports. With this update, sensitive data is automatically masked, helping users avoid accidental exposure.What's Changed
Full Changelog: takahirom/roborazzi@1.31.0...1.32.1
v1.32.0
Compare Source
Please refer to the 1.32.1 release at https://github.com/takahirom/roborazzi/releases/tag/1.32.1
v1.31.0
Compare Source
Added Experimental Support for Cleaning Up Old Screenshots
This release introduces the
roborazzi.cleanupOldScreenshots=true
option ingradle.properties
, allowing users to automatically remove outdated screenshots. By default, this is set tofalse
to prevent accidental deletions when running filtered tests. Please note that enabling this option may result in unintended deletions when running filtered tests. You can use-Proborazzi.cleanupOldScreenshots=true
for CI configurations to clean up screenshots only in CI runs without affecting local settings.This cleanup implementation may affect the cache mechanism. We have some integration tests in place, but if you notice any issues, please let us know.
Thank you, @JackEblan, for suggesting the cleanup feature!
Improve AI Assertion Error Message
In the previous release, we introduced Roborazzi AI-Powered Image Assertion.
When an AI assertion fails, it’s important to review the screenshots to understand what went wrong with the images. Therefore, I enhanced the error message to include the file paths of the images.
What's Changed
Full Changelog: takahirom/roborazzi@1.30.1...1.31.0
v1.30.1
Compare Source
Roborazzi AI-Powered Image Assertion 🤖 ✨
Roborazzi introduces an experimental AI-powered image assertion feature to simplify and scale the process of verifying screenshot test content. This feature helps automate tedious visual checks by comparing images based on customizable AI prompts, utilizing either the Gemini API or OpenAI API. It only activates when images differ, conserving resources. Additionally, manual AI assertion is available, allowing users to leverage local language models without external dependencies.
We don't include Gemini or OpenAI dependencies in the
roborazzi
module. To use these models, you can add eitherroborazzi-ai-gemini
orroborazzi-ai-openai
as dependencies.For more information, please check out this documentation page:
https://takahirom.github.io/roborazzi/ai-powered-image-assertion.html
Roborazzi Compose Preview Support now supports the device parameter
@Preview(device = "")
📱Roborazzi Compose Preview Support uses ComposablePreviewScanner and ComposablePreviewScanner now supports parsing device parameter. It is introduced to Compose Preview Support. Thank you, @sergio-sastre, for developing this adapter and integrating it with Roborazzi.
If you are using Roborazzi Compose Preview Support with device parameters, you need to update your ComposablePreviewScanner to version 0.4.0.
Remove Context Receiver from roborazzi-desktop ♻️
The Context Receiver in Kotlin is now deprecated, so we need to remove it. The
context(DesktopComposeUiTest)
requirement existed because the filecompose/ui/ui-test/src/skikoMain/kotlin/androidx/compose/ui/test/SkikoImageHelpers.kt
was previously unavailable, necessitating the use of DesktopComposeUiTest. Now that SkikoImageHelpers is available, we can eliminate thecontext(DesktopComposeUiTest)
requirement.This functionality was introduced in the Compose Multiplatform core repository (commit
1664fba
: JetBrains/compose-multiplatform-core@1664fba) and has been supported since Compose Multiplatform version 1.5.12 (https://github.com/JetBrains/compose-multiplatform-core/releases/tag/v1.5.12).Please note that this may be a breaking change if you are using Compose Multiplatform version 1.5.12 or earlier.
Changes from 1.30.0
Breaking changes to 1.30.0:
Renamed parameter
assertPrompt
toassertionPrompt
.Use
max_tokens
instead ofmax_completion_tokens
for the OpenAI API:Although
max_tokens
has been deprecated, we still need to use it in certain environments.What's Changed
eef6144
by @renovate in https://github.com/takahirom/roborazzi/pull/509b4b15b8
by @renovate in https://github.com/takahirom/roborazzi/pull/51011bd719
by @renovate in https://github.com/takahirom/roborazzi/pull/519assertPrompt
toassertionPrompt
by @takahirom in https://github.com/takahirom/roborazzi/pull/535New Contributors
Full Changelog: takahirom/roborazzi@1.29.0...1.30.0
Full Changelog: takahirom/roborazzi@1.30.0...1.30.1
v1.30.0
Compare Source
Please refer to version 1.30.1
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.