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",
)
)
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.
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.
[Sample/Tests dependency. Not library dependency] Update dependency androidx.compose.ui:ui-test-junit4 to v1.7.4 by @renovate in takahirom/roborazzi#469
[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 in takahirom/roborazzi#425
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",
)
)
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.
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.
[Sample/Tests dependency. Not library dependency] Update dependency androidx.compose.ui:ui-test-junit4 to v1.7.4 by @renovate in takahirom/roborazzi#469
[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 in takahirom/roborazzi#425
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps
roborazzi
from 1.29.0 to 1.30.1. Updatesio.github.takahirom.roborazzi:roborazzi
from 1.29.0 to 1.30.1Release notes
Sourced from io.github.takahirom.roborazzi:roborazzi's releases.
... (truncated)
Commits
a278527
1.30.1c908cf3
Merge pull request #536 from takahirom/takahirom/use-max-token-instead-of-max...7d1b417
Merge pull request #535 from takahirom/takahirom/fix-naming-of-assertPrompt-t...c807eb7
Use max_tokens instead of max_completion_tokensbd582a4
Fix the naming ofassertPrompt
toassertionPrompt
094b6b4
Add roborazzi-ai-gemini roborazzi-ai-openai to dependency difff3bf08e
1.30.0e4387b5
Remove gemini test from ManualTest.kt03e2baf
Make libs.ktor.client.core api in roborazzi-ai-openaic11a271
Remove unneeded json objectUpdates
io.github.takahirom.roborazzi
from 1.29.0 to 1.30.1Release notes
Sourced from io.github.takahirom.roborazzi's releases.
... (truncated)
Commits
a278527
1.30.1c908cf3
Merge pull request #536 from takahirom/takahirom/use-max-token-instead-of-max...7d1b417
Merge pull request #535 from takahirom/takahirom/fix-naming-of-assertPrompt-t...c807eb7
Use max_tokens instead of max_completion_tokensbd582a4
Fix the naming ofassertPrompt
toassertionPrompt
094b6b4
Add roborazzi-ai-gemini roborazzi-ai-openai to dependency difff3bf08e
1.30.0e4387b5
Remove gemini test from ManualTest.kt03e2baf
Make libs.ktor.client.core api in roborazzi-ai-openaic11a271
Remove unneeded json objectDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show