From a367288706d141386fd9a070a5f971d787f0123a Mon Sep 17 00:00:00 2001 From: Mercury Li Date: Mon, 9 Feb 2026 23:02:33 -0800 Subject: [PATCH] Fix screenshot tests: freeze animation clock to prevent AppNotIdleException Disable mainClock.autoAdvance in captureForDevice and captureMultiTheme before calling onRoot(), so infinite animations (e.g. NiaLoadingWheel) don't block Espresso idle synchronization in Compose 1.8.0. --- .../apps/nowinandroid/core/testing/util/ScreenshotHelper.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/screenshot-testing/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt b/core/screenshot-testing/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt index 016101ea1..500ff0fd2 100644 --- a/core/screenshot-testing/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt +++ b/core/screenshot-testing/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/testing/util/ScreenshotHelper.kt @@ -110,6 +110,9 @@ fun AndroidComposeTestRule, A>.c } } + // Freeze animations so infinite transitions don't block Espresso idle sync + this.mainClock.autoAdvance = false + // Run Accessibility checks first so logging is included val accessibilityException = try { this.onRoot().checkRoboAccessibility( @@ -201,6 +204,9 @@ fun AndroidComposeTestRule, A>.c } } + // Freeze animations so infinite transitions don't block Espresso idle sync + this.mainClock.autoAdvance = false + // Create permutations darkModeValues.forEach { isDarkMode -> darkMode = isDarkMode