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

Merged
merged 1 commit into from
Nov 9, 2024
Merged

Update roborazzi to v1.32.1 #333

merged 1 commit into from
Nov 9, 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.1 age adoption passing confidence
io.github.takahirom.roborazzi:roborazzi 1.29.0 -> 1.32.1 age adoption passing confidence

Release Notes

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

@renovate renovate bot changed the title Update roborazzi to v1.30.0 Update roborazzi to v1.30.1 Nov 4, 2024
@renovate renovate bot changed the title Update roborazzi to v1.30.1 Update roborazzi Nov 5, 2024
@renovate renovate bot changed the title Update roborazzi Update roborazzi to v1.31.0 Nov 5, 2024
@renovate renovate bot changed the title Update roborazzi to v1.31.0 Update roborazzi Nov 7, 2024
@renovate renovate bot changed the title Update roborazzi Update roborazzi to v1.32.1 Nov 7, 2024
@thomaskioko thomaskioko merged commit dc8127e into main Nov 9, 2024
9 checks passed
@thomaskioko thomaskioko deleted the renovate/roborazzi branch November 9, 2024 02:11
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