Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support includePrivatePreviews of ComposablePreviewScanner #445

Conversation

takahirom
Copy link
Owner

@takahirom takahirom commented Jul 23, 2024

close #441
close #446

* The fully qualified class name of the custom test class that implements [com.github.takahirom.roborazzi.ComposePreviewTester].
* This is advanced usage. You can implement your own test class that implements [com.github.takahirom.roborazzi.ComposePreviewTester].
*/
val testerQualifiedClassName: Property<String> = objects.property(String::class.java)
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've simply changed the order because testerQualifiedClassName is an advanced option.

@@ -19,13 +19,24 @@ fun ComposablePreview<AndroidPreviewInfo>.captureRoboImage(

@ExperimentalRoborazziApi
interface ComposePreviewTester<T : Any> {
class Options(
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This would be the biggest change for users in this PR. This change is a breaking change for users using ComposePreviewTester. This is for reducing future breaking changes when we add options, as adding parameters to the interface would break users' implementations. Do you have any opinions about this?

Copy link

@sergio-sastre sergio-sastre Jul 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it does not require a breaking change.

You could simply extend the interface with

fun getPreviewOptions(): Options = defaultOptionsHere

So for the new methods you have a default (java default interfaces to the rescue) and then use that new method in ComposePreviewTester<AndroidPreviewInfo>.previews() to apply them

That way you can always extend without breaking changes.

on the other hand, you need that new method to be used in the previews(), what makes them somehow dependent from each other…

Your call

@takahirom
Copy link
Owner Author

@sergio-sastre Thanks as always. I've added support for includePrivatePreviews. I also did a little refactoring to avoid making breaking changes. I would appreciate your opinion. Do you have time to review this?

@sergio-sastre
Copy link

@sergio-sastre Thanks as always. I've added support for includePrivatePreviews. I also did a little refactoring to avoid making breaking changes. I would appreciate your opinion. Do you have time to review this?

Sure! I‘ll find some time today in the evening 😉

You can add the following dependency to your project to use the helper function:

`testImplementation("io.github.takahirom.roborazzi:roborazzi-compose-preview-scanner-support:[version]")`

Then you can use the `ComposablePreview<AndroidPreviewInfo>.captureRoboImage()` function to capture the Composable Preview using the settings in Preview annotations.
To obtain the `ComposablePreview` object, please refer to [ComposePreviewScanner](https://github.com/sergio-sastre/ComposablePreviewScanner).
To obtain the `ComposablePreview` object, please refer to [ComposablePreviewScanner](https://github.com/sergio-sastre/ComposablePreviewScanner).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I named it like that and I had my own doubts.
Google is also inconsistent on whether to call them "Compose Previews", like in "Compose Preview Screenshot Testing tool" or "Composable Previews" like here

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I know it should not be Compose Composable Preview. 😊

"A good name is long enough to fully communicate what the item is or does, without being so long that it becomes hard to read." https://google.github.io/eng-practices/review/reviewer/looking-for.html

I personally think we can use ComposePreview in an Android context, and also I think we can use ComposablePreview in a Jetpack Compose context. This is because Composable is an annotation name, so it's a minor distinction, while Compose is the framework name.

val privateImages =
testProjectDir.root.resolve("$moduleName/build/outputs/roborazzi/").listFiles()
.orEmpty()
.filter { it.name.contains("PreviewWithPrivate") }

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not to name it "WithPrivatePreviews" instead?

@@ -19,13 +19,24 @@ fun ComposablePreview<AndroidPreviewInfo>.captureRoboImage(

@ExperimentalRoborazziApi
interface ComposePreviewTester<T : Any> {
class Options(
Copy link

@sergio-sastre sergio-sastre Jul 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it does not require a breaking change.

You could simply extend the interface with

fun getPreviewOptions(): Options = defaultOptionsHere

So for the new methods you have a default (java default interfaces to the rescue) and then use that new method in ComposePreviewTester<AndroidPreviewInfo>.previews() to apply them

That way you can always extend without breaking changes.

on the other hand, you need that new method to be used in the previews(), what makes them somehow dependent from each other…

Your call

interface TestLifecycleOptions
class JUnit4TestLifecycleOptions(
// Used from generated tests
@Suppress("unused") val testRule: TestRule = object : TestWatcher() {},
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yschimke
Thanks as always. It's a little unrelated to this PR, but to address the feedback, I introduced a test rule option to support lifecycle hooks in Preview Support. Could you take a look?
#446 (comment)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to see a sample of using it.

Does every test get it's own instance of TestRule?

They can be stateful https://github.com/junit-team/junit4/blob/ed47b7f487bafa48cff47f051af81a004cd36049/src/main/java/org/junit/rules/ErrorCollector.java

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your great review! I changed testRule to testRuleFactory to create a test rule for each test and added integration tests. Could you check it out?
9e20058#diff-caa31d18b2a269ce09960b3943b693c5dcdd8c57ee34cd096b4a7ce27b6423adR8

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I think that looks good

@takahirom
Copy link
Owner Author

takahirom commented Jul 25, 2024

@sergio-sastre

You could simply extend the interface with
fun getPreviewOptions(): Options = defaultOptionsHere

Thank you for the great advice. I applied it, and it allowed us to pass the JUnit test rules from users.

c994e81

/**
* The TestRule factory to be used for the generated tests.
* You can use this to add custom behavior to the generated tests.
*/
// Used from generated tests
@Suppress("unused") val testRuleFactory: () -> TestRule = { object : TestWatcher() {} },
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do wonder whether there is some context that should be passed into the testRuleFactory? Or the methods on TestRule are enough?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought the most likely scenario would be that we need to pass ComposeRule. I made adjustments to enable passing the ComposeRule.
2f12551#diff-caa31d18b2a269ce09960b3943b693c5dcdd8c57ee34cd096b4a7ce27b6423adR13

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That looks like a great option. I've frequently needed to use the ComposeTestRule to interact with the UI. nice.

/**
* Retrieves a list of composable previews from the specified packages.
*
* @param packages Vararg parameter representing the package names to scan for previews.
* @return A list of ComposablePreview objects of type T.
*/
fun previews(vararg packages: String): List<ComposablePreview<T>>
fun previews(): List<ComposablePreview<T>>
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is going to be a breaking change. I considered providing a default method, but I think it would make it difficult for users to know what to do.

Copy link
Owner Author

@takahirom takahirom Jul 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The release note will be like this.

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.

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>>

@takahirom
Copy link
Owner Author

Thank you for your reviews. I'll merge and release this.

@takahirom takahirom merged commit f4d40a7 into main Jul 27, 2024
6 checks passed
@takahirom takahirom deleted the takahirom/support-includePrivatePreviews-of-ComposablePreviewcanner/2024-07-23 branch July 27, 2024 08:48
github-merge-queue bot pushed a commit to slackhq/circuit that referenced this pull request Jul 29, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[io.github.takahirom.roborazzi](https://github.com/takahirom/roborazzi)
| plugin | minor | `1.23.0` -> `1.24.0` |
|
[io.github.takahirom.roborazzi:roborazzi-junit-rule](https://github.com/takahirom/roborazzi)
| dependencies | minor | `1.23.0` -> `1.24.0` |
|
[io.github.takahirom.roborazzi:roborazzi-compose](https://github.com/takahirom/roborazzi)
| dependencies | minor | `1.23.0` -> `1.24.0` |
|
[io.github.takahirom.roborazzi:roborazzi](https://github.com/takahirom/roborazzi)
| dependencies | minor | `1.23.0` -> `1.24.0` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>takahirom/roborazzi (io.github.takahirom.roborazzi)</summary>

###
[`v1.24.0`](https://github.com/takahirom/roborazzi/releases/tag/1.24.0)

[Compare
Source](https://github.com/takahirom/roborazzi/compare/1.23.0...1.24.0)

##### 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,
[@&#8203;yuchan2215](https://github.com/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](https://github.com/takahirom/roborazzi/blob/2519f46ec0e5a8dadc5139ae833e2925c90c8b21/include-build/roborazzi-gradle-plugin/src/integrationTest/projects/sample-generate-preview-tests/src/test/java/com/github/takahirom/sample/CustomPreviewTester.kt).

##### 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:

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

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

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

##### Acknowledgments

We'd like to extend our sincere thanks to
[@&#8203;yschimke](https://github.com/yschimke) and
[@&#8203;sergio-sastre](https://github.com/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
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#439
- \[Idea Plugin] Prepare for release of IntelliJ IDEA plugin by
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#442
- \[Idea Plugin] Tweak idea plugin UI by
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#443
- \[Feature, Breaking Changes] Support includePrivatePreviews of
ComposablePreviewScanner by
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#445
- \[Docs] Add mention to the sample in Compose Preview Support document
by [@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#448
- \[Docs] Fix URL of the README link by
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#449

**Full Changelog**:
takahirom/roborazzi@1.23.0...1.24.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44LjMiLCJ1cGRhdGVkSW5WZXIiOiIzOC44LjMiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->
chrisbanes pushed a commit to chrisbanes/haze that referenced this pull request Aug 1, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[io.github.takahirom.roborazzi](https://github.com/takahirom/roborazzi)
| `1.23.0` -> `1.25.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.github.takahirom.roborazzi/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.github.takahirom.roborazzi/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.github.takahirom.roborazzi/1.23.0/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.github.takahirom.roborazzi/1.23.0/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[io.github.takahirom.roborazzi:roborazzi-junit-rule](https://github.com/takahirom/roborazzi)
| `1.23.0` -> `1.25.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.github.takahirom.roborazzi:roborazzi-junit-rule/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.github.takahirom.roborazzi:roborazzi-junit-rule/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.github.takahirom.roborazzi:roborazzi-junit-rule/1.23.0/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.github.takahirom.roborazzi:roborazzi-junit-rule/1.23.0/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[io.github.takahirom.roborazzi:roborazzi-compose-desktop](https://github.com/takahirom/roborazzi)
| `1.23.0` -> `1.25.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.github.takahirom.roborazzi:roborazzi-compose-desktop/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.github.takahirom.roborazzi:roborazzi-compose-desktop/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.github.takahirom.roborazzi:roborazzi-compose-desktop/1.23.0/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.github.takahirom.roborazzi:roborazzi-compose-desktop/1.23.0/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[io.github.takahirom.roborazzi:roborazzi-compose](https://github.com/takahirom/roborazzi)
| `1.23.0` -> `1.25.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.github.takahirom.roborazzi:roborazzi-compose/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.github.takahirom.roborazzi:roborazzi-compose/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.github.takahirom.roborazzi:roborazzi-compose/1.23.0/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.github.takahirom.roborazzi:roborazzi-compose/1.23.0/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[io.github.takahirom.roborazzi:roborazzi](https://github.com/takahirom/roborazzi)
| `1.23.0` -> `1.25.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.github.takahirom.roborazzi:roborazzi/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.github.takahirom.roborazzi:roborazzi/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.github.takahirom.roborazzi:roborazzi/1.23.0/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.github.takahirom.roborazzi:roborazzi/1.23.0/1.25.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>takahirom/roborazzi (io.github.takahirom.roborazzi)</summary>

###
[`v1.25.0`](https://github.com/takahirom/roborazzi/releases/tag/1.25.0)

[Compare
Source](https://github.com/takahirom/roborazzi/compare/1.24.0...1.25.0)

##### 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
[#&#8203;452](https://github.com/takahirom/roborazzi/issues/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
[@&#8203;eyedol](https://github.com/eyedol) in
[takahirom/roborazzi#451
Thank you for your contribution!
- \[Feature] Add clear roborazzi task by
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#453

**Full Changelog**:
takahirom/roborazzi@1.24.0...1.25.0

###
[`v1.24.0`](https://github.com/takahirom/roborazzi/releases/tag/1.24.0)

[Compare
Source](https://github.com/takahirom/roborazzi/compare/1.23.0...1.24.0)

##### 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,
[@&#8203;yuchan2215](https://github.com/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](https://github.com/takahirom/roborazzi/blob/2519f46ec0e5a8dadc5139ae833e2925c90c8b21/include-build/roborazzi-gradle-plugin/src/integrationTest/projects/sample-generate-preview-tests/src/test/java/com/github/takahirom/sample/CustomPreviewTester.kt).

##### 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:

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

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

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

##### Acknowledgments

We'd like to extend our sincere thanks to
[@&#8203;yschimke](https://github.com/yschimke) and
[@&#8203;sergio-sastre](https://github.com/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
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#439
- \[Idea Plugin] Prepare for release of IntelliJ IDEA plugin by
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#442
- \[Idea Plugin] Tweak idea plugin UI by
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#443
- \[Feature, Breaking Changes] Support includePrivatePreviews of
ComposablePreviewScanner by
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#445
- \[Docs] Add mention to the sample in Compose Preview Support document
by [@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#448
- \[Docs] Fix URL of the README link by
[@&#8203;takahirom](https://github.com/takahirom) in
[takahirom/roborazzi#449

**Full Changelog**:
takahirom/roborazzi@1.23.0...1.24.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View the
[repository job log](https://developer.mend.io/github/chrisbanes/haze).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MzguMCIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Compose Preview friction [Feature Request] Private Preview Annotation Support
3 participants