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

Quellinformationen

Repository
stripe/stripe-android
Letzte Quellaktivität
15. Juli 2026 um 12:58
Erkannte Sprache von SKILL.md
Englisch
Sterne
1.541
Forks
738

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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.
Auf GitHub ansehen