From 15f8f8549db206a122124844ebf890cf1f8059c4 Mon Sep 17 00:00:00 2001 From: Vivek Maskara Date: Mon, 2 Mar 2020 13:23:43 -0700 Subject: [PATCH 1/2] Fix existing Espresso tests --- .../fr/free/nrw/commons/LoginActivityTest.kt | 1 + .../java/fr/free/nrw/commons/SignupTest.kt | 1 + .../java/fr/free/nrw/commons/UITestHelper.kt | 1 + .../java/fr/free/nrw/commons/UploadTest.kt | 33 +++++++++++-------- .../java/fr/free/nrw/commons/ViewActions.java | 33 +++++++++++++++++++ 5 files changed, 56 insertions(+), 13 deletions(-) create mode 100644 app/src/androidTest/java/fr/free/nrw/commons/ViewActions.java diff --git a/app/src/androidTest/java/fr/free/nrw/commons/LoginActivityTest.kt b/app/src/androidTest/java/fr/free/nrw/commons/LoginActivityTest.kt index 22d17e565f..ac2eb6ff76 100644 --- a/app/src/androidTest/java/fr/free/nrw/commons/LoginActivityTest.kt +++ b/app/src/androidTest/java/fr/free/nrw/commons/LoginActivityTest.kt @@ -46,6 +46,7 @@ class LoginActivityTest { @Test fun testForgotPassword() { + UITestHelper.sleep(3000) Espresso.onView(ViewMatchers.withId(R.id.forgot_password)) .perform(ViewActions.click()) Intents.intended(CoreMatchers.allOf(IntentMatchers.hasAction(Intent.ACTION_VIEW), IntentMatchers.hasData(BuildConfig.FORGOT_PASSWORD_URL))); diff --git a/app/src/androidTest/java/fr/free/nrw/commons/SignupTest.kt b/app/src/androidTest/java/fr/free/nrw/commons/SignupTest.kt index 5feb282af5..534e6b27f3 100644 --- a/app/src/androidTest/java/fr/free/nrw/commons/SignupTest.kt +++ b/app/src/androidTest/java/fr/free/nrw/commons/SignupTest.kt @@ -35,6 +35,7 @@ class SignupTest { } + UITestHelper.sleep(3000) Espresso.onView(withId(R.id.sign_up_button)) .check(ViewAssertions.matches(ViewMatchers.isDisplayed())) .perform(click()) diff --git a/app/src/androidTest/java/fr/free/nrw/commons/UITestHelper.kt b/app/src/androidTest/java/fr/free/nrw/commons/UITestHelper.kt index df03157c2a..78a1fb62b1 100644 --- a/app/src/androidTest/java/fr/free/nrw/commons/UITestHelper.kt +++ b/app/src/androidTest/java/fr/free/nrw/commons/UITestHelper.kt @@ -25,6 +25,7 @@ class UITestHelper { fun loginUser() { try { //Perform Login + sleep(3000) onView(ViewMatchers.withId(R.id.login_username)) .perform(ViewActions.clearText(), ViewActions.typeText(getTestUsername())) closeSoftKeyboard() diff --git a/app/src/androidTest/java/fr/free/nrw/commons/UploadTest.kt b/app/src/androidTest/java/fr/free/nrw/commons/UploadTest.kt index 4c57a3bb97..20d618ffd1 100644 --- a/app/src/androidTest/java/fr/free/nrw/commons/UploadTest.kt +++ b/app/src/androidTest/java/fr/free/nrw/commons/UploadTest.kt @@ -135,11 +135,7 @@ class UploadTest { val commonsFileName = "MobileTest " + dateFormat.format(Date()) // Try to dismiss the error, if there is one (probably about duplicate files on Commons) - try { - onView(withText("Yes")) - .check(matches(isDisplayed())) - .perform(click()) - } catch (ignored: NoMatchingViewException) {} + dismissWarning("Yes") onView(allOf(isDisplayed(), withId(R.id.et_title))) .perform(replaceText(commonsFileName)) @@ -151,25 +147,27 @@ class UploadTest { onView(allOf(isDisplayed(), withId(R.id.btn_next))) .perform(click()) - try { - onView(withText("Yes")) - .check(matches(isDisplayed())) - .perform(click()) - } catch (ignored: NoMatchingViewException) {} + UITestHelper.sleep(5000) + dismissWarning("Yes") - UITestHelper.sleep(1000) + UITestHelper.sleep(3000) onView(allOf(isDisplayed(), withId(R.id.et_search))) .perform(replaceText("Uploaded with Mobile/Android Tests")) UITestHelper.sleep(3000) - onView(allOf(isDisplayed(), withParent(withId(R.id.rv_categories)))) - .perform(click()) + try { + onView(allOf(isDisplayed(), withParent(withId(R.id.rv_categories)))) + .perform(click()) + } catch (ignored: NoMatchingViewException) { + } onView(allOf(isDisplayed(), withId(R.id.btn_next))) .perform(click()) + dismissWarning("Yes, Submit") + UITestHelper.sleep(500) onView(allOf(isDisplayed(), withId(R.id.btn_submit))) @@ -181,4 +179,13 @@ class UploadTest { commonsFileName.replace(' ', '_') + ".jpg" Timber.i("File should be uploaded to $fileUrl") } + + private fun dismissWarning(warningText: String) { + try { + onView(withText(warningText)) + .check(matches(isDisplayed())) + .perform(click()) + } catch (ignored: NoMatchingViewException) { + } + } } \ No newline at end of file diff --git a/app/src/androidTest/java/fr/free/nrw/commons/ViewActions.java b/app/src/androidTest/java/fr/free/nrw/commons/ViewActions.java new file mode 100644 index 0000000000..970579e08f --- /dev/null +++ b/app/src/androidTest/java/fr/free/nrw/commons/ViewActions.java @@ -0,0 +1,33 @@ +package fr.free.nrw.commons; + +import android.view.View; + +import androidx.test.espresso.UiController; +import androidx.test.espresso.ViewAction; + +import org.hamcrest.Matcher; + +public class ViewActions { + + public static ViewAction clickChildViewWithId(final int id) { + return new ViewAction() { + @Override + public Matcher getConstraints() { + return null; + } + + @Override + public String getDescription() { + return "Click on a child view with specified id."; + } + + @Override + public void perform(UiController uiController, View view) { + View v = view.findViewById(id); + v.performClick(); + } + }; + } + +} + From 7e406b992737531e5b24e019da23d9d0bbe636d3 Mon Sep 17 00:00:00 2001 From: Vivek Maskara Date: Mon, 2 Mar 2020 14:18:18 -0700 Subject: [PATCH 2/2] Convert class to kotlin --- .../java/fr/free/nrw/commons/ViewActions.java | 33 ------------------- .../java/fr/free/nrw/commons/ViewActions.kt | 25 ++++++++++++++ 2 files changed, 25 insertions(+), 33 deletions(-) delete mode 100644 app/src/androidTest/java/fr/free/nrw/commons/ViewActions.java create mode 100644 app/src/androidTest/java/fr/free/nrw/commons/ViewActions.kt diff --git a/app/src/androidTest/java/fr/free/nrw/commons/ViewActions.java b/app/src/androidTest/java/fr/free/nrw/commons/ViewActions.java deleted file mode 100644 index 970579e08f..0000000000 --- a/app/src/androidTest/java/fr/free/nrw/commons/ViewActions.java +++ /dev/null @@ -1,33 +0,0 @@ -package fr.free.nrw.commons; - -import android.view.View; - -import androidx.test.espresso.UiController; -import androidx.test.espresso.ViewAction; - -import org.hamcrest.Matcher; - -public class ViewActions { - - public static ViewAction clickChildViewWithId(final int id) { - return new ViewAction() { - @Override - public Matcher getConstraints() { - return null; - } - - @Override - public String getDescription() { - return "Click on a child view with specified id."; - } - - @Override - public void perform(UiController uiController, View view) { - View v = view.findViewById(id); - v.performClick(); - } - }; - } - -} - diff --git a/app/src/androidTest/java/fr/free/nrw/commons/ViewActions.kt b/app/src/androidTest/java/fr/free/nrw/commons/ViewActions.kt new file mode 100644 index 0000000000..856ce4c010 --- /dev/null +++ b/app/src/androidTest/java/fr/free/nrw/commons/ViewActions.kt @@ -0,0 +1,25 @@ +package fr.free.nrw.commons + +import android.view.View +import androidx.test.espresso.UiController +import androidx.test.espresso.ViewAction +import org.hamcrest.Matcher + +object ViewActions { + fun clickChildViewWithId(id: Int): ViewAction { + return object : ViewAction { + override fun getConstraints(): Matcher { + return null + } + + override fun getDescription(): String { + return "Click on a child view with specified id." + } + + override fun perform(uiController: UiController, view: View) { + val v = view.findViewById(id) + v.performClick() + } + } + } +} \ No newline at end of file