Skip to content

Releases: takahirom/roborazzi

1.29.0

13 Oct 02:42
2f78447
Compare
Choose a tag to compare

Bug Fixes

We introduced an image diff percentage in the report. However, when the screenshot's image size changes, there was an issue causing Roborazzi to crash. We have added a test for image size changes and fixed this problem. Thank you for reporting this. @Daiji256

Breaking Change

We are migrating our codebase to Kotlin Multiplatform (KMP). Roborazzi uses dropbox/differ to calculate image diffs. Thanks to @eyedol 's contribution, differ now supports KMP for iOS, so we updated dropbox/differ. Some KMP migration is still needed for iOS support.

What's Changed

  • Initial integration of differ to support iOS by @eyedol in #496
  • Add failing change size test and make diff percent nullable by @takahirom in #506

Full Changelog: 1.28.0...1.29.0

1.28.0

06 Oct 05:41
078140d
Compare
Choose a tag to compare

Breaking changes

Now we are using gradlePropertiesPrefixedBy to support Gradle Isolated Projects in the Roborazzi Gradle Plugin. This API requires Gradle 8.0. Gradle 8.0 was released early last year, and most projects I know use 8.0 or higher, so Roborazzi is going to use this API. If anyone can't use this, please let me know.
@trevjonez, thank you for telling me what we need to do to support this.
Currently, we aren't able to ensure compatibility with Gradle Isolated Projects, but this could bring some progress.

Adapting to the new ComposablePreviewScanner version

We are using ComposablePreviewScanner for Compose Preview Supportο»Ώ. The ComposablePreviewScanner is now on Maven Central πŸŽ‰ and the group name of the libraries has changed. We have adapted to the new version and don't show errors when not using Jitpack and using the new packages.

What's Changed

  • Update AGP by @takahirom in #498
  • Use gradlePropertiesPrefixedBy instead of project.properties for Gradle Isolated Projects by @takahirom in #499
  • Remove verifyMavenRepository because ComposablePreviewScanner is now on Maven Central by @takahirom in #501

Full Changelog: 1.27.0...1.28.0

1.27.0

02 Oct 01:38
2e4b3eb
Compare
Choose a tag to compare

Bugfix for Compose Preview Supportο»Ώ

As Compose Preview Supportο»Ώ don't automatically add dependencies to maintain a single source of truth for user projects, they should show warnings when the required dependencies are missing. However, the warnings were not shown, so I fixed this issue. Thanks for reporting this! @kktaro

Diff Percentage to Report File

@vladcudoidem added the diff percentage to report files. You can use it in your CI workflow or project statistics.

The Roborazzi AI feature prototype is ongoing. πŸ€–

This version does not include it, but I've implemented a prototype for using AI for assertions. If you are interested, please check it out and leave feedback.
#491

What's Changed

  • [Sample / Tests]Update dependency androidx.compose.material:material to v1.6.8 by @renovate in #407
  • [Sample/Tests]Update androidx.test.ext.junit to v1.2.1 by @renovate in #468
  • [IntelliJ Plugin] Show screenshot filename multiple lines by @sanao1006 in #470
  • [IntelliJ Plugin] Filtering Images by Text Field by @sanao1006 in #476
  • [CI] chore(deps): update github artifact actions to v4 (major) by @renovate in #482
  • [Feature] Implement diff. percentage by @vladcudoidem in #480
  • [IntelliJ Plugin] fix duplicate screenshot by @yuchan2215 in #494
  • [Docs] update preview screenshot docs by @YusukeMoriJapan in #488
  • [Bug fixes] Fix preview dependency check by @takahirom in #495

New Contributors

Full Changelog: 1.26.0...1.27.0

idea-1.8.0

07 Sep 07:52
1924d40
Compare
Choose a tag to compare

Thanks again to @sanao1006's contribution, we now have searching support for file names in the Roborazzi IntelliJ Plugin.

video_filter.mov

What's Changed

Full Changelog: idea-1.7.0...idea-1.8.0

idea-1.7.0

20 Aug 01:10
91c5e45
Compare
Choose a tag to compare

Thanks to @sanao1006's contribution, we now have multi-line name support for file names in the Roborazzi IntelliJ Plugin.

robo_video.mov

https://plugins.jetbrains.com/plugin/24561-roborazzi

What's Changed

Full Changelog: 1.26.0...idea-1.7.0

1.26.0

06 Aug 01:30
1087091
Compare
Choose a tag to compare

Bugfix for iOS Compose Roborazzi

The iOS Compose Roborazzi has broken. The reason is that GitHub's macos-latest has switched to an ARM-based CPU, and our tests have been running X64Test. We couldn't check the status of iOS Roborazzi. We have fixed this bug that prevented us from writing the test result JSON. Special thanks to @eyedol for the prompt fix!

What's Changed

  • [IntelliJ IDEA Plugin] Don't crop dropdown task run button by @eyedol in #455
  • [Sample / Tests]Update dependency androidx.compose.runtime:runtime to v1.6.8 by @renovate in #343
  • Set a classDiscriminator to avoid polymorphic serializer error by @eyedol in #464

Full Changelog: 1.25.0...1.26.0

1.25.0

29 Jul 05:21
754ec92
Compare
Choose a tag to compare

New Experimental Gradle Task: clear

