From def4f3a1b953201872b1e0ba30bc48cae38644e5 Mon Sep 17 00:00:00 2001 From: "Marcatili, Manuel" Date: Thu, 16 Apr 2026 10:26:11 +0300 Subject: [PATCH] Cleanup unused utils --- .../EspressoEditTrackRecordingTest.java | 11 +-- .../opentracks/util/EspressoUtils.java | 84 +------------------ 2 files changed, 4 insertions(+), 91 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/EspressoEditTrackRecordingTest.java b/src/androidTest/java/de/dennisguse/opentracks/EspressoEditTrackRecordingTest.java index fcfeabdd1..e613222cc 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/EspressoEditTrackRecordingTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/EspressoEditTrackRecordingTest.java @@ -6,9 +6,9 @@ import static androidx.test.espresso.action.ViewActions.closeSoftKeyboard; import static androidx.test.espresso.action.ViewActions.replaceText; import static androidx.test.espresso.action.ViewActions.scrollTo; import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.RootMatchers.isPlatformPopup; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA; -import static androidx.test.espresso.matcher.ViewMatchers.isRoot; import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription; import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; @@ -16,7 +16,6 @@ import static de.dennisguse.opentracks.util.ActivityTestUtils.waitForResumedActi import static de.dennisguse.opentracks.util.EspressoUtils.performClick; import static de.dennisguse.opentracks.util.EspressoUtils.performClickOnAncestor; import static de.dennisguse.opentracks.util.EspressoUtils.performLongClick; -import static de.dennisguse.opentracks.util.EspressoUtils.waitForView; import static de.dennisguse.opentracks.util.EspressoUtils.waitForResumedView; import static de.dennisguse.opentracks.util.TrackRecordingServiceTestUtils.waitForRecordingState; import static org.hamcrest.Matchers.allOf; @@ -82,10 +81,8 @@ public class EspressoEditTrackRecordingTest { withContentDescription(androidx.appcompat.R.string.abc_action_menu_overflow_description), isDescendantOfA(withId(R.id.bottom_app_bar)))) .perform(performClick()); - waitUntilDisplayedInCurrentRoot(withText(R.string.menu_edit)); - - // Click the item. onView(withText(R.string.menu_edit)) + .inRoot(isPlatformPopup()) .perform(performClickOnAncestor()); waitUntilDisplayed(withId(R.id.track_edit_name)); @@ -119,8 +116,4 @@ public class EspressoEditTrackRecordingTest { private void waitUntilDisplayed(Matcher viewMatcher) { waitForResumedView(allOf(viewMatcher, isDisplayed()), UI_TIMEOUT); } - - private void waitUntilDisplayedInCurrentRoot(Matcher viewMatcher) { - onView(isRoot()).perform(waitForView(allOf(viewMatcher, isDisplayed()), UI_TIMEOUT)); - } } diff --git a/src/androidTest/java/de/dennisguse/opentracks/util/EspressoUtils.java b/src/androidTest/java/de/dennisguse/opentracks/util/EspressoUtils.java index 0ac4df014..fb969cab8 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/util/EspressoUtils.java +++ b/src/androidTest/java/de/dennisguse/opentracks/util/EspressoUtils.java @@ -1,15 +1,13 @@ package de.dennisguse.opentracks.util; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; -import static androidx.test.espresso.matcher.ViewMatchers.isRoot; +import static androidx.test.espresso.matcher.ViewMatchers.isAssignableFrom; import android.app.Activity; import android.os.SystemClock; import android.view.View; -import android.view.ViewGroup; import android.view.ViewParent; import android.widget.AdapterView; -import android.widget.ListView; import androidx.recyclerview.widget.RecyclerView; import androidx.test.espresso.PerformException; @@ -30,46 +28,12 @@ import org.hamcrest.TypeSafeMatcher; import java.time.Duration; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.TimeoutException; import java.util.function.Predicate; public class EspressoUtils { private static final long VIEW_POLLING_INTERVAL_MS = 50; - public static Matcher childAtPosition( - final Matcher parentMatcher, final int position) { - - return new TypeSafeMatcher<>() { - @Override - public void describeTo(Description description) { - description.appendText("Child at position " + position + " in parent "); - parentMatcher.describeTo(description); - } - - @Override - public boolean matchesSafely(View view) { - ViewParent parent = view.getParent(); - return parent instanceof ViewGroup && parentMatcher.matches(parent) - && view.equals(((ViewGroup) parent).getChildAt(position)); - } - }; - } - - public static Matcher withListSize (final int size) { - return new TypeSafeMatcher<>() { - @Override - public boolean matchesSafely(final View view) { - return ((ListView) view).getCount() == size; - } - - @Override - public void describeTo(final Description description) { - description.appendText("ListView should have " + size + " items"); - } - }; - } - public static Matcher withRecyclerViewItemCount(final int count) { return new TypeSafeMatcher<>() { @Override @@ -120,50 +84,6 @@ public class EspressoUtils { }; } - public static ViewAction waitForView(final Matcher viewMatcher, final Duration timeout) { - return waitForViewCondition(viewMatcher, ignored -> true, "view to match " + viewMatcher, timeout); - } - - public static ViewAction waitForViewCondition(final Matcher viewMatcher, - final Predicate condition, - final String conditionDescription, - final Duration timeout) { - return new ViewAction() { - @Override - public String getDescription() { - return "wait up to " + timeout + " ms for " + conditionDescription; - } - - @Override - public Matcher getConstraints() { - return isRoot(); - } - - @Override - public void perform(UiController uiController, View view) { - long deadline = SystemClock.uptimeMillis() + timeout.toMillis(); - - do { - uiController.loopMainThreadUntilIdle(); - - for (View child : TreeIterables.breadthFirstViewTraversal(view)) { - if (viewMatcher.matches(child) && condition.test(child)) { - return; - } - } - - uiController.loopMainThreadForAtLeast(VIEW_POLLING_INTERVAL_MS); - } while (SystemClock.uptimeMillis() < deadline); - - throw new PerformException.Builder() - .withActionDescription(getDescription()) - .withViewDescription(HumanReadables.describe(view)) - .withCause(new TimeoutException("Timed out waiting for " + conditionDescription)) - .build(); - } - }; - } - public static void waitForResumedView(final Matcher viewMatcher, final Duration timeout) { waitForResumedViewCondition(viewMatcher, ignored -> true, "view to match " + viewMatcher, timeout); } @@ -256,7 +176,7 @@ public class EspressoUtils { @Override public Matcher getConstraints() { - return isDisplayed(); + return isAssignableFrom(View.class); } @Override