Releases: cashapp/paparazzi
1.3.5
New
- Render pending recompositions for
@Composable
s that require a second layout pass - Support for overlays in accessibility snapshots
- Support for Compose UI heading and selected states in accessibility snapshots
- Support for toggleable state in accessibility snapshots
- Support for displaying multiple accessibility descriptions, similar to Talkback
- Include failure delta image in JUnit test reporting
- Migrate Paparazzi to layoutlib Jellyfish 2023.3.1
- Compose 1.7.5
- Kotlin 2.0.21
- [Gradle Plugin] Gradle 8.10.2
- [Gradle Plugin] Android Gradle Plugin 8.4.2
Fixed
- Improve Gradle test task caching by preventing overlapping outputs with snapshotOutputDir
- Migrate plugin to use modern AGP variant APIs
- Fix support for AndroidX ResourcesCompat.getFont()
- Fix inconsistent cross-platform text renderings in failure delta image
- Relax image comparisons with OffByTwo differ to work around cross-platform rendering issues
- Fix when clearAndSetSemantics is used to render content descriptions in accessibility snapshots
- Avoid invalid chars in Windows filenames
- Fix file move failures on Windows
- Avoid hash collisions when images have similar RGB content
- Cleanup unnecessary "loadPublicResourceNames" warning from log output
- Additional bug fixes with accessibility snapshot tests
Kudos to @geoff-powell, @colinmarsch, @BrianGardnerAtl, @ribafish, @gabrielittner and others for contributions this release!
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 (now supports SDK 34!)
- 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, @gamepro65, @kevinzheng-ap, @nak5ive, @TWiStErRob, @emuguy1 and others for contributions this release!
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, @kevinzheng-ap, @BrianGardnerAtl, @adamalyyan, and others for contributions this release!
1.3.2
NOTE: Due to a known issue with how Guava now publishes its artifact, you will need to apply the following snippet workaround to your root build.gradle
(Groovy-based, Kotlin impls will vary slightly):
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: google/guava#6801.
New
- Support for pseudolocalization tests! To get started:
@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, @TWiStErRob, @gamepro65, @adamalyyan, @larryng, and others for contributions this release!
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 yourgradle.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/
toBUILD_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, @adamalyyan and others for contributions this release!
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, @geoff-powell, @TWiStErRob, @adamalyyan and others for contributions this release!