takahirom/roborazzi (io.github.takahirom.roborazzi:roborazzi-junit-rule)
### [`v1.30.1`](https://redirect.github.com/takahirom/roborazzi/releases/tag/1.30.1)
[Compare Source](https://redirect.github.com/takahirom/roborazzi/compare/1.30.0...1.30.1)
#### 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.**
```kotlin
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](https://redirect.github.com/sergio-sastre/ComposablePreviewScanner) and [ComposablePreviewScanner now supports parsing device parameter](https://redirect.github.com/sergio-sastre/ComposablePreviewScanner/releases/tag/0.4.0). It is introduced to Compose Preview Support. Thank you, [@sergio-sastre](https://redirect.github.com/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`](https://redirect.github.com/takahirom/roborazzi/commit/1664fba): https://github.com/JetBrains/compose-multiplatform-core/commit/1664fba611ae965a7815c6432485da8bcbb0f47f) 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
- \[Documentation] Add description how to configure Differ by [@darekbx](https://redirect.github.com/darekbx) in [https://github.com/takahirom/roborazzi/pull/507](https://redirect.github.com/takahirom/roborazzi/pull/507)
- \[Idea Plugin] Fix the issue with the Roborazzi Idea Plugin not being able to display images by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/504](https://redirect.github.com/takahirom/roborazzi/pull/504)
- \[CI] Update actions/checkout digest to [`eef6144`](https://redirect.github.com/takahirom/roborazzi/commit/eef6144) by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/509](https://redirect.github.com/takahirom/roborazzi/pull/509)
- \[CI] Update actions/upload-artifact digest to [`b4b15b8`](https://redirect.github.com/takahirom/roborazzi/commit/b4b15b8) by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/510](https://redirect.github.com/takahirom/roborazzi/pull/510)
- \[CI] Add dependency diff by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/514](https://redirect.github.com/takahirom/roborazzi/pull/514)
- \[CI] Fix dependency diff workflow by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/516](https://redirect.github.com/takahirom/roborazzi/pull/516)
- \[CI] Fix comment workflow diff path by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/517](https://redirect.github.com/takahirom/roborazzi/pull/517)
- \[Sample/Tests dependency. Not library dependency] Update dependency androidx.compose.ui:ui-test-junit4 to v1.7.4 by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/469](https://redirect.github.com/takahirom/roborazzi/pull/469)
- \[CI] Pin dependencies by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/518](https://redirect.github.com/takahirom/roborazzi/pull/518)
- \[CI] Update actions/checkout digest to [`11bd719`](https://redirect.github.com/takahirom/roborazzi/commit/11bd719) by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/519](https://redirect.github.com/takahirom/roborazzi/pull/519)
- \[BREAKING CHANGE in Roborazzi Plugin (I believe this library is not very popular, so I don't anticipate any issues, but please let me know if anything comes up.)] Update dependency org.webjars:webjars-locator-lite to v0.0.6 by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/425](https://redirect.github.com/takahirom/roborazzi/pull/425)
- \[Sample/Tests dependency. Not library dependency] Update dependency androidx.compose.material3:material3 to v1.3.0 by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/521](https://redirect.github.com/takahirom/roborazzi/pull/521)
- \[Sample/Tests dependency. Not library dependency] Update dependency androidx.compose.material:material to v1.7.5 by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/523](https://redirect.github.com/takahirom/roborazzi/pull/523)
- \[Sample/Tests dependency. Not library dependency] Update dependency androidx.compose.material3:material3 to v1.3.1 by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/525](https://redirect.github.com/takahirom/roborazzi/pull/525)
- Try to remove context receiver of desktop by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/533](https://redirect.github.com/takahirom/roborazzi/pull/533)
- Use RobolectricDeviceQualifierBuilder from ComposablePreviewScanner to support preview info "device" by [@sergio-sastre](https://redirect.github.com/sergio-sastre) in [https://github.com/takahirom/roborazzi/pull/530](https://redirect.github.com/takahirom/roborazzi/pull/530)
- Roborazzi AI-Powered Image Assertion by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/491](https://redirect.github.com/takahirom/roborazzi/pull/491)
- Add roborazzi-ai-gemini roborazzi-ai-openai to dependency diff by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/534](https://redirect.github.com/takahirom/roborazzi/pull/534)
- Fix the naming of `assertPrompt` to `assertionPrompt` by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/535](https://redirect.github.com/takahirom/roborazzi/pull/535)
- Use max_tokens instead of max_completion_tokens for OpenAI API by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/536](https://redirect.github.com/takahirom/roborazzi/pull/536)
#### New Contributors
- [@darekbx](https://redirect.github.com/darekbx) made their first contribution in [https://github.com/takahirom/roborazzi/pull/507](https://redirect.github.com/takahirom/roborazzi/pull/507)
- [@sergio-sastre](https://redirect.github.com/sergio-sastre) made their first contribution in [https://github.com/takahirom/roborazzi/pull/530](https://redirect.github.com/takahirom/roborazzi/pull/530)
**Full Changelog**: https://github.com/takahirom/roborazzi/compare/1.29.0...1.30.0
**Full Changelog**: https://github.com/takahirom/roborazzi/compare/1.30.0...1.30.1
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), 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 contains the following updates:
1.30.0
->1.30.1
1.30.0
->1.30.1
1.30.0
->1.30.1
1.30.0
->1.30.1
1.30.0
->1.30.1
Release Notes
takahirom/roborazzi (io.github.takahirom.roborazzi:roborazzi-junit-rule)
### [`v1.30.1`](https://redirect.github.com/takahirom/roborazzi/releases/tag/1.30.1) [Compare Source](https://redirect.github.com/takahirom/roborazzi/compare/1.30.0...1.30.1) #### 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.** ```kotlin 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](https://redirect.github.com/sergio-sastre/ComposablePreviewScanner) and [ComposablePreviewScanner now supports parsing device parameter](https://redirect.github.com/sergio-sastre/ComposablePreviewScanner/releases/tag/0.4.0). It is introduced to Compose Preview Support. Thank you, [@sergio-sastre](https://redirect.github.com/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`](https://redirect.github.com/takahirom/roborazzi/commit/1664fba): https://github.com/JetBrains/compose-multiplatform-core/commit/1664fba611ae965a7815c6432485da8bcbb0f47f) 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 - \[Documentation] Add description how to configure Differ by [@darekbx](https://redirect.github.com/darekbx) in [https://github.com/takahirom/roborazzi/pull/507](https://redirect.github.com/takahirom/roborazzi/pull/507) - \[Idea Plugin] Fix the issue with the Roborazzi Idea Plugin not being able to display images by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/504](https://redirect.github.com/takahirom/roborazzi/pull/504) - \[CI] Update actions/checkout digest to [`eef6144`](https://redirect.github.com/takahirom/roborazzi/commit/eef6144) by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/509](https://redirect.github.com/takahirom/roborazzi/pull/509) - \[CI] Update actions/upload-artifact digest to [`b4b15b8`](https://redirect.github.com/takahirom/roborazzi/commit/b4b15b8) by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/510](https://redirect.github.com/takahirom/roborazzi/pull/510) - \[CI] Add dependency diff by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/514](https://redirect.github.com/takahirom/roborazzi/pull/514) - \[CI] Fix dependency diff workflow by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/516](https://redirect.github.com/takahirom/roborazzi/pull/516) - \[CI] Fix comment workflow diff path by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/517](https://redirect.github.com/takahirom/roborazzi/pull/517) - \[Sample/Tests dependency. Not library dependency] Update dependency androidx.compose.ui:ui-test-junit4 to v1.7.4 by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/469](https://redirect.github.com/takahirom/roborazzi/pull/469) - \[CI] Pin dependencies by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/518](https://redirect.github.com/takahirom/roborazzi/pull/518) - \[CI] Update actions/checkout digest to [`11bd719`](https://redirect.github.com/takahirom/roborazzi/commit/11bd719) by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/519](https://redirect.github.com/takahirom/roborazzi/pull/519) - \[BREAKING CHANGE in Roborazzi Plugin (I believe this library is not very popular, so I don't anticipate any issues, but please let me know if anything comes up.)] Update dependency org.webjars:webjars-locator-lite to v0.0.6 by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/425](https://redirect.github.com/takahirom/roborazzi/pull/425) - \[Sample/Tests dependency. Not library dependency] Update dependency androidx.compose.material3:material3 to v1.3.0 by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/521](https://redirect.github.com/takahirom/roborazzi/pull/521) - \[Sample/Tests dependency. Not library dependency] Update dependency androidx.compose.material:material to v1.7.5 by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/523](https://redirect.github.com/takahirom/roborazzi/pull/523) - \[Sample/Tests dependency. Not library dependency] Update dependency androidx.compose.material3:material3 to v1.3.1 by [@renovate](https://redirect.github.com/renovate) in [https://github.com/takahirom/roborazzi/pull/525](https://redirect.github.com/takahirom/roborazzi/pull/525) - Try to remove context receiver of desktop by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/533](https://redirect.github.com/takahirom/roborazzi/pull/533) - Use RobolectricDeviceQualifierBuilder from ComposablePreviewScanner to support preview info "device" by [@sergio-sastre](https://redirect.github.com/sergio-sastre) in [https://github.com/takahirom/roborazzi/pull/530](https://redirect.github.com/takahirom/roborazzi/pull/530) - Roborazzi AI-Powered Image Assertion by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/491](https://redirect.github.com/takahirom/roborazzi/pull/491) - Add roborazzi-ai-gemini roborazzi-ai-openai to dependency diff by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/534](https://redirect.github.com/takahirom/roborazzi/pull/534) - Fix the naming of `assertPrompt` to `assertionPrompt` by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/535](https://redirect.github.com/takahirom/roborazzi/pull/535) - Use max_tokens instead of max_completion_tokens for OpenAI API by [@takahirom](https://redirect.github.com/takahirom) in [https://github.com/takahirom/roborazzi/pull/536](https://redirect.github.com/takahirom/roborazzi/pull/536) #### New Contributors - [@darekbx](https://redirect.github.com/darekbx) made their first contribution in [https://github.com/takahirom/roborazzi/pull/507](https://redirect.github.com/takahirom/roborazzi/pull/507) - [@sergio-sastre](https://redirect.github.com/sergio-sastre) made their first contribution in [https://github.com/takahirom/roborazzi/pull/530](https://redirect.github.com/takahirom/roborazzi/pull/530) **Full Changelog**: https://github.com/takahirom/roborazzi/compare/1.29.0...1.30.0 **Full Changelog**: https://github.com/takahirom/roborazzi/compare/1.30.0...1.30.1Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), 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.
This PR was generated by Mend Renovate. View the repository job log.