From e8bd3df0a29133f0e6b96177b6f28dee109916bf Mon Sep 17 00:00:00 2001 From: manuel <9112949+CampelloManuel@users.noreply.github.com> Date: Mon, 5 Dec 2022 15:45:02 +0100 Subject: [PATCH] fix tests --- .../espresso_tests/EspressoHelper.java | 21 ++++++++++++++----- .../notepad/espresso_tests/TestPasswords.java | 9 +++++--- .../TestSaveLoadJsonBackup.java | 5 +++-- .../notepad/test/DBProviderTest.java | 2 ++ 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/EspressoHelper.java b/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/EspressoHelper.java index cee154652..2564695b2 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/EspressoHelper.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/EspressoHelper.java @@ -5,6 +5,7 @@ import static androidx.test.espresso.action.ViewActions.closeSoftKeyboard; import static androidx.test.espresso.action.ViewActions.typeText; import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.RootMatchers.isDialog; import static androidx.test.espresso.matcher.ViewMatchers.isClickable; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.isRoot; @@ -16,6 +17,7 @@ import android.app.UiAutomation; import android.os.SystemClock; +import androidx.annotation.IdRes; import androidx.test.espresso.AmbiguousViewMatcherException; import androidx.test.espresso.Espresso; import androidx.test.espresso.ViewInteraction; @@ -107,20 +109,29 @@ public static void createTaskList(String taskListName) { } // TODO regularly crashes here in the google_apis - API23 emulator image - onView(withId(R.id.titleField)).check(matches(isDisplayed())); + onViewWithIdInDialog(R.id.titleField).check(matches(isDisplayed())); // fill the popup - onView(withId(R.id.titleField)).perform(typeText(taskListName)); - onView(withId(R.id.dialog_yes)).check(matches(isDisplayed())); - onView(withId(R.id.dialog_yes)).perform(click()); + onViewWithIdInDialog(R.id.titleField).perform(typeText(taskListName)); + onViewWithIdInDialog(R.id.dialog_yes).check(matches(isDisplayed())); + onViewWithIdInDialog(R.id.dialog_yes).perform(click()); try { // check if the dialog is still visible (it shouldn't be) - onView(withId(R.id.dialog_yes)).check(matches(not(isDisplayed()))); + onViewWithIdInDialog(R.id.dialog_yes).check(matches(not(isDisplayed()))); } catch (Exception ex) { NnnLogger.exception(ex); } } + /** + * shorthand for onView(withId(viewId)).inRoot(isDialog()) + * + * @param viewId it's R.id.something + */ + public static ViewInteraction onViewWithIdInDialog(@IdRes int viewId) { + return onView(withId(viewId)).inRoot(isDialog()); + } + /** * @return TRUE if the app is in tablet mode, FALSE in phone mode */ diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/TestPasswords.java b/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/TestPasswords.java index af25383ba..3e0a4dbe3 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/TestPasswords.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/TestPasswords.java @@ -5,6 +5,7 @@ import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.action.ViewActions.typeText; import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.RootMatchers.isDialog; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withText; @@ -44,11 +45,13 @@ public void testAddNoteLockWithPassword() { onView(withId(R.id.passwordVerificationField)).perform(typeText(password)); onView(withId(R.id.dialog_yes)).perform(click()); + EspressoHelper.waitUi(); // then it opens the popup again, to ask the password - onView(withId(R.id.passwordField)).perform(typeText(password)); - onView(withId(R.id.dialog_yes)).check(matches(isDisplayed())); - onView(withId(R.id.dialog_yes)).perform(click()); + EspressoHelper.onViewWithIdInDialog(R.id.passwordField).check(matches(isDisplayed())); + EspressoHelper.onViewWithIdInDialog(R.id.passwordField).perform(typeText(password)); + EspressoHelper.onViewWithIdInDialog(R.id.dialog_yes).check(matches(isDisplayed())); + EspressoHelper.onViewWithIdInDialog(R.id.dialog_yes).perform(click()); // the note on the (custom) edittext should appear correctly onView(withId(R.id.taskText)).check(matches(withText(fullNoteText1))); diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/TestSaveLoadJsonBackup.java b/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/TestSaveLoadJsonBackup.java index c6a67df1e..b20891f2a 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/TestSaveLoadJsonBackup.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/espresso_tests/TestSaveLoadJsonBackup.java @@ -6,6 +6,7 @@ import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.action.ViewActions.scrollTo; import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.RootMatchers.isDialog; import static androidx.test.espresso.matcher.ViewMatchers.hasChildCount; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; @@ -65,8 +66,8 @@ public void testSaveLoadBackup() { openContextualActionModeOverflowMenu(); String CLEAR_COMPLETED = getStringResource(R.string.menu_clearcompleted); onView(withText(CLEAR_COMPLETED)).perform(click()); - onView(withId(android.R.id.button1)).check(matches(isDisplayed())); - onView(withId(android.R.id.button1)).perform(click()); + onView(withId(android.R.id.button1)).inRoot(isDialog()).check(matches(isDisplayed())); + onView(withId(android.R.id.button1)).inRoot(isDialog()).perform(click()); // restore the backup openContextualActionModeOverflowMenu(); diff --git a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderTest.java b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderTest.java index 589897c89..85b0766db 100644 --- a/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderTest.java +++ b/app/src/androidTest/java/com/nononsenseapps/notepad/test/DBProviderTest.java @@ -44,6 +44,8 @@ private void assertUriReturnsResult(final Uri uri, final String[] fields) { private void assertUriReturnsResult(final Uri uri, final String[] fields, final String where, final String[] whereArgs, final int count) { final Cursor c = mResolver.query(uri, fields, where, whereArgs, null); + NnnLogger.warning(DBProviderTest.class, + "'parameter' count = " + count + ", cursorCount = " + c.getCount()); if (count != c.getCount()) { // will crash. Let's get more info try {