Skip to content

Releases: takahirom/roborazzi

1.20.0

29 May 01:07
22780b7
Compare
Choose a tag to compare

Workflow Enhancement

We use images as inputs for tests, ensuring that the compare and verify tasks function correctly. However, while running record tasks, we do not need the input images. Despite this, these input images invalidate the record task and disable the cache. Therefore, we no longer use input images for record tasks. Thank you, @lukas-mercari, for informing us and proposing this improvement.

What's Changed

Full Changelog: 1.19.0...1.20.0

1.19.0

27 May 11:58
8839dc2
Compare
Choose a tag to compare

Bug Fix

I was informed that if you have multiple test suites, the RoborazziPlugin sometimes fails due to concurrent processes. This happens because the cleanup process runs multiple times. Therefore, I made the cleanup process run only once. Thank you for reporting this, @lukas-mercari.

What's Changed

  • Remove unused dependency androidx.compose.ui:ui-graphics by @takahirom #373
  • Fix issue where afterSuite runs for non-root suites by @takahirom in #385

Full Changelog: 1.18.0...1.19.0

1.18.0

25 May 04:08
908ea12
Compare
Choose a tag to compare

Migrating from java.io.File to kotlinx-io

Note: We are not changing the API for users, so the captureRoboImage methods are still using the java.io.File class.
Roborazzi previously used java.io.File for saving and loading files. Although Roborazzi supports iOS, sharing much of the logic is challenging when using java.io.File. Therefore, we have migrated to kotlinx-io.
We are attentive to the Kotlin versions our users employ. We upgraded from version 1.9.21 to 1.9.22 due to a dependency on kotlinx-io. Since Kotlin 1.9.22 was released last year, it should be compatible with most projects.
Thank you, @eyedol, for your outstanding contribution! Your efforts are greatly appreciated.

|    \--- org.jetbrains.kotlinx:kotlinx-io-core:0.3.3
|         +--- org.jetbrains.kotlinx:kotlinx-io-bytestring:0.3.3
|         |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 (*)
|         \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.22 (*)

What's Changed

New Contributors

Full Changelog: 1.17.0...1.18.0

1.17.0

24 May 01:09
d90d1c2
Compare
Choose a tag to compare

Bug Fixes

  • There seemed to be a pattern where ActivityScenario's close was not being called when tests failed, causing leaks, so I used a use block to ensure it is closed properly. @yschimke, thank you for pointing out this issue.
  • At companies that use Roborazzi on a large scale, there were issues with the output dir not being restored properly due to Configuration cache and other factors, so I simplified the design to make problems less likely to occur.
  • There were occasional errors reporting that a directory did not exist, and I've added code to address this issue. @lukas-mercari, thank you for your contribution.

What's Changed

  • Use the use block to prevent leaks by @takahirom in #376
  • Declare input directories as files to avoid issues when they don't exist by @lukas-mercari in #374
  • Fix output image consistency issue by @takahirom in #366
  • [CI] Update toolchain to Java 17 for all modules by @mannodermaus in #365 . Thank you for managing our build process, @mannodermaus!
  • [Sample] fix(deps): update dependency androidx.compose.material:material to v1.6.7 by @renovate in #342
  • fix(deps): update dependency org.robolectric:robolectric to v4.12.2 by @renovate in #369
  • [CI] Exclude io.github.takahirom.roborazzi dependency from Renovate updates by @sanao1006 in #372

New Contributors

Full Changelog: 1.16.1...1.17.0

1.16.1

17 May 13:15
97ed009
Compare
Choose a tag to compare

Bugfix

We removed the setting for the test task's input directory in 1.16.0, but it caused incorrect results in the compare tests. Therefore, I reverted the changes to the test input directory. This bug is now covered by Roborazzi's integration tests.

What's Changed

  • Fix issue where input images are overwritten and add test by @takahirom in #364

Full Changelog: 1.16.0...1.16.1

1.16.0

17 May 03:38
fbf270d
Compare
Choose a tag to compare

Improvements

  • @lukas-mercari informed me that we can optimize our build-cache strategy by eliminating outdated cache invalidation logic. With this adjustment, Roborazzi's integration test time was reduced from 10 minutes to 6 minutes by utilizing caches. Thanks for the excellent improvement suggestion. This might also help other users' projects. Roborazzi's integration tests cover several use cases, but if you encounter any issues related to caching, please let me know.
  • We have been supporting iOS since the previous version of Roborazzi and want to share code with the iOS sourceset as much as possible. Therefore, we migrated from Gson to Kotlinx.serialization 1.6.3. Thank you for your contribution, @sanao1006
  • Roborazzi has been supporting accessibility dumps for Android, and we have now added the capability to check the disabled status within these dumps. Thank you for your contribution, @lukas-mercari !
image

