Skip to main content

screenshot-tests

Use when writing or running Paparazzi screenshot tests in stripe-android — covers PaparazziRule setup, recording/verifying commands, and test structure

Datos de origen

Repositorio
stripe/stripe-android
Última actividad en el origen
15 de julio de 2026 a las 12:58
Idioma detectado de SKILL.md
inglés
Estrellas
1545
Forks
737

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
screenshot-tests
description
Use when writing or running Paparazzi screenshot tests in stripe-android — covers PaparazziRule setup, recording/verifying commands, and test structure
# Screenshot Tests (Paparazzi) We use [Paparazzi](https://github.com/cashapp/paparazzi) for screenshot testing via the `screenshot-testing` module. ## Recording Screenshots Record (update) screenshots after UI changes: ```bash ./gradlew :<module>:recordPaparazziDebug ``` To record a specific test class only: ```bash ./gradlew :<module>:recordPaparazziDebug --tests "com.stripe.android.package.MyScreenshotTest" ``` Wildcard form also works: ```bash ./gradlew :<module>:recordPaparazziDebug --tests "*.MyScreenshotTest" ``` New or updated screenshots are written to `<module>/src/test/snapshots/images/` and added to the Git staging area. ## Verifying Screenshots Verify screenshots match recorded baselines (used on CI): ```bash ./gradlew :<module>:verifyPaparazziDebug ``` Failure diffs are written to `<module>/out/failures` (git-ignored). ## Test Class Structure ```kotlin internal class MyScreenshotTest { @get:Rule val paparazziRule = PaparazziRule( SystemAppearance.entries, // Light/Dark PaymentSheetAppearance.entries, // Default/Custom/Crazy appearances FontSize.entries, // Default/Large font boxModifier = Modifier.padding(horizontal = 16.dp), ) @Test fun testDefault() { paparazziRule.snapshot { MyComposable(/* ... */) } } } ``` - `PaparazziRule` generates all permutations of the config options automatically. - Each test produces one snapshot per permutation (e.g., 12 images for 2 themes x 3 appearances x 2 font sizes). - Snapshots are named `<package>_<class>_<method>[<permutation>].png`. ## Available Config Options | Option | Values | Import | |--------|--------|--------| | `SystemAppearance` | `LightTheme`, `DarkTheme` | `com.stripe.android.screenshottesting` | | `FontSize` | `DefaultFont`, `LargeFont` | `com.stripe.android.screenshottesting` | | `PaymentSheetAppearance` | `DefaultAppearance`, `CustomAppearance`, `CrazyAppearance` | `com.stripe.android.utils.screenshots` | ## Common Mistakes - **Using `-Precord` or other flags** — Paparazzi uses a separate `recordPaparazziDebug` task, not a project property. - **Running `testDebugUnitTest` to record** — this only _verifies_ against existing snapshots; use `recordPaparazziDebug` to update them. - **Forgetting to commit updated snapshots** — recorded images go into `src/test/snapshots/images/` and must be committed.
Ver en GitHub