Skip to content
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

Update roborazzi to v1.32.2 #101

Merged
merged 1 commit into from
Nov 18, 2024
Merged

Update roborazzi to v1.32.2 #101

merged 1 commit into from
Nov 18, 2024

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Nov 3, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
io.github.takahirom.roborazzi 1.29.0 -> 1.32.2 age adoption passing confidence
io.github.takahirom.roborazzi:roborazzi-junit-rule 1.29.0 -> 1.32.2 age adoption passing confidence
io.github.takahirom.roborazzi:roborazzi-compose 1.29.0 -> 1.32.2 age adoption passing confidence
io.github.takahirom.roborazzi:roborazzi 1.29.0 -> 1.32.2 age adoption passing confidence

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 to webp in your gradle.properties file to generate WebP images.
To enable WebP support, add testImplementation("io.github.darkxanter:webp-imageio:0.3.3") to your build.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.

onView(ViewMatchers.withId(R.id.textview_first))
  .captureRoboImage(
    roborazziOptions = RoborazziOptions(
      recordOptions = RoborazziOptions.RecordOptions(
        imageIoFormat = LosslessWebPImageIoFormat(),
      ),
    )
  )

You can also use other image formats by implementing your own AwtImageWriter and AwtImageLoader.

data class JvmImageIoFormat(
  val awtImageWriter: AwtImageWriter,
  val awtImageLoader: AwtImageLoader
) : ImageIoFormat

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

  • The OpenAiAiAssertionModel, which utilizes OpenAI APIs, previously lacked a timeout specification, leading to frequent timeout issues. We have now implemented a customizable timeout setting.
  • The provideRoborazziContext().option was marked as 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 in gradle.properties, allowing users to automatically remove outdated screenshots. By default, this is set to false 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.

image

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 either roborazzi-ai-gemini or roborazzi-ai-openai as dependencies.

  onView(ViewMatchers.isRoot())
    .captureRoboImage(
      roborazziOptions = provideRoborazziContext().options.addedAiAssertion(
        assertionPrompt = "The screen should have a PREVIOUS button",
      )
   )

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 file compose/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 the context(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 to assertionPrompt.

  • Use max_tokens instead of max_completion_tokens for the OpenAI API:
    Although max_tokens has been deprecated, we still need to use it in certain environments.

What's Changed
New 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.


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

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

Copy link

codecov bot commented Nov 3, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 84.72%. Comparing base (1afc0a0) to head (c4678e3).
Report is 11 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #101      +/-   ##
==========================================
- Coverage   84.99%   84.72%   -0.27%     
==========================================
  Files          23       23              
  Lines        2752     2776      +24     
  Branches      232      240       +8     
==========================================
+ Hits         2339     2352      +13     
- Misses        198      209      +11     
  Partials      215      215              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@renovate renovate bot changed the title Update roborazzi to v1.30.0 Update roborazzi to v1.30.1 Nov 4, 2024
@renovate renovate bot force-pushed the renovate/roborazzi branch 2 times, most recently from 97fc079 to 3e05f8d Compare November 5, 2024 12:58
@renovate renovate bot changed the title Update roborazzi to v1.30.1 Update roborazzi to v1.31.0 Nov 5, 2024
@renovate renovate bot force-pushed the renovate/roborazzi branch from 3e05f8d to 0522693 Compare November 7, 2024 05:16
@renovate renovate bot changed the title Update roborazzi to v1.31.0 Update roborazzi to v1.32.0 Nov 7, 2024
@renovate renovate bot changed the title Update roborazzi to v1.32.0 Update roborazzi Nov 7, 2024
@renovate renovate bot force-pushed the renovate/roborazzi branch from 0522693 to b02fb22 Compare November 7, 2024 09:23
@renovate renovate bot changed the title Update roborazzi Update roborazzi to v1.32.1 Nov 7, 2024
@renovate renovate bot changed the title Update roborazzi to v1.32.1 Update roborazzi Nov 9, 2024
@renovate renovate bot force-pushed the renovate/roborazzi branch from b02fb22 to c4678e3 Compare November 9, 2024 03:27
@renovate renovate bot changed the title Update roborazzi Update roborazzi to v1.32.2 Nov 9, 2024
Copy link

sonarqubecloud bot commented Nov 9, 2024

@jmartinesp jmartinesp merged commit 2f3410d into main Nov 18, 2024
4 of 5 checks passed
@jmartinesp jmartinesp deleted the renovate/roborazzi branch November 18, 2024 12:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant