Skip to content

deps: bump the minor-and-patch group with 5 updates - #58

Merged
GeiserX merged 1 commit into
mainfrom
dependabot/gradle/minor-and-patch-2a8d2e5452
Aug 17, 2026
Merged

deps: bump the minor-and-patch group with 5 updates#58
GeiserX merged 1 commit into
mainfrom
dependabot/gradle/minor-and-patch-2a8d2e5452

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 17, 2026

Copy link
Copy Markdown
Contributor

Bumps the minor-and-patch group with 5 updates:

Package From To
androidx.compose:compose-bom 2026.06.01 2026.08.00
io.github.takahirom.roborazzi:roborazzi 1.70.0 1.72.0
io.github.takahirom.roborazzi:roborazzi-compose 1.70.0 1.72.0
io.github.takahirom.roborazzi:roborazzi-junit-rule 1.70.0 1.72.0
io.github.takahirom.roborazzi 1.70.0 1.72.0

Updates androidx.compose:compose-bom from 2026.06.01 to 2026.08.00

Updates io.github.takahirom.roborazzi:roborazzi from 1.70.0 to 1.72.0

Release notes

Sourced from io.github.takahirom.roborazzi:roborazzi's releases.

1.72.0

New: Subdirectory naming strategies for screenshot paths

Two new roborazzi.record.namingStrategy options organize screenshots into directories instead of one flat folder of fully-qualified file names (#909, fixes #801):

# com.example.myapp.ui/SomeClass.method.png — the package as a single directory level
roborazzi.record.namingStrategy=testPackageDirAndClassAndMethod
com/example/myapp/ui/SomeClass.method.png — the package as nested directories
roborazzi.record.namingStrategy=testNestedPackageDirAndClassAndMethod

Why: with generateComposePreviewRobolectricTests, projects with hundreds of previews end up with a single flat directory that is hard to navigate. Both directory styles requested in the issue discussion are supported.

_compare / _actual images mirror the golden's subdirectory. This matters because the package no longer appears in the leaf file name with the *Dir strategies — without mirroring, two classes with the same simple name in different packages would collapse onto a single flat comparison image. The mirroring also works when the compare output directory is a separate directory, and when the output directory is overridden via RoborazziRule. The three existing strategies produce byte-for-byte identical paths as before, so nothing changes unless you opt in.

Fixes

  • Wrong screenshot path on Windows. With roborazzi.record.filePathStrategy=relativePathFromRoborazziContextOutputDirectory, the output directory was prepended twice on Windows (D:\...\screenshots\D:\...\screenshots\Test.png), because the absolute-path guard only recognized Unix-style paths — D:\... fell through and was joined to the output directory again. Windows drive-absolute and UNC paths are now detected as absolute; on Unix, : and \ remain valid file name characters, so nothing changes there (#916, fixes #915). Thank you @​MGaetan89 for the report with a minimal reproducer while re-enabling the Roborazzi integration tests on Robolectric!

What's Changed

Full Changelog: takahirom/roborazzi@1.71.0...1.72.0

1.71.0

🎉 1,000 stars

Roborazzi just passed 1,000 stars. Thank you to everyone who has filed an issue, sent a PR, shared a workaround, or just tried it on a project and told us what broke — this release is two bug reports and their fixes, which is a pretty good picture of how the library actually gets better.

Fixes

Both fixes are in the UI tree dump shipped in 1.69.0.

  • The dump was empty for captureRoboImage { content() }. The sidecar held only the root view shell, with no Compose semantics nodes at all — on every composable, and on the Compose Preview scanner path too, which delegates to the same overload. RoboComponent.defaultChildVisitor only descended into semantics for an AbstractComposeView, but this path passes the AndroidComposeView as the capture root: not an AbstractComposeView, just a ViewGroup that itself implements ViewRootForTest. Traversal fell through to the plain ViewGroup branch and stopped. It now descends for a ViewRootForTest as well, which also restores the Compose boxes in captureType = Dump images on this path (#914, fixes #913). Thank you @​danielkatfavor for the clear report with the exact sidecar output!
  • CustomActions serialization was non-deterministic. A CustomAccessibilityAction's action lambda is serialized via toString(), which carries JVM runtime identity, so the value changed on every run and re-recording produced golden churn with no UI change behind it. Custom actions now serialize as CustomAccessibilityAction(label=...), and collection values are serialized element-wise before sorting so ordering is stable too (#911, fixes #910). Thank you @​hellohj for reporting this!

What's Changed

Full Changelog: takahirom/roborazzi@1.70.0...1.71.0

Commits
  • 92249fb 1.72.0
  • cf5a975 Merge pull request #916 from takahirom/tm/915-windows-output-path
  • 7b6b88a Merge pull request #909 from takahirom/tm/subdirectory-naming-strategy
  • 9e81573 Harden compare subtree mirroring test state restoration and assertions
  • 76c7fbe Use rule override output directory for compare subtree mirroring
  • 0509e4a Fix doubled screenshot path for Windows absolute paths
  • 4963f1f Merge pull request #914 from takahirom/tm/fix-uitree-dump-compose-content-path
  • 9950e62 Fix empty UI tree dump on the compose content capture path
  • a4f8721 Merge pull request #911 from takahirom/takahirom/910-deterministic-uitree-cus...
  • c38b785 Strengthen custom actions test with sorting and re-record checks
  • Additional commits viewable in compare view

Updates io.github.takahirom.roborazzi:roborazzi-compose from 1.70.0 to 1.72.0

Release notes

Sourced from io.github.takahirom.roborazzi:roborazzi-compose's releases.

1.72.0

New: Subdirectory naming strategies for screenshot paths

Two new roborazzi.record.namingStrategy options organize screenshots into directories instead of one flat folder of fully-qualified file names (#909, fixes #801):

# com.example.myapp.ui/SomeClass.method.png — the package as a single directory level
roborazzi.record.namingStrategy=testPackageDirAndClassAndMethod
com/example/myapp/ui/SomeClass.method.png — the package as nested directories
roborazzi.record.namingStrategy=testNestedPackageDirAndClassAndMethod

Why: with generateComposePreviewRobolectricTests, projects with hundreds of previews end up with a single flat directory that is hard to navigate. Both directory styles requested in the issue discussion are supported.

_compare / _actual images mirror the golden's subdirectory. This matters because the package no longer appears in the leaf file name with the *Dir strategies — without mirroring, two classes with the same simple name in different packages would collapse onto a single flat comparison image. The mirroring also works when the compare output directory is a separate directory, and when the output directory is overridden via RoborazziRule. The three existing strategies produce byte-for-byte identical paths as before, so nothing changes unless you opt in.

Fixes

  • Wrong screenshot path on Windows. With roborazzi.record.filePathStrategy=relativePathFromRoborazziContextOutputDirectory, the output directory was prepended twice on Windows (D:\...\screenshots\D:\...\screenshots\Test.png), because the absolute-path guard only recognized Unix-style paths — D:\... fell through and was joined to the output directory again. Windows drive-absolute and UNC paths are now detected as absolute; on Unix, : and \ remain valid file name characters, so nothing changes there (#916, fixes #915). Thank you @​MGaetan89 for the report with a minimal reproducer while re-enabling the Roborazzi integration tests on Robolectric!

What's Changed

Full Changelog: takahirom/roborazzi@1.71.0...1.72.0

1.71.0

🎉 1,000 stars

Roborazzi just passed 1,000 stars. Thank you to everyone who has filed an issue, sent a PR, shared a workaround, or just tried it on a project and told us what broke — this release is two bug reports and their fixes, which is a pretty good picture of how the library actually gets better.

Fixes

Both fixes are in the UI tree dump shipped in 1.69.0.

  • The dump was empty for captureRoboImage { content() }. The sidecar held only the root view shell, with no Compose semantics nodes at all — on every composable, and on the Compose Preview scanner path too, which delegates to the same overload. RoboComponent.defaultChildVisitor only descended into semantics for an AbstractComposeView, but this path passes the AndroidComposeView as the capture root: not an AbstractComposeView, just a ViewGroup that itself implements ViewRootForTest. Traversal fell through to the plain ViewGroup branch and stopped. It now descends for a ViewRootForTest as well, which also restores the Compose boxes in captureType = Dump images on this path (#914, fixes #913). Thank you @​danielkatfavor for the clear report with the exact sidecar output!
  • CustomActions serialization was non-deterministic. A CustomAccessibilityAction's action lambda is serialized via toString(), which carries JVM runtime identity, so the value changed on every run and re-recording produced golden churn with no UI change behind it. Custom actions now serialize as CustomAccessibilityAction(label=...), and collection values are serialized element-wise before sorting so ordering is stable too (#911, fixes #910). Thank you @​hellohj for reporting this!

What's Changed

Full Changelog: takahirom/roborazzi@1.70.0...1.71.0

Commits
  • 92249fb 1.72.0
  • cf5a975 Merge pull request #916 from takahirom/tm/915-windows-output-path
  • 7b6b88a Merge pull request #909 from takahirom/tm/subdirectory-naming-strategy
  • 9e81573 Harden compare subtree mirroring test state restoration and assertions
  • 76c7fbe Use rule override output directory for compare subtree mirroring
  • 0509e4a Fix doubled screenshot path for Windows absolute paths
  • 4963f1f Merge pull request #914 from takahirom/tm/fix-uitree-dump-compose-content-path
  • 9950e62 Fix empty UI tree dump on the compose content capture path
  • a4f8721 Merge pull request #911 from takahirom/takahirom/910-deterministic-uitree-cus...
  • c38b785 Strengthen custom actions test with sorting and re-record checks
  • Additional commits viewable in compare view

Updates io.github.takahirom.roborazzi:roborazzi-junit-rule from 1.70.0 to 1.72.0

Release notes

Sourced from io.github.takahirom.roborazzi:roborazzi-junit-rule's releases.

1.72.0

New: Subdirectory naming strategies for screenshot paths

Two new roborazzi.record.namingStrategy options organize screenshots into directories instead of one flat folder of fully-qualified file names (#909, fixes #801):

# com.example.myapp.ui/SomeClass.method.png — the package as a single directory level
roborazzi.record.namingStrategy=testPackageDirAndClassAndMethod
com/example/myapp/ui/SomeClass.method.png — the package as nested directories
roborazzi.record.namingStrategy=testNestedPackageDirAndClassAndMethod

Why: with generateComposePreviewRobolectricTests, projects with hundreds of previews end up with a single flat directory that is hard to navigate. Both directory styles requested in the issue discussion are supported.

_compare / _actual images mirror the golden's subdirectory. This matters because the package no longer appears in the leaf file name with the *Dir strategies — without mirroring, two classes with the same simple name in different packages would collapse onto a single flat comparison image. The mirroring also works when the compare output directory is a separate directory, and when the output directory is overridden via RoborazziRule. The three existing strategies produce byte-for-byte identical paths as before, so nothing changes unless you opt in.

Fixes

  • Wrong screenshot path on Windows. With roborazzi.record.filePathStrategy=relativePathFromRoborazziContextOutputDirectory, the output directory was prepended twice on Windows (D:\...\screenshots\D:\...\screenshots\Test.png), because the absolute-path guard only recognized Unix-style paths — D:\... fell through and was joined to the output directory again. Windows drive-absolute and UNC paths are now detected as absolute; on Unix, : and \ remain valid file name characters, so nothing changes there (#916, fixes #915). Thank you @​MGaetan89 for the report with a minimal reproducer while re-enabling the Roborazzi integration tests on Robolectric!

What's Changed

Full Changelog: takahirom/roborazzi@1.71.0...1.72.0

1.71.0

🎉 1,000 stars

Roborazzi just passed 1,000 stars. Thank you to everyone who has filed an issue, sent a PR, shared a workaround, or just tried it on a project and told us what broke — this release is two bug reports and their fixes, which is a pretty good picture of how the library actually gets better.

Fixes

Both fixes are in the UI tree dump shipped in 1.69.0.

  • The dump was empty for captureRoboImage { content() }. The sidecar held only the root view shell, with no Compose semantics nodes at all — on every composable, and on the Compose Preview scanner path too, which delegates to the same overload. RoboComponent.defaultChildVisitor only descended into semantics for an AbstractComposeView, but this path passes the AndroidComposeView as the capture root: not an AbstractComposeView, just a ViewGroup that itself implements ViewRootForTest. Traversal fell through to the plain ViewGroup branch and stopped. It now descends for a ViewRootForTest as well, which also restores the Compose boxes in captureType = Dump images on this path (#914, fixes #913). Thank you @​danielkatfavor for the clear report with the exact sidecar output!
  • CustomActions serialization was non-deterministic. A CustomAccessibilityAction's action lambda is serialized via toString(), which carries JVM runtime identity, so the value changed on every run and re-recording produced golden churn with no UI change behind it. Custom actions now serialize as CustomAccessibilityAction(label=...), and collection values are serialized element-wise before sorting so ordering is stable too (#911, fixes #910). Thank you @​hellohj for reporting this!

What's Changed

Full Changelog: takahirom/roborazzi@1.70.0...1.71.0

Commits
  • 92249fb 1.72.0
  • cf5a975 Merge pull request #916 from takahirom/tm/915-windows-output-path
  • 7b6b88a Merge pull request #909 from takahirom/tm/subdirectory-naming-strategy
  • 9e81573 Harden compare subtree mirroring test state restoration and assertions
  • 76c7fbe Use rule override output directory for compare subtree mirroring
  • 0509e4a Fix doubled screenshot path for Windows absolute paths
  • 4963f1f Merge pull request #914 from takahirom/tm/fix-uitree-dump-compose-content-path
  • 9950e62 Fix empty UI tree dump on the compose content capture path
  • a4f8721 Merge pull request #911 from takahirom/takahirom/910-deterministic-uitree-cus...
  • c38b785 Strengthen custom actions test with sorting and re-record checks
  • Additional commits viewable in compare view

Updates io.github.takahirom.roborazzi from 1.70.0 to 1.72.0

Release notes

Sourced from io.github.takahirom.roborazzi's releases.

1.72.0

New: Subdirectory naming strategies for screenshot paths

Two new roborazzi.record.namingStrategy options organize screenshots into directories instead of one flat folder of fully-qualified file names (#909, fixes #801):

# com.example.myapp.ui/SomeClass.method.png — the package as a single directory level
roborazzi.record.namingStrategy=testPackageDirAndClassAndMethod
com/example/myapp/ui/SomeClass.method.png — the package as nested directories
roborazzi.record.namingStrategy=testNestedPackageDirAndClassAndMethod

Why: with generateComposePreviewRobolectricTests, projects with hundreds of previews end up with a single flat directory that is hard to navigate. Both directory styles requested in the issue discussion are supported.

_compare / _actual images mirror the golden's subdirectory. This matters because the package no longer appears in the leaf file name with the *Dir strategies — without mirroring, two classes with the same simple name in different packages would collapse onto a single flat comparison image. The mirroring also works when the compare output directory is a separate directory, and when the output directory is overridden via RoborazziRule. The three existing strategies produce byte-for-byte identical paths as before, so nothing changes unless you opt in.

Fixes

  • Wrong screenshot path on Windows. With roborazzi.record.filePathStrategy=relativePathFromRoborazziContextOutputDirectory, the output directory was prepended twice on Windows (D:\...\screenshots\D:\...\screenshots\Test.png), because the absolute-path guard only recognized Unix-style paths — D:\... fell through and was joined to the output directory again. Windows drive-absolute and UNC paths are now detected as absolute; on Unix, : and \ remain valid file name characters, so nothing changes there (#916, fixes #915). Thank you @​MGaetan89 for the report with a minimal reproducer while re-enabling the Roborazzi integration tests on Robolectric!

What's Changed

Full Changelog: takahirom/roborazzi@1.71.0...1.72.0

1.71.0

🎉 1,000 stars

Roborazzi just passed 1,000 stars. Thank you to everyone who has filed an issue, sent a PR, shared a workaround, or just tried it on a project and told us what broke — this release is two bug reports and their fixes, which is a pretty good picture of how the library actually gets better.

Fixes

Both fixes are in the UI tree dump shipped in 1.69.0.

  • The dump was empty for captureRoboImage { content() }. The sidecar held only the root view shell, with no Compose semantics nodes at all — on every composable, and on the Compose Preview scanner path too, which delegates to the same overload. RoboComponent.defaultChildVisitor only descended into semantics for an AbstractComposeView, but this path passes the AndroidComposeView as the capture root: not an AbstractComposeView, just a ViewGroup that itself implements ViewRootForTest. Traversal fell through to the plain ViewGroup branch and stopped. It now descends for a ViewRootForTest as well, which also restores the Compose boxes in captureType = Dump images on this path (#914, fixes #913). Thank you @​danielkatfavor for the clear report with the exact sidecar output!
  • CustomActions serialization was non-deterministic. A CustomAccessibilityAction's action lambda is serialized via toString(), which carries JVM runtime identity, so the value changed on every run and re-recording produced golden churn with no UI change behind it. Custom actions now serialize as CustomAccessibilityAction(label=...), and collection values are serialized element-wise before sorting so ordering is stable too (#911, fixes #910). Thank you @​hellohj for reporting this!

What's Changed

Full Changelog: takahirom/roborazzi@1.70.0...1.71.0

Commits
  • 92249fb 1.72.0
  • cf5a975 Merge pull request #916 from takahirom/tm/915-windows-output-path
  • 7b6b88a Merge pull request #909 from takahirom/tm/subdirectory-naming-strategy
  • 9e81573 Harden compare subtree mirroring test state restoration and assertions
  • 76c7fbe Use rule override output directory for compare subtree mirroring
  • 0509e4a Fix doubled screenshot path for Windows absolute paths
  • 4963f1f Merge pull request #914 from takahirom/tm/fix-uitree-dump-compose-content-path
  • 9950e62 Fix empty UI tree dump on the compose content capture path
  • a4f8721 Merge pull request #911 from takahirom/takahirom/910-deterministic-uitree-cus...
  • c38b785 Strengthen custom actions test with sorting and re-record checks
  • Additional commits viewable in compare view

Updates io.github.takahirom.roborazzi:roborazzi-compose from 1.70.0 to 1.72.0

Release notes

Sourced from io.github.takahirom.roborazzi:roborazzi-compose's releases.

1.72.0

New: Subdirectory naming strategies for screenshot paths

Two new roborazzi.record.namingStrategy options organize screenshots into directories instead of one flat folder of fully-qualified file names (#909, fixes #801):

# com.example.myapp.ui/SomeClass.method.png — the package as a single directory level
roborazzi.record.namingStrategy=testPackageDirAndClassAndMethod
com/example/myapp/ui/SomeClass.method.png — the package as nested directories
roborazzi.record.namingStrategy=testNestedPackageDirAndClassAndMethod

Why: with generateComposePreviewRobolectricTests, projects with hundreds of previews end up with a single flat directory that is hard to navigate. Both directory styles requested in the issue discussion are supported.

_compare / _actual images mirror the golden's subdirectory. This matters because the package no longer appears in the leaf file name with the *Dir strategies — without mirroring, two classes with the same simple name in different packages would collapse onto a single flat comparison image. The mirroring also works when the compare output directory is a separate directory, and when the output directory is overridden via RoborazziRule. The three existing strategies produce byte-for-byte identical paths as before, so nothing changes unless you opt in.

Fixes

  • Wrong screenshot path on Windows. With roborazzi.record.filePathStrategy=relativePathFromRoborazziContextOutputDirectory, the output directory was prepended twice on Windows (D:\...\screenshots\D:\...\screenshots\Test.png), because the absolute-path guard only recognized Unix-style paths — D:\... fell through and was joined to the output directory again. Windows drive-absolute and UNC paths are now detected as absolute; on Unix, : and \ remain valid file name characters, so nothing changes there (#916, fixes #915). Thank you @​MGaetan89 for the report with a minimal reproducer while re-enabling the Roborazzi integration tests on Robolectric!

What's Changed

Full Changelog: takahirom/roborazzi@1.71.0...1.72.0

1.71.0

🎉 1,000 stars

Roborazzi just passed 1,000 stars. Thank you to everyone who has filed an issue, sent a PR, shared a workaround, or just tried it on a project and told us what broke — this release is two bug reports and their fixes, which is a pretty good picture of how the library actually gets better.

Fixes

Both fixes are in the UI tree dump shipped in 1.69.0.

  • The dump was empty for captureRoboImage { content() }. The sidecar held only the root view shell, with no Compose semantics nodes at all — on every composable, and on the Compose Preview scanner path too, which delegates to the same overload. RoboComponent.defaultChildVisitor only descended into semantics for an AbstractComposeView, but this path passes the AndroidComposeView as the capture root: not an AbstractComposeView, just a ViewGroup that itself implements ViewRootForTest. Traversal fell through to the plain ViewGroup branch and stopped. It now descends for a ViewRootForTest as well, which also restores the Compose boxes in captureType = Dump images on this path (#914, fixes #913). Thank you @​danielkatfavor for the clear report with the exact sidecar output!
  • CustomActions serialization was non-deterministic. A CustomAccessibilityAction's action lambda is serialized via toString(), which carries JVM runtime identity, so the value changed on every run and re-recording produced golden churn with no UI change behind it. Custom actions now serialize as CustomAccessibilityAction(label=...), and collection values are serialized element-wise before sorting so ordering is stable too (#911, fixes #910). Thank you @​hellohj for reporting this!

What's Changed

Full Changelog: takahirom/roborazzi@1.70.0...1.71.0

Commits
  • 92249fb 1.72.0
  • cf5a975 Merge pull request #916 from takahirom/tm/915-windows-output-path
  • 7b6b88a Merge pull request #909 from takahirom/tm/subdirectory-naming-strategy
  • 9e81573 Harden compare subtree mirroring test state restoration and assertions
  • 76c7fbe Use rule override output directory for compare subtree mirroring
  • 0509e4a Fix doubled screenshot path for Windows absolute paths
  • 4963f1f Merge pull request #914 from takahirom/tm/fix-uitree-dump-compose-content-path
  • 9950e62 Fix empty UI tree dump on the compose content capture path
  • a4f8721 Merge pull request #911 from takahirom/takahirom/910-deterministic-uitree-cus...
  • c38b785 Strengthen custom actions test with sorting and re-record checks
  • Additional commits viewable in compare view

Updates io.github.takahirom.roborazzi:roborazzi-junit-rule from 1.70.0 to 1.72.0

Release notes

Sourced from io.github.takahirom.roborazzi:roborazzi-junit-rule's releases.

1.72.0

New: Subdirectory naming strategies for screenshot paths

Two new roborazzi.record.namingStrategy options organize screenshots into directories instead of one flat folder of fully-qualified file names (#909, fixes #801):

# com.example.myapp.ui/SomeClass.method.png — the package as a single directory level
roborazzi.record.namingStrategy=testPackageDirAndClassAndMethod
com/example/myapp/ui/SomeClass.method.png — the package as nested directories
roborazzi.record.namingStrategy=testNestedPackageDirAndClassAndMethod

Why: with generateComposePreviewRobolectricTests, projects with hundreds of previews end up with a single flat directory that is hard to navigate. Both directory styles requested in the issue discussion are supported.

_compare / _actual images mirror the golden's subdirectory. This matters because the package no longer appears in the leaf file name with the *Dir strategies — without mirroring, two classes with the same simple name in different packages would collapse onto a single flat comparison image. The mirroring also works when the compare output directory is a separate directory, and when the output directory is overridden via RoborazziRule. The three existing strategies produce byte-for-byte identical paths as before, so nothing changes unless you opt in.

Fixes

  • Wrong screenshot path on Windows. With roborazzi.record.filePathStrategy=relativePathFromRoborazziContextOutputDirectory, the output directory was prepended twice on Windows (D:\...\screenshots\D:\...\screenshots\Test.png), because the absolute-path guard only recognized Unix-style paths — D:\... fell through and was joined to the output directory again. Windows drive-absolute and UNC paths are now detected as absolute; on Unix, : and \ remain valid file name characters, so nothing changes there (#916, fixes #915). Thank you @​MGaetan89 for the report with a minimal reproducer while re-enabling the Roborazzi integration tests on Robolectric!

What's Changed

Full Changelog: takahirom/roborazzi@1.71.0...1.72.0

1.71.0

🎉 1,000 stars

Roborazzi just passed 1,000 stars. Thank you to everyone who has filed an issue, sent a PR, shared a workaround, or just tried it on a project and told us what broke — this release is two bug reports and their fixes, which is a pretty good picture of how the library actually gets better.

Fixes

Both fixes are in the UI tree dump shipped in 1.69.0.

  • The dump was empty for captureRoboImage { content() }. The sidecar held only the root view shell, with no Compose semantics nodes at all — on every composable, and on the Compose Preview scanner path too, which delegates to the same overload. RoboComponent.defaultChildVisitor only descended into semantics for an AbstractComposeView, but this path passes the AndroidComposeView as the capture root: not an AbstractComposeView, just a ViewGroup that itself implements ViewRootForTest. Traversal fell through to the plain ViewGroup branch and stopped. It now descends for a ViewRootForTest as well, which also restores the Compose boxes in captureType = Dump images on this path (#914, fixes #913). Thank you @​danielkatfavor for the clear report with the exact sidecar output!
  • CustomActions serialization was non-deterministic. A CustomAccessibilityAction's action lambda is serialized via toString(), which carries JVM runtime identity, so the value changed on every run and re-recording produced golden churn with no UI change behind it. Custom actions now serialize as CustomAccessibilityAction(label=...), and collection values are serialized element-wise before sorting so ordering is stable too (#911, fixes #910). Thank you @​hellohj for reporting this!

What's Changed

Full Changelog: takahirom/roborazzi@1.70.0...1.71.0

Commits
  • 92249fb 1.72.0
  • cf5a975 Merge pull request #916 from takahirom/tm/915-windows-output-path
  • 7b6b88a Merge pull request #909 from takahirom/tm/subdirectory-naming-strategy
  • 9e81573 Harden compare subtree mirroring test state restoration and assertions
  • 76c7fbe Use rule override output directory for compare subtree mirroring
  • 0509e4a Fix doubled screenshot path for Windows absolute paths
  • 4963f1f Merge pull request #914 from takahirom/tm/fix-uitree-dump-compose-content-path
  • 9950e62 Fix empty UI tree dump on the compose content capture path
  • a4f8721 Merge pull request #911 from takahirom/takahirom/910-deterministic-uitree-cus...
  • c38b785 Strengthen custom actions test with sorting and re-record checks
  • Additional commits viewable in compare view

Updates io.github.takahirom.roborazzi from 1.70.0 to 1.72.0

Release notes

Sourced from io.github.takahirom.roborazzi's releases.

1.72.0

New: Subdirectory naming strategies for screenshot paths

Two new roborazzi.record.namingStrategy options organize screenshots into directories instead of one flat folder of fully-qualified file names (#909, fixes #801):

# com.example.myapp.ui/SomeClass.method.png — the package as a single directory level
roborazzi.record.namingStrategy=testPackageDirAndClassAndMethod
com/example/myapp/ui/SomeClass.method.png — the package as nested directories
roborazzi.record.namingStrategy=testNestedPackageDirAndClassAndMethod

Why: with generateComposePreviewRobolectricTests, projects with hundreds of previews end up with a single flat directory that is hard to navigate. Both directory styles requested in the issue discussion are supported.

_compare / _actual images mirror the golden's subdirectory. This matters because the package no longer appears in the leaf file name with the *Dir strategies — without mirroring, two classes with the same simple name in different packages would collapse onto a single flat comparison image. The mirroring also works when the compare output directory is a separate directory, and when the output directory is overridden via RoborazziRule. The three existing strategies produce byte-for-byte identical paths as before, so nothing changes unless you opt in.

Fixes

  • Wrong screenshot path on Windows. With roborazzi.record.filePathStrategy=relativePathFromRoborazziContextOutputDirectory, the output directory was prepended twice on Windows (D:\...\screenshots\D:\...\screenshots\Test.png), because the absolute-path guard only recognized Unix-style paths — D:\... fell through and was joined to the output directory again. Windows drive-absolute and UNC paths are now detected as absolute; on Unix, : and \ remain valid file name characters, so nothing changes there (#916, fixes #915). Thank you @​MGaetan89 for the report with a minimal reproducer while re-enabling the Roborazzi integration tests on Robolectric!

What's Changed

Full Changelog: takahirom/roborazzi@1.71.0...1.72.0

1.71.0

🎉 1,000 stars

Roborazzi just passed 1,000 stars. Thank you to everyone who has filed an issue, sent a PR, shared a workaround, or just tried it on a project and told us what broke — this release is two bug reports and their fixes, which is a pretty good picture of how the library actually gets better.

Fixes

Both fixes are in the UI tree dump shipped in 1.69.0.

  • The dump was empty for captureRoboImage { content() }. The sidecar held only the root view shell, with no Compose semantics nodes at all — on every composable, and on the Compose Preview scanner path too, which delegates to the same overload. RoboComponent.defaultChildVisitor only descended into semantics for an AbstractComposeView, but this path passes the AndroidComposeView as the capture root: not an AbstractComposeView, just a ViewGroup that itself implements ViewRootForTest. Traversal fell through to the plain ViewGroup branch and stopped. It now descends for a ViewRootForTest as well, which also restores the Compose boxes in captureType = Dump images on this path (#914, fixes #913). Thank you @​danielkatfavor for the clear report with the exact sidecar output!
  • CustomActions serialization was non-deterministic. A CustomAccessibilityAction's action lambda is serialized via toString(), which carries JVM runtime identity, so the value changed on every run and re-recording produced golden churn with no UI change behind it. Custom actions now serialize as CustomAccessibilityAction(label=...), and collection values are serialized element-wise before sorting so ordering is stable too (#911, fixes #910). Thank you @​hellohj for reporting this!

What's Changed

Full Changelog: takahirom/roborazzi@1.70.0...1.71.0

Commits
  • 92249fb 1.72.0
  • cf5a975 Merge pull request #916 from takahirom/tm/915-windows-output-path
  • 7b6b88a Merge pull request #909 from takahirom/tm/subdirectory-naming-strategy
  • 9e81573 Harden compare subtree mirroring test state restoration and assertions
  • 76c7fbe Use rule override output directory for compare subtree mirroring

Bumps the minor-and-patch group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| androidx.compose:compose-bom | `2026.06.01` | `2026.08.00` |
| [io.github.takahirom.roborazzi:roborazzi](https://github.com/takahirom/roborazzi) | `1.70.0` | `1.72.0` |
| [io.github.takahirom.roborazzi:roborazzi-compose](https://github.com/takahirom/roborazzi) | `1.70.0` | `1.72.0` |
| [io.github.takahirom.roborazzi:roborazzi-junit-rule](https://github.com/takahirom/roborazzi) | `1.70.0` | `1.72.0` |
| [io.github.takahirom.roborazzi](https://github.com/takahirom/roborazzi) | `1.70.0` | `1.72.0` |


Updates `androidx.compose:compose-bom` from 2026.06.01 to 2026.08.00

Updates `io.github.takahirom.roborazzi:roborazzi` from 1.70.0 to 1.72.0
- [Release notes](https://github.com/takahirom/roborazzi/releases)
- [Commits](takahirom/roborazzi@1.70.0...1.72.0)

Updates `io.github.takahirom.roborazzi:roborazzi-compose` from 1.70.0 to 1.72.0
- [Release notes](https://github.com/takahirom/roborazzi/releases)
- [Commits](takahirom/roborazzi@1.70.0...1.72.0)

Updates `io.github.takahirom.roborazzi:roborazzi-junit-rule` from 1.70.0 to 1.72.0
- [Release notes](https://github.com/takahirom/roborazzi/releases)
- [Commits](takahirom/roborazzi@1.70.0...1.72.0)

Updates `io.github.takahirom.roborazzi` from 1.70.0 to 1.72.0
- [Release notes](https://github.com/takahirom/roborazzi/releases)
- [Commits](takahirom/roborazzi@1.70.0...1.72.0)

Updates `io.github.takahirom.roborazzi:roborazzi-compose` from 1.70.0 to 1.72.0
- [Release notes](https://github.com/takahirom/roborazzi/releases)
- [Commits](takahirom/roborazzi@1.70.0...1.72.0)

Updates `io.github.takahirom.roborazzi:roborazzi-junit-rule` from 1.70.0 to 1.72.0
- [Release notes](https://github.com/takahirom/roborazzi/releases)
- [Commits](takahirom/roborazzi@1.70.0...1.72.0)

Updates `io.github.takahirom.roborazzi` from 1.70.0 to 1.72.0
- [Release notes](https://github.com/takahirom/roborazzi/releases)
- [Commits](takahirom/roborazzi@1.70.0...1.72.0)

---
updated-dependencies:
- dependency-name: androidx.compose:compose-bom
  dependency-version: 2026.08.00
  dependency-type: direct:production
  dependency-group: minor-and-patch
- dependency-name: io.github.takahirom.roborazzi:roborazzi
  dependency-version: 1.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.github.takahirom.roborazzi:roborazzi-compose
  dependency-version: 1.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.github.takahirom.roborazzi:roborazzi-junit-rule
  dependency-version: 1.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.github.takahirom.roborazzi
  dependency-version: 1.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.github.takahirom.roborazzi:roborazzi-compose
  dependency-version: 1.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.github.takahirom.roborazzi:roborazzi-junit-rule
  dependency-version: 1.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: io.github.takahirom.roborazzi
  dependency-version: 1.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added automated Opened automatically by a bot dependencies Dependency updates labels Aug 17, 2026
@GeiserX
GeiserX merged commit 7e0ed4b into main Aug 17, 2026
2 checks passed
@GeiserX
GeiserX deleted the dependabot/gradle/minor-and-patch-2a8d2e5452 branch August 17, 2026 15:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated Opened automatically by a bot dependencies Dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant