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:
33.4.0
->33.5.1
0.90.2
->0.90.3
0.90.2
->0.90.3
3.0.0
->3.0.1
3.0.0
->3.0.1
3.0.0
->3.0.1
3.0.0
->3.0.1
3.0.0
->3.0.1
3.0.0-rc01
->3.0.1
3.0.0-rc01
->3.0.1
3.0.0-rc01
->3.0.1
3.0.0-rc01
->3.0.1
2.9.1
->2.10.0
2.9.1
->2.10.0
2024.10.00
->2024.10.01
2.8.6
->2.8.7
2.8.6
->2.8.7
1.9.0
->1.9.1
1.29.0
->1.32.1
1.29.0
->1.32.1
1.29.0
->1.32.1
1.29.0
->1.32.1
1.13.1
->1.15.0
8.6.1
->8.7.2
8.6.1
->8.7.2
8.6.1
->8.7.2
8.6.1
->8.7.2
Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
pdvrieze/xmlutil (io.github.pdvrieze.xmlutil:serialization)
v0.90.3
Changes:
are always invalid). Note that namespaces can be specified using
@XmlSerialName
(for tags) and@XmlNamespaceDeclSpec
(foradditional names).
threadLocal version, but the thread unsafe default is also available,
as is the
FormatCache.Dummy
cache that does no caching.Fixes:
as reported in #249.
multithreading issues when reusing the format (recommended for speed)
ktorio/ktor (io.ktor:ktor-serialization-kotlinx-json)
v3.0.1
Compare Source
Bugfixes
Url.segments
throws on URLs with root path (KTOR-7625)Improvements
username
andcnonce
parameters aren't surrounded with quotes (KTOR-7561)coil-kt/coil (io.coil-kt.coil3:coil-test)
v3.0.1
Compare Source
Image.toBitmap
with a hardware bitmap-backedBitmapImage
.AsyncImageModelEqualityDelegate.Default
comparing equality incorrectly for non-ImageRequest
models.v3.0.0
Compare Source
Coil 3.0.0 is the next major release of Coil with full support for Compose Multiplatform.
For the full list of improvements and important changes in 3.0.0, check out the upgrade guide.
Changes since
3.0.0-rc02
:v3.0.0-rc02
Compare Source
For the full list of improvements and important changes in 3.x, check out the upgrade guide. Changes since
3.0.0-rc01
:BlackholeDecoder
. This simplifies disk-cache only preloading.remember
functions forConstraintsSizeResolver
andDrawScopeSizeResolver
.EqualityDelegate
as a parameter toAsyncImage
. Instead, it should be set throughLocalAsyncImageModelEqualityDelegate
.AsyncImage
not rendering when parent composable usesIntrinsicSize
.AsyncImage
filling the available constraints whenAsyncImagePainter
has no child painter.rememberAsyncImagePainter
recomposing infinitely when its state is observed due toEqualityDelegate
being ignored.File
/Path
paths with special characters.FileSystem
implementations withVideoFrameDecoder
.3.0.0
.androidx.annotation
to1.9.0
.takahirom/roborazzi (io.github.takahirom.roborazzi)
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.
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
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.
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.What's Changed
Full Changelog: takahirom/roborazzi@1.31.0...1.32.0
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 - "before 4am on Monday" (UTC), 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.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.