What's Changed

  • Remove unneeded cache invalidation by @takahirom in #362
  • Include Disabled semantic property in accessibility explanation by @lukas-mercari in #361
  • [Docs] Add "Why do my screenshot tests fail inconsistently across different operating systems" section by @takahirom in #353
  • Migrate from Gson to KotlinX.Serialization by @sanao1006 in #350
  • [Sample] fix(deps): update androidx.navigation to v2.7.7 by @renovate in #337
  • [Sample] fix(deps): update dependency androidx.compose.material3:material3 to v1.2.1 by @renovate in #341
  • [CI] chore(deps): update gradle/gradle-build-action action to v2.12.0 by @renovate in #356

Full Changelog: 1.15.0...1.16.0

1.15.0

07 May 01:20
bcee2ce
Compare
Choose a tag to compare

Improvements

  • Resolved a Race Condition in Roborazzi Gradle Integration Tests: In version 1.14.0, we identified an intermittent issue where images from Roborazzi did not always appear in the output directory during certain test scenarios, particularly when test results were cached. Despite efforts to resolve this in 1.14.0, the issue persisted due to its elusive nature. In this release, we have successfully addressed this problem, ensuring that images are now consistently placed in the output directory under similar conditions. This improvement has been verified through our integration tests. This issue may occur in user projects, so we recommend updating to this version.
    We continue to refine our testing processes to prevent similar issues in future releases.

What's Changed

  • Update CompileSdk 34 by @takahirom in #344
  • Add debug code for flaky test by @takahirom in #346
  • Fix issue where finalizedTask is skipped unexpectedly by @takahirom in #347
  • Improve performance for race condition workaround by @takahirom in #348
  • Improve performance for race condition workaround2 by @takahirom in #349
  • [CI]Pin dependencies by @renovate in #329
  • [CI]Update actions/checkout action to v3.6.0 by @renovate in #334
  • [CI]Update actions/setup-java action to v3.13.0 by @renovate in #335
  • [CI]Update dawidd6/action-download-artifact action to v2.28.0 by @renovate in #338
  • [Sample]Update dependency androidx.appcompat:appcompat to v1.6.1 by @renovate in #339
  • [Sample]Update dependency androidx.constraintlayout:constraintlayout to v2.1.4 by @renovate in #330

Full Changelog: 1.14.0...1.15.0

1.14.0

04 May 04:35
b9dedca
Compare
Choose a tag to compare

Bug fixes

Cache-related Flakiness in Comparison Results: We've identified and resolved an intermittent issue where cached data could sometimes prevent users from seeing comparison results in Roborazzi.
#323

What's Changed

New Contributors

Full Changelog: 1.13.0...1.14.0

1.13.0

20 Apr 01:03
d59cede
Compare
Choose a tag to compare

Add experimental, minimal support for iOS in Compose Multiplatform

Roborazzi has supported Compose Desktop, but we hadn't yet supported iOS, which could be a major use case for Compose Multiplatform. Therefore, I have added support for iOS.
Now, you can record, compare, and verify just as you would with Android support.
https://takahirom.github.io/roborazzi/compose-multiplatform.html#experimental-feature-ios-support

ios_button_compare

However, Roborazzi is fundamentally based on the JVM. Currently, we offer only minimal features. If you are interested in helping to improve these features, please take a look at these issues:
#302 #305

Changes Affecting Existing Support

To support iOS, we have made some dependency changes for Android and Compose Desktop. I believe these changes will not affect existing behavior. However, if you notice anything, please let me know.

All
Kotlin:
1.8.22 -> 1.9.21

dropbox/differ:
0.0.1 -> 0.0.2

Desktop Compose Version

Compose Multiplatform:
1.4.3 -> 1.6.1

What's Changed

Full Changelog: 1.12.0...1.13.0

1.12.0

11 Apr 23:28
20aeee1
Compare
Choose a tag to compare

Bug Fixes

  • Fixed an issue where recorded images with a transparent background and a scaling option (e.g., 0.5F) were always detected as changes. Thanks for reporting this, @yongsuk44!
  • Addressed a bug related to robolectric.screenshot.hwrdr.native introduced in Robolectric 4.12, which caused unwanted shadows when using Compose's roboCaptureImage{} with this new option. This has now been corrected by @lukas-mercari. Thanks for your contribution!

What's Changed

  • Hide action bar to avoid shadow creeping into images captured using captureRoboImage by @lukas-mercari in #283
  • [CI]Compare with base branch by @takahirom in #284
  • update robolectric version from 4.10.3 to 4.12.1 by @sanao1006 in #289
  • Add roundTransparentResizeCompose test by @takahirom in #297
  • Fix false positive issue in verification of scaled transparent images by @takahirom in #298

New Contributors

Full Changelog: 1.11.0...1.12.0