The Roborazzi Gradle Plugin saves image caches in build/intermediates/roborazzi. When users remove images in build/outputs/roborazzi and rerun the tests, it doesn't work as expected. To address this, we've added a Gradle task clearRoborazziDebug to remove all images.

I'm gathering feedback about this task in #452. Please let me know if this causes any issues in your workflow. I'm aware that there are many different ways to use Roborazzi, and I'd like to improve your project workflow.

What's Changed

  • [IDE Plugin] Hide dropdown border if no gradle tasks exists by @eyedol in #451 Thank you for your contribution!
  • [Feature] Add clear roborazzi task by @takahirom in #453

Full Changelog: 1.24.0...1.25.0

1.24.0

27 Jul 11:23
430f8ad
Compare
Choose a tag to compare

New feature: Support for includePrivatePreviews in Compose Preview Support

Compose Preview Support, initially released in version 1.22.0, now includes the includePrivatePreviews option. This feature allows you to include private previews in your Compose Preview Support setup. You can enable this by setting includePrivatePreviews in roborazzi.generateComposePreviewRobolectricTests.includePrivatePreviews. Thank you for submitting this feature request, @yuchan2215 !

New feature: JUnit rule support in ComposePreviewTester

We've enhanced ComposePreviewTester to support JUnit rules. Previously, ComposePreviewTester lacked lifecycle hooks, which made certain scenarios challenging to handle. Now, you can pass your own Test rules, including your Compose Test Rule, and use them in tests. For a sample implementation, check out this integration test.

Breaking changes for users of the ComposePreviewTester interface

As we continue to improve Compose Preview Support, we've made some changes to the ComposePreviewTester interface. These changes introduce a breaking change for current users.

ComposePreviewTester is an interface for modifying the behavior of Compose Preview Support. Previously, the API was prone to breaking changes with each new option added. We've addressed this issue by introducing a new options() function. However, this necessitates a change in how you use the interface.

Old interface:

fun previews(vararg packages: String): List<ComposablePreview<T>>

New interface (Packages can now be accessed via options().scanOptions.packages):

fun previews(): List<ComposablePreview<T>>

Acknowledgments

We'd like to extend our sincere thanks to @yschimke and @sergio-sastre for their valuable design reviews and insightful feedback, which greatly contributed to the improvements in this release.

What's Changed

  • [Idea Plugin] Improve performance of idea plugin by @takahirom in #439
  • [Idea Plugin] Prepare for release of IntelliJ IDEA plugin by @takahirom in #442
  • [Idea Plugin] Tweak idea plugin UI by @takahirom in #443
  • [Feature, Breaking Changes] Support includePrivatePreviews of ComposablePreviewScanner by @takahirom in #445
  • [Docs] Add mention to the sample in Compose Preview Support document by @takahirom in #448
  • [Docs] Fix URL of the README link by @takahirom in #449

Full Changelog: 1.23.0...1.24.0

Roborazzi IntelliJ idea plugin 1.4.0

20 Jul 00:49
0faf2e8
Compare
Choose a tag to compare

Thanks to @eyedol's contribution, we now have a feature that allows us to run Roborazzi Gradle tasks from the Roborazzi IntelliJ Plugin. This is more intuitive for beginners and enables us to set up the Roborazzi Plugin as a required plugin.

run.Roborazzi.Gradle.tasks.from.the.Roborazzi.IntelliJ.Plugin2.mov

https://plugins.jetbrains.com/plugin/24561-roborazzi

What's Changed

Full Changelog: idea-1.3.0...idea-1.4.0

1.23.0

18 Jul 03:22
b10e3e9
Compare
Choose a tag to compare

Breaking Changes to roborazzi.generateComposePreviewRobolectricTests.customTestQualifiedClassName Gradle Extension

We released roborazzi.generateComposePreviewRobolectricTests.customTestQualifiedClassName in the previous release 1.22.0, allowing customization of preview test behavior. We have since discovered that the interface of RobolectricPreviewTest cannot adapt to Compose Multiplatform Preview because RobolectricPreviewTest uses AndroidPreviewInfo from ComposablePreviewScanner, which represents Android Compose Preview. To address this, we have added a generic parameter to handle the annotation and renamed RobolectricPreviewTest to ComposePreviewTester.

The Gradle extension property has been renamed:

roborazzi.generateComposePreviewRobolectricTests.customTestQualifiedClassName -> roborazzi.generateComposePreviewRobolectricTests.testerQualifiedClassName

Old interface:

interface RobolectricPreviewTest {
  fun previews(vararg packages: String): List<ComposablePreview<AndroidPreviewInfo>>

  fun test(
    preview: ComposablePreview<AndroidPreviewInfo>,
  )
}

New interface:

interface ComposePreviewTester<T : Any> {
  fun previews(vararg packages: String): List<ComposablePreview<T>>

  fun test(
    preview: ComposablePreview<T>,
  )
}

What's Changed

  • Rename ComposePreviewRobolectricTest to ComposePreviewTester to support custom Preview annotation tests in Experimental Compose Preview Support by @takahirom in #438
  • [Idea Plugin]Adjust some idea plugin behaviors by @takahirom in #431 We haven't released this feature yet. Stay tuned!

Full Changelog: 1.22.2...1.23.0