Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a234a8ea authored by Jon Miranda's avatar Jon Miranda
Browse files

Testing to see if waiting for transition to end will fix flaky tests

Test: presubmit
Bug: 202735477
Change-Id: Icf62003b9f422cf0e327365260c36f6d57b71aef
parent cc4a1925
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>> {
                + ", mCurrentStableState:" + mCurrentStableState
                + ", mState:" + mState
                + ", mRestState:" + mRestState
                + ", isInTransition:" + (mConfig.currentAnimation != null) + ")";
                + ", isInTransition:" + isInTransition() + ")";
    }

    public void dump(String prefix, PrintWriter writer) {
@@ -93,7 +93,7 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>> {
        writer.println(prefix + "\tmCurrentStableState:" + mCurrentStableState);
        writer.println(prefix + "\tmState:" + mState);
        writer.println(prefix + "\tmRestState:" + mRestState);
        writer.println(prefix + "\tisInTransition:" + (mConfig.currentAnimation != null));
        writer.println(prefix + "\tisInTransition:" + isInTransition());
    }

    public StateHandler[] getStateHandlers() {
@@ -129,6 +129,13 @@ public class StateManager<STATE_TYPE extends BaseState<STATE_TYPE>> {
                && (mConfig.targetState == null || mConfig.targetState == state);
    }

    /**
     * @return {@code true} If there is an active transition.
     */
    public boolean isInTransition() {
        return mConfig.currentAnimation != null;
    }

    /**
     * @see #goToState(STATE_TYPE, boolean, AnimatorListener)
     */
+3 −2
Original line number Diff line number Diff line
@@ -354,9 +354,10 @@ public abstract class AbstractLauncherUiTest {

    // 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 waitForStableState(String message, Supplier<LauncherState> state) {
    protected void waitForStateTransitionToEnd(String message, Supplier<LauncherState> state) {
        waitForLauncherCondition(message,
                launcher -> launcher.getStateManager().isInStableState(state.get()));
                launcher -> launcher.getStateManager().isInStableState(state.get())
                        && !launcher.getStateManager().isInTransition());
    }

    protected void waitForResumed(String message) {
+4 −2
Original line number Diff line number Diff line
@@ -91,9 +91,11 @@ public class WorkProfileTest extends AbstractLauncherUiTest {
    public void workTabExists() {
        mDevice.pressHome();
        waitForLauncherCondition("Launcher didn't start", Objects::nonNull);
        waitForStableState("Launcher internal state didn't switch to Normal", () -> NORMAL);
        waitForStateTransitionToEnd("Launcher internal state didn't switch to Normal",
                () -> NORMAL);
        executeOnLauncher(launcher -> launcher.getStateManager().goToState(ALL_APPS));
        waitForStableState("Launcher internal state didn't switch to All Apps", () -> ALL_APPS);
        waitForStateTransitionToEnd("Launcher internal state didn't switch to All Apps",
                () -> ALL_APPS);
        waitForLauncherCondition("Personal tab is missing",
                launcher -> launcher.getAppsView().isPersonalTabVisible(),
                LauncherInstrumentation.WAIT_TIME_MS);