diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java index 314aee4285..44f2719a02 100644 --- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java +++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java @@ -352,6 +352,14 @@ public abstract class AbstractLauncherUiTest { launcher -> launcher.getStateManager().getCurrentStableState() == state.get()); } + // Cannot be used in TaplTests between a Tapl call injecting a gesture and a tapl call + // expecting the results of that gesture because the wait can hide flakeness. + protected void waitForStateTransitionToEnd(String message, Supplier state) { + waitForLauncherCondition(message, + launcher -> launcher.getStateManager().isInStableState(state.get()) + && !launcher.getStateManager().isInTransition()); + } + protected void waitForResumed(String message) { waitForLauncherCondition(message, launcher -> launcher.hasBeenResumed()); } diff --git a/tests/src/com/android/launcher3/ui/WorkProfileTest.java b/tests/src/com/android/launcher3/ui/WorkProfileTest.java index 4bb6e91a09..45d20e2e4c 100644 --- a/tests/src/com/android/launcher3/ui/WorkProfileTest.java +++ b/tests/src/com/android/launcher3/ui/WorkProfileTest.java @@ -62,10 +62,12 @@ public class WorkProfileTest extends AbstractLauncherUiTest { mDevice.pressHome(); waitForLauncherCondition("Launcher didn't start", Objects::nonNull); - waitForState("Launcher internal state didn't switch to Normal", () -> NORMAL); + waitForStateTransitionToEnd("Launcher internal state didn't switch to Normal", + () -> NORMAL); waitForResumed("Launcher internal state is still Background"); executeOnLauncher(launcher -> launcher.getStateManager().goToState(ALL_APPS)); - waitForState("Launcher internal state didn't switch to All Apps", () -> ALL_APPS); + waitForStateTransitionToEnd("Launcher internal state didn't switch to All Apps", + () -> ALL_APPS); } @After