From 8b10138cd637b8c61447bb6435e0f5649aa96bf8 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Fri, 11 Mar 2016 13:20:43 -0500 Subject: [PATCH] Fix tests on pre-Lollipop devices --- .../isoron/uhabits/MainActivityActions.java | 33 +++++++++++++------ .../java/org/isoron/uhabits/MainTest.java | 16 ++++----- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/app/src/androidTest/java/org/isoron/uhabits/MainActivityActions.java b/app/src/androidTest/java/org/isoron/uhabits/MainActivityActions.java index dd3675323..3ce26da37 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/MainActivityActions.java +++ b/app/src/androidTest/java/org/isoron/uhabits/MainActivityActions.java @@ -24,7 +24,6 @@ import android.support.test.InstrumentationRegistry; import org.isoron.uhabits.models.Habit; -import java.util.Arrays; import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -32,13 +31,14 @@ import java.util.Random; import static android.support.test.espresso.Espresso.onData; import static android.support.test.espresso.Espresso.onView; -import static android.support.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu; +import static android.support.test.espresso.Espresso.openContextualActionModeOverflowMenu; import static android.support.test.espresso.Espresso.pressBack; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.action.ViewActions.longClick; import static android.support.test.espresso.action.ViewActions.replaceText; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; +import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.allOf; @@ -149,17 +149,30 @@ public class MainActivityActions public static void deleteHabits(List names) { - Context context = InstrumentationRegistry.getTargetContext(); - selectHabits(names); - - openActionBarOverflowOrOptionsMenu(context); - - onView(withText(R.string.delete)) - .perform(click()); + clickActionModeMenuItem(R.string.delete); onView(withText("OK")) .perform(click()); - assertHabitsDontExist(names); } + + public static void clickActionModeMenuItem(int stringId) + { + try + { + onView(withText(stringId)).perform(click()); + } + catch (Exception e1) + { + try + { + onView(withContentDescription(stringId)).perform(click()); + } + catch(Exception e2) + { + openContextualActionModeOverflowMenu(); + onView(withText(stringId)).perform(click()); + } + } + } } diff --git a/app/src/androidTest/java/org/isoron/uhabits/MainTest.java b/app/src/androidTest/java/org/isoron/uhabits/MainTest.java index aa1576ab4..37bd87989 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/MainTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/MainTest.java @@ -3,7 +3,6 @@ package org.isoron.uhabits; import android.content.Context; import android.support.test.InstrumentationRegistry; import android.support.test.espresso.NoMatchingViewException; -import android.support.test.espresso.action.ViewActions; import android.support.test.espresso.intent.rule.IntentsTestRule; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.LargeTest; @@ -32,7 +31,6 @@ import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.isRoot; import static android.support.test.espresso.matcher.ViewMatchers.withClassName; -import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription; import static android.support.test.espresso.matcher.ViewMatchers.withId; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static org.hamcrest.Matchers.allOf; @@ -46,6 +44,7 @@ import static org.isoron.uhabits.MainActivityActions.addHabit; import static org.isoron.uhabits.MainActivityActions.assertHabitExists; import static org.isoron.uhabits.MainActivityActions.assertHabitsDontExist; import static org.isoron.uhabits.MainActivityActions.assertHabitsExist; +import static org.isoron.uhabits.MainActivityActions.clickActionModeMenuItem; import static org.isoron.uhabits.MainActivityActions.deleteHabit; import static org.isoron.uhabits.MainActivityActions.deleteHabits; import static org.isoron.uhabits.MainActivityActions.selectHabit; @@ -86,8 +85,8 @@ public class MainTest names.add(addHabit()); selectHabits(names); - onView(withContentDescription(R.string.archive)) - .perform(click()); + + clickActionModeMenuItem(R.string.archive); assertHabitsDontExist(names); openActionBarOverflowOrOptionsMenu(context); @@ -96,8 +95,7 @@ public class MainTest assertHabitsExist(names); selectHabits(names); - onView(withContentDescription(R.string.unarchive)) - .perform(click()); + clickActionModeMenuItem(R.string.unarchive); openActionBarOverflowOrOptionsMenu(context); onView(withText(R.string.show_archived)) @@ -148,8 +146,7 @@ public class MainTest .onChildView(withId(R.id.label)) .perform(longClick()); - onView(withContentDescription(R.string.edit)) - .perform(click()); + clickActionModeMenuItem(R.string.edit); String modifiedName = "Modified " + new Random().nextInt(10000); typeHabitData(modifiedName, "", "1", "1"); @@ -160,8 +157,7 @@ public class MainTest assertHabitExists(modifiedName); selectHabit(modifiedName); - onView(withContentDescription(R.string.color_picker_default_title)) - .perform(click()); + clickActionModeMenuItem(R.string.color_picker_default_title); pressBack(); deleteHabit(modifiedName);