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

Commit 4477bf9f authored by Nick Chameyev's avatar Nick Chameyev
Browse files

[Chooser/ResolverActivity] Fix flakiness in work profile tests

Sometimes work profile tests were failing
because work profile tab button click was not
handled. Most likely it is related to the
opening animation of the drawer layout.

Added retry mechanism to click on the button
again if the tab was not selected.

Test: repeated run of ResolverActivityWorkProfileTest
Test: atest com.android.internal.app.ChooserActivityWorkProfileTest
Test: atest com.android.internal.app.ResolverActivityWorkProfileTest
Test: atest com.android.intentresolve.UnbundledChooserActivityWorkProfileTest
Bug: 262018267
Change-Id: Icb6d0337d7f92f1ceb59ef3c03e5b9338dcf2890
parent 596e3f90
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -16,11 +16,14 @@

package com.android.internal.app;

import static android.util.PollingCheck.waitFor;

import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.swipeUp;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.isSelected;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;

@@ -49,6 +52,8 @@ import com.android.internal.R;
import com.android.internal.app.ResolverActivity.ResolvedComponentInfo;
import com.android.internal.app.ChooserActivityWorkProfileTest.TestCase.Tab;

import junit.framework.AssertionFailedError;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -331,9 +336,18 @@ public class ChooserActivityWorkProfileTest {
        final int stringId = tab == Tab.WORK ? R.string.resolver_work_tab
                : R.string.resolver_personal_tab;

        waitFor(() -> {
            onView(withText(stringId)).perform(click());
            waitForIdle();

            try {
                onView(withText(stringId)).check(matches(isSelected()));
                return true;
            } catch (AssertionFailedError e) {
                return false;
            }
        });

        onView(withId(R.id.contentPanel))
                .perform(swipeUp());
        waitForIdle();
+16 −2
Original line number Diff line number Diff line
@@ -16,11 +16,14 @@

package com.android.internal.app;

import static android.util.PollingCheck.waitFor;

import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.swipeUp;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.isSelected;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;

@@ -48,6 +51,8 @@ import com.android.internal.R;
import com.android.internal.app.ResolverActivity.ResolvedComponentInfo;
import com.android.internal.app.ResolverActivityWorkProfileTest.TestCase.Tab;

import junit.framework.AssertionFailedError;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -309,9 +314,18 @@ public class ResolverActivityWorkProfileTest {
        final int stringId = tab == Tab.WORK ? R.string.resolver_work_tab
                : R.string.resolver_personal_tab;

        waitFor(() -> {
            onView(withText(stringId)).perform(click());
            waitForIdle();

            try {
                onView(withText(stringId)).check(matches(isSelected()));
                return true;
            } catch (AssertionFailedError e) {
                return false;
            }
        });

        onView(withId(R.id.contentPanel))
                .perform(swipeUp());
        waitForIdle();