cashapp/paparazzi (app.cash.paparazzi)
### [`v1.3.4`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#134---2024-05-23)
[Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.3.3...1.3.4)
##### New
- Support for animated-PNG-based snapshots using Paparazzi#gif
- New tasks! deletePaparazziSnapshots and cleanRecordPaparazzi${VARIANT} clear orphaned snapshots
- Add boolean flag to decide if image should be scaled or full-sized
- Migrate Paparazzi to layoutlib Iguana 2023.2.1
- Compose 1.5.14
- Kotlin 1.9.24
- \[Gradle Plugin] Gradle 8.7
- \[Gradle Plugin] Android Gradle Plugin 8.3.2
##### Fixed
- Fix long content description being cut off in accessibility snapshots
- Include resource references from generated resource folders
- Fix gradle caching for resources coming from aar dependencies
- Support SHRINK render mode when using unsafeUpdateConfig
- Fix issue where multiple snapshots fail when using render extensions
- Remove guava workaround from \[1.3.2] now that Collector APIs are in guava-android
Kudos to [@geoff-powell](https://togithub.com/geoff-powell), [@gamepro65](https://togithub.com/gamepro65), [@kevinzheng-ap](https://togithub.com/kevinzheng-ap), [@nak5ive](https://togithub.com/nak5ive), [@TWiStErRob](https://togithub.com/TWiStErRob), [@emuguy1](https://togithub.com/emuguy1) and others for contributions this release!
### [`v1.3.3`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#133---2024-03-01)
[Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.3.2...1.3.3)
##### New
- Migrate Paparazzi to layoutlib Hedgehog 2023.1.1
- Compose 1.5.8
- Kotlin 1.9.22
- \[Gradle Plugin] Gradle 8.6
- \[Gradle Plugin] Android Gradle Plugin 8.2.1
##### Fixed
- Update the DeviceConfig screenWidth internally for accessibility tests
- Fix variant caching issues in new resource/asset loading mechanisms
- Remove legacy resources/assets loading mechanism
- Set HardwareConfig width and height based on orientation
- Apply round screen qualifier to device config
- Restrict Paparazzi's public API
- Remove obsolete NEXUS\_5\_LAND DeviceConfig
- Fix formatting so that all digits show upon failure
- Stop resolving dependencies at configuration time
- Use our own internal HandlerDispatcher for Compose Ui tests
- Include generated string resources
- Reset logger to prevent swallowing exceptions
Kudos to [@gamepro65](https://togithub.com/gamepro65), [@kevinzheng-ap](https://togithub.com/kevinzheng-ap), [@BrianGardnerAtl](https://togithub.com/BrianGardnerAtl), [@adamalyyan](https://togithub.com/adamalyyan), and others for contributions this release!
### [`v1.3.2`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#132---2024-01-13)
[Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.3.1...1.3.2)
##### NOTE: Due to a known issue with [how Guava now publishes its artifact](https://togithub.com/google/guava/issues/6567), you will need to apply the following snippet workaround to your root build.gradle:
subprojects {
plugins.withId("app.cash.paparazzi") {
// Defer until afterEvaluate so that testImplementation is created by Android plugin.
afterEvaluate {
dependencies.constraints {
add("testImplementation", "com.google.guava:guava") {
attributes {
attribute(
TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE,
objects.named(TargetJvmEnvironment, TargetJvmEnvironment.STANDARD_JVM)
)
}
because("LayoutLib and sdk-common depend on Guava's -jre published variant." +
"See https://github.com/cashapp/paparazzi/issues/906.")
}
}
}
}
}
See also: [https://github.com/google/guava/issues/6801](https://togithub.com/google/guava/issues/6801).
##### New
- Support for pseudolocalization tests! To get started:
```agsl
@RunWith(TestParameterInjector::class)
class PseudolocalizationTest(
@TestParameter locale: Locale
) {
@get:Rule val paparazzi = Paparazzi(
deviceConfig = DeviceConfig.PIXEL_5.copy(locale = locale.tag)
)
@Test fun test() {
paparazzi.snapshot { SomeComposable() }
}
enum class Locale(val tag: String?) {
Default(null),
Accent("en-rXA"),
Bidi("ar-rXB")
}
}
```
- Migrate Paparazzi to layoutlib Giraffe 2022.3.1
- Compose 1.5.0
- Kotlin 1.9.0
- \[Gradle Plugin] Gradle 8.5
- \[Gradle Plugin] Android Gradle Plugin 8.1.1
##### Fixed
- Fix relativePath bug in port of ResourceFile
- Resolve report dir from ReportingExtension instead of hardcoding
- Make report folder variant-aware
- Remove reliance on kotlinx.coroutines.main.delay
- Use a class file locator that queries the system class loader
- Filter out unrecognized java-symbol tag warning
- Skip synthetic fields in R classes
- Update task inputs for resources and assets to account for file renames and moves
- Update delta images to support showing diff when width and height differ
Kudos to [@kevinzheng-ap](https://togithub.com/kevinzheng-ap), [@TWiStErRob](https://togithub.com/TWiStErRob), [@gamepro65](https://togithub.com/gamepro65), [@adamalyyan](https://togithub.com/adamalyyan), [@larryng](https://togithub.com/larryng), and others for contributions this release!
### [`v1.3.1`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#131---2023-07-18)
[Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.3.0...1.3.1)
##### New
- Migrated to new resource and asset loading mechanisms. To explicitly opt-out and fall back to the
legacy mechanisms, add either/both of the following to your `gradle.properties`:
app.cash.paparazzi.legacy.resource.loading=true
app.cash.paparazzi.legacy.asset.loading=true
- The Android system ui (status + navigation bar) is now hidden by default; to re-enable:
@get:Rule
val paparazzi = Paparazzi(
showSystemUi = true
)
- Relocate failure deltas from `PROJECT_ROOT/out/failures/` to `BUILD_DIR/paparazzi/failures/`
- Support for application and dynamic feature modules
- \[Gradle Plugin] Gradle 8.2.1
##### Fixed
- Fix accessibility labels when mergeDescendants is true
- Fixes compose alert dialogs not rendering when using RenderingMode.SHRINK
Kudos to [@kevinzheng-ap](https://togithub.com/kevinzheng-ap), [@adamalyyan](https://togithub.com/adamalyyan) and others for contributions this release!
### [`v1.3.0`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#130---2023-05-31)
[Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.2.0...1.3.0)
As of this release, consumers must build on Java 17+ environments.
##### New
- Migrate Paparazzi to layoutlib Flamingo 2022.2.1
- Add accessibility support for Composables
- Add layout accessibility check support
- Compose 1.4.7
- Kotlin 1.8.21
- \[Gradle Plugin] Gradle 8.1.1
- \[Gradle Plugin] Android Gradle Plugin 8.0.2
##### Fixed
- Configure android.os.Build values via reflection
- Various bug fixes with AccessibilityRenderExtension
- Make sure changes to system properties actually affect test tasks
- Fix caching bug with preparePaparazziResources task
- Use Dispatchers.Main for delay functionality
- Recomposition does not happen unless lifecycle is RESUMED
- Fix NPE when unit test variant is disabled
- Fix incompatibility with androidx.savedstate:1.1.0
Kudos to [@gamepro65](https://togithub.com/gamepro65), [@geoff-powell](https://togithub.com/geoff-powell), [@TWiStErRob](https://togithub.com/TWiStErRob), [@adamalyyan](https://togithub.com/adamalyyan) and others for contributions this release!
### [`v1.2.0`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#120---2023-01-18)
[Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.1.0...1.2.0)
##### New
- Migrate Paparazzi to layoutlib Electric Eel 2022.1.1
- Add support for RenderingMode.SHRINK to allow view-only screenshots
- Expose flag to show/hide system ui
- Register a default OnBackPressedDispatcherOwner if its present in classpath
- Bump default compileSdk to API 33
- Compose 1.3.1
- Kotlin 1.7.20
- \[Gradle Plugin] Gradle 7.6
- \[Gradle Plugin] Android Gradle Plugin 7.4.0
##### Fixed
- Flush errors on unsafeUpdateConfig
- Only apply wear circle shape to full device screenshots
- Synchronize access to Handler_Delegate.queue
- Apply compose hooks to all snapshot calls
- Register LifecycleOwner and SavedStateRegistryOwner to all views
- Execute Handler callbacks after snapshots to clean up Compose references
- Fix RecyclerView issue due to layoutlib Dolphin update
- Keep AGP and tools dependencies aligned
Kudos to [@gamepro65](https://togithub.com/gamepro65), [@saket](https://togithub.com/saket), [@rharter](https://togithub.com/rharter) and others for contributions this release!
### [`v1.1.0`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#110---2022-10-12)
[Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.0.0...1.1.0)
##### New
- Migrate Paparazzi to layoutlib Chipmunk 2021.2.1
- Add support for multiplatform plugin
- Add support for JDKs 16+
- Add support for locales and layout direction (LTR/RTL)
- Add Pixel 6 & Pixel 6 Pro device configs
- Enable night mode for legacy views and composables
- Enable ui mode to support form factors other than phones/tablets, e.g., auto, watches, etc.
- Google Wear DeviceConfig support
- Expose an API for offsetting frame capture time
- Add InstantAnimationsRule to delay snapshot capture until the last frame.
- Compose 1.3.0
- Kotlin 1.7.10
- \[Gradle Plugin] Gradle 7.5.1
##### Fixed
- Generate resource ids to support aapt inline resources in composables
- Reset AndroidUiDispatcher between compose snapshots
- Fix OOM error when a large number of compose snapshots are verified
- Fix HTML report in development mode
- Honor customization of Gradle's build output directory
- \[Gradle Plugin] Configure native platform transformed path directly in test task to reduce cache misses
- \[Gradle Plugin] Fix accidental eager task creation reducing memory pressure
- \[Gradle Plugin] Fail explicitly when applying Android application plugin
Kudos to [@chris-horner](https://togithub.com/chris-horner), [@swankjesse](https://togithub.com/swankjesse), [@yschimke](https://togithub.com/yschimke), [@dniHze](https://togithub.com/dniHze), [@TWiStErRob](https://togithub.com/TWiStErRob), [@gamepro65](https://togithub.com/gamepro65), [@liutikas](https://togithub.com/liutikas) and others for contributions this release!
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.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
1.0.0
->1.3.4
1.0.0
->1.3.4
Release Notes
cashapp/paparazzi (app.cash.paparazzi)
### [`v1.3.4`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#134---2024-05-23) [Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.3.3...1.3.4) ##### New - Support for animated-PNG-based snapshots using Paparazzi#gif - New tasks! deletePaparazziSnapshots and cleanRecordPaparazzi${VARIANT} clear orphaned snapshots - Add boolean flag to decide if image should be scaled or full-sized - Migrate Paparazzi to layoutlib Iguana 2023.2.1 - Compose 1.5.14 - Kotlin 1.9.24 - \[Gradle Plugin] Gradle 8.7 - \[Gradle Plugin] Android Gradle Plugin 8.3.2 ##### Fixed - Fix long content description being cut off in accessibility snapshots - Include resource references from generated resource folders - Fix gradle caching for resources coming from aar dependencies - Support SHRINK render mode when using unsafeUpdateConfig - Fix issue where multiple snapshots fail when using render extensions - Remove guava workaround from \[1.3.2] now that Collector APIs are in guava-android Kudos to [@geoff-powell](https://togithub.com/geoff-powell), [@gamepro65](https://togithub.com/gamepro65), [@kevinzheng-ap](https://togithub.com/kevinzheng-ap), [@nak5ive](https://togithub.com/nak5ive), [@TWiStErRob](https://togithub.com/TWiStErRob), [@emuguy1](https://togithub.com/emuguy1) and others for contributions this release! ### [`v1.3.3`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#133---2024-03-01) [Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.3.2...1.3.3) ##### New - Migrate Paparazzi to layoutlib Hedgehog 2023.1.1 - Compose 1.5.8 - Kotlin 1.9.22 - \[Gradle Plugin] Gradle 8.6 - \[Gradle Plugin] Android Gradle Plugin 8.2.1 ##### Fixed - Update the DeviceConfig screenWidth internally for accessibility tests - Fix variant caching issues in new resource/asset loading mechanisms - Remove legacy resources/assets loading mechanism - Set HardwareConfig width and height based on orientation - Apply round screen qualifier to device config - Restrict Paparazzi's public API - Remove obsolete NEXUS\_5\_LAND DeviceConfig - Fix formatting so that all digits show upon failure - Stop resolving dependencies at configuration time - Use our own internal HandlerDispatcher for Compose Ui tests - Include generated string resources - Reset logger to prevent swallowing exceptions Kudos to [@gamepro65](https://togithub.com/gamepro65), [@kevinzheng-ap](https://togithub.com/kevinzheng-ap), [@BrianGardnerAtl](https://togithub.com/BrianGardnerAtl), [@adamalyyan](https://togithub.com/adamalyyan), and others for contributions this release! ### [`v1.3.2`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#132---2024-01-13) [Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.3.1...1.3.2) ##### NOTE: Due to a known issue with [how Guava now publishes its artifact](https://togithub.com/google/guava/issues/6567), you will need to apply the following snippet workaround to your root build.gradle: subprojects { plugins.withId("app.cash.paparazzi") { // Defer until afterEvaluate so that testImplementation is created by Android plugin. afterEvaluate { dependencies.constraints { add("testImplementation", "com.google.guava:guava") { attributes { attribute( TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE, objects.named(TargetJvmEnvironment, TargetJvmEnvironment.STANDARD_JVM) ) } because("LayoutLib and sdk-common depend on Guava's -jre published variant." + "See https://github.com/cashapp/paparazzi/issues/906.") } } } } } See also: [https://github.com/google/guava/issues/6801](https://togithub.com/google/guava/issues/6801). ##### New - Support for pseudolocalization tests! To get started: ```agsl @RunWith(TestParameterInjector::class) class PseudolocalizationTest( @TestParameter locale: Locale ) { @get:Rule val paparazzi = Paparazzi( deviceConfig = DeviceConfig.PIXEL_5.copy(locale = locale.tag) ) @Test fun test() { paparazzi.snapshot { SomeComposable() } } enum class Locale(val tag: String?) { Default(null), Accent("en-rXA"), Bidi("ar-rXB") } } ``` - Migrate Paparazzi to layoutlib Giraffe 2022.3.1 - Compose 1.5.0 - Kotlin 1.9.0 - \[Gradle Plugin] Gradle 8.5 - \[Gradle Plugin] Android Gradle Plugin 8.1.1 ##### Fixed - Fix relativePath bug in port of ResourceFile - Resolve report dir from ReportingExtension instead of hardcoding - Make report folder variant-aware - Remove reliance on kotlinx.coroutines.main.delay - Use a class file locator that queries the system class loader - Filter out unrecognized java-symbol tag warning - Skip synthetic fields in R classes - Update task inputs for resources and assets to account for file renames and moves - Update delta images to support showing diff when width and height differ Kudos to [@kevinzheng-ap](https://togithub.com/kevinzheng-ap), [@TWiStErRob](https://togithub.com/TWiStErRob), [@gamepro65](https://togithub.com/gamepro65), [@adamalyyan](https://togithub.com/adamalyyan), [@larryng](https://togithub.com/larryng), and others for contributions this release! ### [`v1.3.1`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#131---2023-07-18) [Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.3.0...1.3.1) ##### New - Migrated to new resource and asset loading mechanisms. To explicitly opt-out and fall back to the legacy mechanisms, add either/both of the following to your `gradle.properties`: app.cash.paparazzi.legacy.resource.loading=true app.cash.paparazzi.legacy.asset.loading=true - The Android system ui (status + navigation bar) is now hidden by default; to re-enable: @get:Rule val paparazzi = Paparazzi( showSystemUi = true ) - Relocate failure deltas from `PROJECT_ROOT/out/failures/` to `BUILD_DIR/paparazzi/failures/` - Support for application and dynamic feature modules - \[Gradle Plugin] Gradle 8.2.1 ##### Fixed - Fix accessibility labels when mergeDescendants is true - Fixes compose alert dialogs not rendering when using RenderingMode.SHRINK Kudos to [@kevinzheng-ap](https://togithub.com/kevinzheng-ap), [@adamalyyan](https://togithub.com/adamalyyan) and others for contributions this release! ### [`v1.3.0`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#130---2023-05-31) [Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.2.0...1.3.0) As of this release, consumers must build on Java 17+ environments. ##### New - Migrate Paparazzi to layoutlib Flamingo 2022.2.1 - Add accessibility support for Composables - Add layout accessibility check support - Compose 1.4.7 - Kotlin 1.8.21 - \[Gradle Plugin] Gradle 8.1.1 - \[Gradle Plugin] Android Gradle Plugin 8.0.2 ##### Fixed - Configure android.os.Build values via reflection - Various bug fixes with AccessibilityRenderExtension - Make sure changes to system properties actually affect test tasks - Fix caching bug with preparePaparazziResources task - Use Dispatchers.Main for delay functionality - Recomposition does not happen unless lifecycle is RESUMED - Fix NPE when unit test variant is disabled - Fix incompatibility with androidx.savedstate:1.1.0 Kudos to [@gamepro65](https://togithub.com/gamepro65), [@geoff-powell](https://togithub.com/geoff-powell), [@TWiStErRob](https://togithub.com/TWiStErRob), [@adamalyyan](https://togithub.com/adamalyyan) and others for contributions this release! ### [`v1.2.0`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#120---2023-01-18) [Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.1.0...1.2.0) ##### New - Migrate Paparazzi to layoutlib Electric Eel 2022.1.1 - Add support for RenderingMode.SHRINK to allow view-only screenshots - Expose flag to show/hide system ui - Register a default OnBackPressedDispatcherOwner if its present in classpath - Bump default compileSdk to API 33 - Compose 1.3.1 - Kotlin 1.7.20 - \[Gradle Plugin] Gradle 7.6 - \[Gradle Plugin] Android Gradle Plugin 7.4.0 ##### Fixed - Flush errors on unsafeUpdateConfig - Only apply wear circle shape to full device screenshots - Synchronize access to Handler_Delegate.queue - Apply compose hooks to all snapshot calls - Register LifecycleOwner and SavedStateRegistryOwner to all views - Execute Handler callbacks after snapshots to clean up Compose references - Fix RecyclerView issue due to layoutlib Dolphin update - Keep AGP and tools dependencies aligned Kudos to [@gamepro65](https://togithub.com/gamepro65), [@saket](https://togithub.com/saket), [@rharter](https://togithub.com/rharter) and others for contributions this release! ### [`v1.1.0`](https://togithub.com/cashapp/paparazzi/blob/HEAD/CHANGELOG.md#110---2022-10-12) [Compare Source](https://togithub.com/cashapp/paparazzi/compare/1.0.0...1.1.0) ##### New - Migrate Paparazzi to layoutlib Chipmunk 2021.2.1 - Add support for multiplatform plugin - Add support for JDKs 16+ - Add support for locales and layout direction (LTR/RTL) - Add Pixel 6 & Pixel 6 Pro device configs - Enable night mode for legacy views and composables - Enable ui mode to support form factors other than phones/tablets, e.g., auto, watches, etc. - Google Wear DeviceConfig support - Expose an API for offsetting frame capture time - Add InstantAnimationsRule to delay snapshot capture until the last frame. - Compose 1.3.0 - Kotlin 1.7.10 - \[Gradle Plugin] Gradle 7.5.1 ##### Fixed - Generate resource ids to support aapt inline resources in composables - Reset AndroidUiDispatcher between compose snapshots - Fix OOM error when a large number of compose snapshots are verified - Fix HTML report in development mode - Honor customization of Gradle's build output directory - \[Gradle Plugin] Configure native platform transformed path directly in test task to reduce cache misses - \[Gradle Plugin] Fix accidental eager task creation reducing memory pressure - \[Gradle Plugin] Fail explicitly when applying Android application plugin Kudos to [@chris-horner](https://togithub.com/chris-horner), [@swankjesse](https://togithub.com/swankjesse), [@yschimke](https://togithub.com/yschimke), [@dniHze](https://togithub.com/dniHze), [@TWiStErRob](https://togithub.com/TWiStErRob), [@gamepro65](https://togithub.com/gamepro65), [@liutikas](https://togithub.com/liutikas) and others for contributions this release!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.
This PR has been generated by Mend Renovate. View repository job log here.