From 962c64f52f141d432c17e3040c0e4532e93931ba Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Tue, 25 Aug 2020 03:24:05 +0530 Subject: [PATCH 01/17] Close '#1745' Revamped SettingsActivityTest and used Robot --- .../settings/KiwixSettingsActivityTest.java | 95 ------------------- .../settings/KiwixSettingsActivityTest.kt | 73 ++++++++++++++ .../kiwixmobile/settings/SettingsRobot.kt | 55 +++++++++++ 3 files changed, 128 insertions(+), 95 deletions(-) delete mode 100644 app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java create mode 100644 app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt create mode 100644 app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java deleted file mode 100644 index 6ba4c18a4..000000000 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Kiwix Android - * Copyright (c) 2019 Kiwix - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -package org.kiwix.kiwixmobile.settings; - -import android.view.View; -import androidx.annotation.StringRes; -import androidx.recyclerview.widget.RecyclerView; -import androidx.test.rule.ActivityTestRule; -import org.hamcrest.Matcher; -import org.jetbrains.annotations.NotNull; -import org.junit.Rule; -import org.junit.Test; -import org.kiwix.kiwixmobile.core.R; - -import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; -import static androidx.test.espresso.contrib.RecyclerViewActions.actionOnItem; -import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant; -import static androidx.test.espresso.matcher.ViewMatchers.withClassName; -import static androidx.test.espresso.matcher.ViewMatchers.withText; -import static com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed; -import static org.hamcrest.Matchers.anyOf; -import static org.hamcrest.Matchers.is; - -public class KiwixSettingsActivityTest { - @Rule - public ActivityTestRule activityTestRule = - new ActivityTestRule<>(KiwixSettingsActivity.class); - - @Test - public void testToggle() { - clickOn(R.string.pref_back_to_top); - clickOn(R.string.pref_newtab_background_title); - clickOn(R.string.pref_external_link_popup_title); - clickOn(R.string.pref_wifi_only); - } - - private void clickOn(@StringRes int... stringIds) { - Matcher[] matchers = new Matcher[stringIds.length]; - for (int i = 0; i < stringIds.length; i++) { - matchers[i] = withText(stringIds[i]); - } - onView(withClassName(is(RecyclerView.class.getName()))) - .perform(actionOnItem(hasDescendant(anyOf(matchers)), click())); - } - - @Test - public void testLanguageDialog() { - clickOn(R.string.device_default); - assertDisplayed(R.string.pref_language_title); - } - - @Test - public void testStorageDialog() { - clickOn(R.string.internal_storage, R.string.external_storage); - assertDisplayed(R.string.pref_storage); - } - - @Test - public void testHistoryDialog() { - clickOn(R.string.pref_clear_all_history_title); - assertDisplayed(R.string.clear_all_history_dialog_title); - } - - @Test - public void testNightModeDialog() { - clickOn(R.string.pref_night_mode); - for (String nightModeString : nightModeStrings()) { - assertDisplayed(nightModeString); - } - } - - @NotNull private String[] nightModeStrings() { - return activityTestRule.getActivity() - .getResources() - .getStringArray(R.array.pref_night_modes_entries); - } -} - diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt new file mode 100644 index 000000000..0250351a5 --- /dev/null +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -0,0 +1,73 @@ +/* + * Kiwix Android + * Copyright (c) 2019 Kiwix + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +package org.kiwix.kiwixmobile.settings + +import com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed +import org.junit.Test +import org.kiwix.kiwixmobile.BaseActivityTest +import org.kiwix.kiwixmobile.core.R + +class KiwixSettingsActivityTest : BaseActivityTest() { + + override var activityRule = activityTestRule() + + @Test fun testToggle() { + settingsRobo { + clickOn(R.string.pref_back_to_top) + clickOn(R.string.pref_newtab_background_title) + clickOn(R.string.pref_external_link_popup_title) + clickOn(R.string.pref_wifi_only) + } + } + + @Test fun testLanguageDialog() { + settingsRobo { + clickOn(R.string.device_default) + assertDisplayed(R.string.pref_language_title) + } + } + + @Test fun testStorageDialog() { + settingsRobo { + clickOn(R.string.internal_storage, R.string.external_storage) + assertDisplayed(R.string.pref_storage) + } + } + + @Test fun testHistoryDialog() { + settingsRobo { + clickOn(R.string.pref_clear_all_history_title) + assertDisplayed(R.string.clear_all_history_dialog_title) + } + } + + @Test fun testNightModeDialog() { + settingsRobo { + clickOn(R.string.pref_night_mode) + for (nightModeString in nightModeStrings()) { + assertDisplayed(nightModeString) + } + } + } + + private fun nightModeStrings(): Array { + return activityRule.activity + .resources + .getStringArray(R.array.pref_night_modes_entries) + } +} diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt new file mode 100644 index 000000000..8a85803e0 --- /dev/null +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -0,0 +1,55 @@ +/* + * Kiwix Android + * Copyright (c) 2020 Kiwix + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package org.kiwix.kiwixmobile.settings + +import android.view.View +import androidx.annotation.StringRes +import androidx.recyclerview.widget.RecyclerView +import androidx.test.espresso.Espresso +import androidx.test.espresso.action.ViewActions +import androidx.test.espresso.contrib.RecyclerViewActions +import androidx.test.espresso.matcher.ViewMatchers +import applyWithViewHierarchyPrinting +import org.hamcrest.Matcher +import org.hamcrest.Matchers +import org.kiwix.kiwixmobile.BaseRobot + +/** + * Authored by Ayush Shrivastava on 25/8/20 + */ + +fun settingsRobo(func: SettingsRobot.() -> Unit) = + SettingsRobot().applyWithViewHierarchyPrinting { func } + +class SettingsRobot : BaseRobot() { + fun clickOn(@StringRes vararg stringIds: Int) { + val matchers: Array?> = arrayOfNulls(stringIds.size) + for (i in stringIds.indices) { + matchers[i] = ViewMatchers.withText(stringIds[i]) + } + + Espresso.onView( + ViewMatchers.withClassName(Matchers.`is`(RecyclerView::class.java.name)) + ).perform( + RecyclerViewActions.actionOnItem( + ViewMatchers.hasDescendant(Matchers.anyOf(*matchers)), ViewActions.click() + ) + ) + } +} From 4686be9636a3fc2f8a24d1fb074c664a8763b3d1 Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Tue, 25 Aug 2020 03:51:47 +0530 Subject: [PATCH 02/17] Changed function from block-body to Expression-Body --- .../java/org/kiwix/kiwixmobile/BaseActivityTest.kt | 2 ++ .../kiwixmobile/settings/KiwixSettingsActivityTest.kt | 7 ++----- .../java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt index fdb7c7537..2a03e4d0b 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/BaseActivityTest.kt @@ -34,9 +34,11 @@ import org.kiwix.kiwixmobile.core.di.components.TestComponent abstract class BaseActivityTest { @get:Rule abstract var activityRule: ActivityTestRule + @get:Rule var readPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(permission.READ_EXTERNAL_STORAGE) + @get:Rule var writePermissionRule: GrantPermissionRule = GrantPermissionRule.grant(permission.WRITE_EXTERNAL_STORAGE) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index 0250351a5..888082b82 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -65,9 +65,6 @@ class KiwixSettingsActivityTest : BaseActivityTest() { } } - private fun nightModeStrings(): Array { - return activityRule.activity - .resources - .getStringArray(R.array.pref_night_modes_entries) - } + private fun nightModeStrings(): Array = + activityRule.activity.resources.getStringArray(R.array.pref_night_modes_entries) } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 8a85803e0..d9eca3f5c 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -38,6 +38,7 @@ fun settingsRobo(func: SettingsRobot.() -> Unit) = SettingsRobot().applyWithViewHierarchyPrinting { func } class SettingsRobot : BaseRobot() { + fun clickOn(@StringRes vararg stringIds: Int) { val matchers: Array?> = arrayOfNulls(stringIds.size) for (i in stringIds.indices) { From 51a65957303bfed93b33b4e4ef2535871fc2853a Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Tue, 25 Aug 2020 21:09:13 +0530 Subject: [PATCH 03/17] Set the tests Running --- .../settings/KiwixSettingsActivityTest.kt | 15 ++++++++----- .../kiwixmobile/settings/SettingsRobot.kt | 22 +++++++++---------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index 888082b82..f9d22faea 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -26,7 +26,8 @@ class KiwixSettingsActivityTest : BaseActivityTest() { override var activityRule = activityTestRule() - @Test fun testToggle() { + @Test + fun testToggle() { settingsRobo { clickOn(R.string.pref_back_to_top) clickOn(R.string.pref_newtab_background_title) @@ -35,28 +36,32 @@ class KiwixSettingsActivityTest : BaseActivityTest() { } } - @Test fun testLanguageDialog() { + @Test + fun testLanguageDialog() { settingsRobo { clickOn(R.string.device_default) assertDisplayed(R.string.pref_language_title) } } - @Test fun testStorageDialog() { + @Test + fun testStorageDialog() { settingsRobo { clickOn(R.string.internal_storage, R.string.external_storage) assertDisplayed(R.string.pref_storage) } } - @Test fun testHistoryDialog() { + @Test + fun testHistoryDialog() { settingsRobo { clickOn(R.string.pref_clear_all_history_title) assertDisplayed(R.string.clear_all_history_dialog_title) } } - @Test fun testNightModeDialog() { + @Test + fun testNightModeDialog() { settingsRobo { clickOn(R.string.pref_night_mode) for (nightModeString in nightModeStrings()) { diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index d9eca3f5c..9985f55eb 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -21,11 +21,12 @@ package org.kiwix.kiwixmobile.settings import android.view.View import androidx.annotation.StringRes import androidx.recyclerview.widget.RecyclerView -import androidx.test.espresso.Espresso +import androidx.test.espresso.Espresso.onView import androidx.test.espresso.action.ViewActions -import androidx.test.espresso.contrib.RecyclerViewActions -import androidx.test.espresso.matcher.ViewMatchers -import applyWithViewHierarchyPrinting +import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItem +import androidx.test.espresso.matcher.ViewMatchers.hasDescendant +import androidx.test.espresso.matcher.ViewMatchers.withClassName +import androidx.test.espresso.matcher.ViewMatchers.withText import org.hamcrest.Matcher import org.hamcrest.Matchers import org.kiwix.kiwixmobile.BaseRobot @@ -35,21 +36,20 @@ import org.kiwix.kiwixmobile.BaseRobot */ fun settingsRobo(func: SettingsRobot.() -> Unit) = - SettingsRobot().applyWithViewHierarchyPrinting { func } + SettingsRobot().apply(func) class SettingsRobot : BaseRobot() { fun clickOn(@StringRes vararg stringIds: Int) { val matchers: Array?> = arrayOfNulls(stringIds.size) for (i in stringIds.indices) { - matchers[i] = ViewMatchers.withText(stringIds[i]) + matchers[i] = withText(stringIds[i]) } - - Espresso.onView( - ViewMatchers.withClassName(Matchers.`is`(RecyclerView::class.java.name)) + onView( + withClassName(Matchers.`is`(RecyclerView::class.java.name)) ).perform( - RecyclerViewActions.actionOnItem( - ViewMatchers.hasDescendant(Matchers.anyOf(*matchers)), ViewActions.click() + actionOnItem( + hasDescendant(Matchers.anyOf(*matchers)), ViewActions.click() ) ) } From 13ed5ca34ae840199a459b19cc1dbf17ed5b43c6 Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Tue, 25 Aug 2020 21:32:19 +0530 Subject: [PATCH 04/17] Separated some functions to Robot --- .../settings/KiwixSettingsActivityTest.kt | 15 +++++------- .../kiwixmobile/settings/SettingsRobot.kt | 24 +++++++++++++++++++ 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index f9d22faea..e9ce88aa1 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -27,19 +27,16 @@ class KiwixSettingsActivityTest : BaseActivityTest() { override var activityRule = activityTestRule() @Test - fun testToggle() { + fun testToggling() { settingsRobo { - clickOn(R.string.pref_back_to_top) - clickOn(R.string.pref_newtab_background_title) - clickOn(R.string.pref_external_link_popup_title) - clickOn(R.string.pref_wifi_only) + toggleButtons() } } @Test fun testLanguageDialog() { settingsRobo { - clickOn(R.string.device_default) + invokeLanguageDialog() assertDisplayed(R.string.pref_language_title) } } @@ -47,7 +44,7 @@ class KiwixSettingsActivityTest : BaseActivityTest() { @Test fun testStorageDialog() { settingsRobo { - clickOn(R.string.internal_storage, R.string.external_storage) + invokeStorageDialog() assertDisplayed(R.string.pref_storage) } } @@ -55,7 +52,7 @@ class KiwixSettingsActivityTest : BaseActivityTest() { @Test fun testHistoryDialog() { settingsRobo { - clickOn(R.string.pref_clear_all_history_title) + invokeHistoryDeletionDialog() assertDisplayed(R.string.clear_all_history_dialog_title) } } @@ -63,7 +60,7 @@ class KiwixSettingsActivityTest : BaseActivityTest() { @Test fun testNightModeDialog() { settingsRobo { - clickOn(R.string.pref_night_mode) + invokeNightModeDialog() for (nightModeString in nightModeStrings()) { assertDisplayed(nightModeString) } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 9985f55eb..301b78117 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -30,6 +30,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withText import org.hamcrest.Matcher import org.hamcrest.Matchers import org.kiwix.kiwixmobile.BaseRobot +import org.kiwix.kiwixmobile.core.R /** * Authored by Ayush Shrivastava on 25/8/20 @@ -53,4 +54,27 @@ class SettingsRobot : BaseRobot() { ) ) } + + fun toggleButtons() { + clickOn(R.string.pref_back_to_top) + clickOn(R.string.pref_newtab_background_title) + clickOn(R.string.pref_external_link_popup_title) + clickOn(R.string.pref_wifi_only) + } + + fun invokeLanguageDialog() { + clickOn(R.string.device_default) + } + + fun invokeStorageDialog() { + clickOn(R.string.internal_storage, R.string.external_storage) + } + + fun invokeHistoryDeletionDialog() { + clickOn(R.string.pref_clear_all_history_title) + } + + fun invokeNightModeDialog() { + clickOn(R.string.pref_night_mode) + } } From c95ec5eaddc2b09f9564bcd115315186529a9fbe Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Tue, 25 Aug 2020 22:51:18 +0530 Subject: [PATCH 05/17] Added some more tests --- .../settings/KiwixSettingsActivityTest.kt | 14 ++++++++++ .../kiwixmobile/settings/SettingsRobot.kt | 28 +++++++++++++------ 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index e9ce88aa1..ea31bc3cf 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -67,6 +67,20 @@ class KiwixSettingsActivityTest : BaseActivityTest() { } } + @Test + fun testCreditsDialog() { + settingsRobo { + invokeContributorsDialog() + } + } + + @Test + fun testVersionTextView() { + settingsRobo { + checkRemainingTextViews() + } + } + private fun nightModeStrings(): Array = activityRule.activity.resources.getStringArray(R.array.pref_night_modes_entries) } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 301b78117..5805c6d66 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -30,6 +30,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withText import org.hamcrest.Matcher import org.hamcrest.Matchers import org.kiwix.kiwixmobile.BaseRobot +import org.kiwix.kiwixmobile.Findable.Text import org.kiwix.kiwixmobile.core.R /** @@ -41,7 +42,7 @@ fun settingsRobo(func: SettingsRobot.() -> Unit) = class SettingsRobot : BaseRobot() { - fun clickOn(@StringRes vararg stringIds: Int) { + private fun clickRecyclerViewItems(@StringRes vararg stringIds: Int) { val matchers: Array?> = arrayOfNulls(stringIds.size) for (i in stringIds.indices) { matchers[i] = withText(stringIds[i]) @@ -56,25 +57,34 @@ class SettingsRobot : BaseRobot() { } fun toggleButtons() { - clickOn(R.string.pref_back_to_top) - clickOn(R.string.pref_newtab_background_title) - clickOn(R.string.pref_external_link_popup_title) - clickOn(R.string.pref_wifi_only) + clickRecyclerViewItems(R.string.pref_back_to_top) + clickRecyclerViewItems(R.string.pref_newtab_background_title) + clickRecyclerViewItems(R.string.pref_external_link_popup_title) + clickRecyclerViewItems(R.string.pref_wifi_only) } fun invokeLanguageDialog() { - clickOn(R.string.device_default) + clickRecyclerViewItems(R.string.device_default) } fun invokeStorageDialog() { - clickOn(R.string.internal_storage, R.string.external_storage) + clickRecyclerViewItems(R.string.internal_storage, R.string.external_storage) } fun invokeHistoryDeletionDialog() { - clickOn(R.string.pref_clear_all_history_title) + clickRecyclerViewItems(R.string.pref_clear_all_history_title) } fun invokeNightModeDialog() { - clickOn(R.string.pref_night_mode) + clickRecyclerViewItems(R.string.pref_night_mode) + } + + fun invokeContributorsDialog() { + clickRecyclerViewItems(R.string.pref_credits_title) + isVisible(Text("Contributors")) + } + + fun checkRemainingTextViews() { + clickRecyclerViewItems(R.string.pref_info_version, R.string.pref_text_zoom_title) } } From 6bb4b69eee2e72650bd9d77401be56a6ded4427d Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Tue, 25 Aug 2020 23:17:07 +0530 Subject: [PATCH 06/17] Moved entire test functionality inside Robot --- .../settings/KiwixSettingsActivityTest.kt | 44 +++---------------- .../kiwixmobile/settings/SettingsRobot.kt | 7 ++- 2 files changed, 12 insertions(+), 39 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index ea31bc3cf..ac36359c3 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -27,33 +27,15 @@ class KiwixSettingsActivityTest : BaseActivityTest() { override var activityRule = activityTestRule() @Test - fun testToggling() { + fun executeSettingsActivity() { settingsRobo { toggleButtons() - } - } - - @Test - fun testLanguageDialog() { - settingsRobo { - invokeLanguageDialog() - assertDisplayed(R.string.pref_language_title) - } - } - - @Test - fun testStorageDialog() { - settingsRobo { - invokeStorageDialog() - assertDisplayed(R.string.pref_storage) - } - } - - @Test - fun testHistoryDialog() { - settingsRobo { + invokeContributorsDialog() invokeHistoryDeletionDialog() - assertDisplayed(R.string.clear_all_history_dialog_title) + invokeLanguageDialog() + // invokeNightModeDialog() + invokeStorageDialog() + checkRemainingTextViews() } } @@ -67,20 +49,6 @@ class KiwixSettingsActivityTest : BaseActivityTest() { } } - @Test - fun testCreditsDialog() { - settingsRobo { - invokeContributorsDialog() - } - } - - @Test - fun testVersionTextView() { - settingsRobo { - checkRemainingTextViews() - } - } - private fun nightModeStrings(): Array = activityRule.activity.resources.getStringArray(R.array.pref_night_modes_entries) } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 5805c6d66..df35414b8 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -27,6 +27,7 @@ import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItem import androidx.test.espresso.matcher.ViewMatchers.hasDescendant import androidx.test.espresso.matcher.ViewMatchers.withClassName import androidx.test.espresso.matcher.ViewMatchers.withText +import com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed import org.hamcrest.Matcher import org.hamcrest.Matchers import org.kiwix.kiwixmobile.BaseRobot @@ -65,14 +66,17 @@ class SettingsRobot : BaseRobot() { fun invokeLanguageDialog() { clickRecyclerViewItems(R.string.device_default) + assertDisplayed(R.string.pref_language_title) } fun invokeStorageDialog() { clickRecyclerViewItems(R.string.internal_storage, R.string.external_storage) + assertDisplayed(R.string.pref_storage) } fun invokeHistoryDeletionDialog() { clickRecyclerViewItems(R.string.pref_clear_all_history_title) + assertDisplayed(R.string.clear_all_history_dialog_title) } fun invokeNightModeDialog() { @@ -85,6 +89,7 @@ class SettingsRobot : BaseRobot() { } fun checkRemainingTextViews() { - clickRecyclerViewItems(R.string.pref_info_version, R.string.pref_text_zoom_title) + clickRecyclerViewItems(R.string.pref_info_version) + clickRecyclerViewItems(R.string.pref_text_zoom_title) } } From e0abb490b29ac7b7dfc18cc8f0e5b5be171da6fa Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Tue, 25 Aug 2020 23:55:04 +0530 Subject: [PATCH 07/17] Moved tests back to mainTest file --- .../settings/KiwixSettingsActivityTest.kt | 45 ++++++++++++++----- .../kiwixmobile/settings/SettingsRobot.kt | 6 +++ 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index ac36359c3..903798d67 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -17,25 +17,38 @@ */ package org.kiwix.kiwixmobile.settings -import com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed import org.junit.Test import org.kiwix.kiwixmobile.BaseActivityTest -import org.kiwix.kiwixmobile.core.R class KiwixSettingsActivityTest : BaseActivityTest() { override var activityRule = activityTestRule() @Test - fun executeSettingsActivity() { + fun testToggling() { settingsRobo { toggleButtons() - invokeContributorsDialog() - invokeHistoryDeletionDialog() + } + } + + @Test + fun testLanguageDialog() { + settingsRobo { invokeLanguageDialog() - // invokeNightModeDialog() + } + } + + @Test + fun testStorageDialog() { + settingsRobo { invokeStorageDialog() - checkRemainingTextViews() + } + } + + @Test + fun testHistoryDialog() { + settingsRobo { + invokeHistoryDeletionDialog() } } @@ -43,12 +56,20 @@ class KiwixSettingsActivityTest : BaseActivityTest() { fun testNightModeDialog() { settingsRobo { invokeNightModeDialog() - for (nightModeString in nightModeStrings()) { - assertDisplayed(nightModeString) - } } } - private fun nightModeStrings(): Array = - activityRule.activity.resources.getStringArray(R.array.pref_night_modes_entries) + // @Test + // fun testCreditsDialog() { + // settingsRobo { + // invokeContributorsDialog() + // } + // } + + @Test + fun testVersionTextView() { + settingsRobo { + checkRemainingTextViews() + } + } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index df35414b8..6085bd4db 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -81,6 +81,9 @@ class SettingsRobot : BaseRobot() { fun invokeNightModeDialog() { clickRecyclerViewItems(R.string.pref_night_mode) + for (nightModeString in nightModeStrings()) { + assertDisplayed(nightModeString) + } } fun invokeContributorsDialog() { @@ -92,4 +95,7 @@ class SettingsRobot : BaseRobot() { clickRecyclerViewItems(R.string.pref_info_version) clickRecyclerViewItems(R.string.pref_text_zoom_title) } + + private fun nightModeStrings(): Array = + context.resources.getStringArray(R.array.pref_night_modes_entries) } From 0442191c7d2e6986e8a40e2a55842da9583f9b18 Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Thu, 3 Sep 2020 01:03:16 +0530 Subject: [PATCH 08/17] Set the tests running in same scope --- .../settings/KiwixSettingsActivityTest.kt | 35 ++----------------- .../kiwixmobile/settings/SettingsRobot.kt | 8 ++++- 2 files changed, 10 insertions(+), 33 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index 903798d67..87c8f691d 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -25,36 +25,13 @@ class KiwixSettingsActivityTest : BaseActivityTest() { override var activityRule = activityTestRule() @Test - fun testToggling() { - settingsRobo { - toggleButtons() - } - } - - @Test - fun testLanguageDialog() { + fun testSettingsActivity() { settingsRobo { + checkRemainingTextViews() invokeLanguageDialog() - } - } - - @Test - fun testStorageDialog() { - settingsRobo { + toggleButtons() invokeStorageDialog() - } - } - - @Test - fun testHistoryDialog() { - settingsRobo { invokeHistoryDeletionDialog() - } - } - - @Test - fun testNightModeDialog() { - settingsRobo { invokeNightModeDialog() } } @@ -66,10 +43,4 @@ class KiwixSettingsActivityTest : BaseActivityTest() { // } // } - @Test - fun testVersionTextView() { - settingsRobo { - checkRemainingTextViews() - } - } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 6085bd4db..303954b8f 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -27,6 +27,7 @@ import androidx.test.espresso.contrib.RecyclerViewActions.actionOnItem import androidx.test.espresso.matcher.ViewMatchers.hasDescendant import androidx.test.espresso.matcher.ViewMatchers.withClassName import androidx.test.espresso.matcher.ViewMatchers.withText +import applyWithViewHierarchyPrinting import com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed import org.hamcrest.Matcher import org.hamcrest.Matchers @@ -39,7 +40,7 @@ import org.kiwix.kiwixmobile.core.R */ fun settingsRobo(func: SettingsRobot.() -> Unit) = - SettingsRobot().apply(func) + SettingsRobot().applyWithViewHierarchyPrinting(func) class SettingsRobot : BaseRobot() { @@ -67,16 +68,19 @@ class SettingsRobot : BaseRobot() { fun invokeLanguageDialog() { clickRecyclerViewItems(R.string.device_default) assertDisplayed(R.string.pref_language_title) + pressBack() } fun invokeStorageDialog() { clickRecyclerViewItems(R.string.internal_storage, R.string.external_storage) assertDisplayed(R.string.pref_storage) + pressBack() } fun invokeHistoryDeletionDialog() { clickRecyclerViewItems(R.string.pref_clear_all_history_title) assertDisplayed(R.string.clear_all_history_dialog_title) + pressBack() } fun invokeNightModeDialog() { @@ -84,11 +88,13 @@ class SettingsRobot : BaseRobot() { for (nightModeString in nightModeStrings()) { assertDisplayed(nightModeString) } + pressBack() } fun invokeContributorsDialog() { clickRecyclerViewItems(R.string.pref_credits_title) isVisible(Text("Contributors")) + pressBack() } fun checkRemainingTextViews() { From 24a50a84d746f4deaccae4e149b9e21da71adebb Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Thu, 3 Sep 2020 01:54:07 +0530 Subject: [PATCH 09/17] Run all tests in the same scope --- .../kiwixmobile/settings/KiwixSettingsActivityTest.kt | 9 +-------- .../java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index 87c8f691d..eb44a322f 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -33,14 +33,7 @@ class KiwixSettingsActivityTest : BaseActivityTest() { invokeStorageDialog() invokeHistoryDeletionDialog() invokeNightModeDialog() + invokeContributorsDialog() } } - - // @Test - // fun testCreditsDialog() { - // settingsRobo { - // invokeContributorsDialog() - // } - // } - } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 303954b8f..0ba320039 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -93,7 +93,7 @@ class SettingsRobot : BaseRobot() { fun invokeContributorsDialog() { clickRecyclerViewItems(R.string.pref_credits_title) - isVisible(Text("Contributors")) + isVisible(Text("OK")) pressBack() } From e1cba8a496adc3e14aa1749fe83a5cc9015a391d Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Thu, 3 Sep 2020 15:47:04 +0530 Subject: [PATCH 10/17] Streamline the tests strictly according to Robot Concept --- .../settings/KiwixSettingsActivityTest.kt | 19 +++++++--- .../kiwixmobile/settings/SettingsRobot.kt | 36 +++++++++++++------ 2 files changed, 39 insertions(+), 16 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index eb44a322f..04eb87ac3 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -28,12 +28,21 @@ class KiwixSettingsActivityTest : BaseActivityTest() { fun testSettingsActivity() { settingsRobo { checkRemainingTextViews() - invokeLanguageDialog() + clickLanguagePreference() + assertLanguagePrefDialogDisplayed() + dismissDialog() toggleButtons() - invokeStorageDialog() - invokeHistoryDeletionDialog() - invokeNightModeDialog() - invokeContributorsDialog() + clickStoragePreference() + assertStorageDialogDisplayed() + dismissDialog() + clickClearHistoryPreference() + assertHistoryDialogDisplayed() + dismissDialog() + clickNightModePreference() + assertNightModeDialogDisplayed() + dismissDialog() + clickCredits() + assertContributorsDialogDisplayed() } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 0ba320039..2a773324e 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -65,36 +65,46 @@ class SettingsRobot : BaseRobot() { clickRecyclerViewItems(R.string.pref_wifi_only) } - fun invokeLanguageDialog() { + fun clickLanguagePreference() { clickRecyclerViewItems(R.string.device_default) + } + + fun assertLanguagePrefDialogDisplayed() { assertDisplayed(R.string.pref_language_title) - pressBack() } - fun invokeStorageDialog() { + fun clickStoragePreference() { clickRecyclerViewItems(R.string.internal_storage, R.string.external_storage) + } + + fun assertStorageDialogDisplayed() { assertDisplayed(R.string.pref_storage) - pressBack() } - fun invokeHistoryDeletionDialog() { + fun clickClearHistoryPreference() { clickRecyclerViewItems(R.string.pref_clear_all_history_title) - assertDisplayed(R.string.clear_all_history_dialog_title) - pressBack() } - fun invokeNightModeDialog() { + fun assertHistoryDialogDisplayed() { + assertDisplayed(R.string.clear_all_history_dialog_title) + } + + fun clickNightModePreference() { clickRecyclerViewItems(R.string.pref_night_mode) + } + + fun assertNightModeDialogDisplayed() { for (nightModeString in nightModeStrings()) { assertDisplayed(nightModeString) } - pressBack() } - fun invokeContributorsDialog() { + fun clickCredits() { clickRecyclerViewItems(R.string.pref_credits_title) + } + + fun assertContributorsDialogDisplayed() { isVisible(Text("OK")) - pressBack() } fun checkRemainingTextViews() { @@ -102,6 +112,10 @@ class SettingsRobot : BaseRobot() { clickRecyclerViewItems(R.string.pref_text_zoom_title) } + fun dismissDialog() { + pressBack() + } + private fun nightModeStrings(): Array = context.resources.getStringArray(R.array.pref_night_modes_entries) } From bda56c1062648b8cde911bfff9bceb1cb0f4d796 Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Thu, 3 Sep 2020 16:42:15 +0530 Subject: [PATCH 11/17] Segregated Each Button and View Test --- .../settings/KiwixSettingsActivityTest.kt | 8 ++++++-- .../kiwixmobile/settings/SettingsRobot.kt | 18 +++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index 04eb87ac3..088b602dc 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -27,11 +27,15 @@ class KiwixSettingsActivityTest : BaseActivityTest() { @Test fun testSettingsActivity() { settingsRobo { - checkRemainingTextViews() + checkZoomTextView() + checkVersionTextView() clickLanguagePreference() assertLanguagePrefDialogDisplayed() dismissDialog() - toggleButtons() + toggleBackToTopPref() + toggleOpenNewTabInBackground() + toggleExternalLinkWarningPref() + toggleWifiDownloadsOnlyPref() clickStoragePreference() assertStorageDialogDisplayed() dismissDialog() diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 2a773324e..12ee8458d 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -58,10 +58,19 @@ class SettingsRobot : BaseRobot() { ) } - fun toggleButtons() { + fun toggleBackToTopPref() { clickRecyclerViewItems(R.string.pref_back_to_top) + } + + fun toggleOpenNewTabInBackground() { clickRecyclerViewItems(R.string.pref_newtab_background_title) + } + + fun toggleExternalLinkWarningPref() { clickRecyclerViewItems(R.string.pref_external_link_popup_title) + } + + fun toggleWifiDownloadsOnlyPref() { clickRecyclerViewItems(R.string.pref_wifi_only) } @@ -107,11 +116,14 @@ class SettingsRobot : BaseRobot() { isVisible(Text("OK")) } - fun checkRemainingTextViews() { - clickRecyclerViewItems(R.string.pref_info_version) + fun checkZoomTextView() { clickRecyclerViewItems(R.string.pref_text_zoom_title) } + fun checkVersionTextView() { + clickRecyclerViewItems(R.string.pref_info_version) + } + fun dismissDialog() { pressBack() } From 914f0d050a604010cbfd88cf5618af01e62ea08e Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Thu, 3 Sep 2020 18:43:48 +0530 Subject: [PATCH 12/17] Semantified functions name from check to display assertion --- .../kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt | 5 +++-- .../java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt index 088b602dc..834895b5a 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivityTest.kt @@ -27,8 +27,8 @@ class KiwixSettingsActivityTest : BaseActivityTest() { @Test fun testSettingsActivity() { settingsRobo { - checkZoomTextView() - checkVersionTextView() + assertZoomTextViewPresent() + assertVersionTextViewPresent() clickLanguagePreference() assertLanguagePrefDialogDisplayed() dismissDialog() @@ -47,6 +47,7 @@ class KiwixSettingsActivityTest : BaseActivityTest() { dismissDialog() clickCredits() assertContributorsDialogDisplayed() + dismissDialog() } } } diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 12ee8458d..69f62791c 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -116,11 +116,11 @@ class SettingsRobot : BaseRobot() { isVisible(Text("OK")) } - fun checkZoomTextView() { + fun assertZoomTextViewPresent() { clickRecyclerViewItems(R.string.pref_text_zoom_title) } - fun checkVersionTextView() { + fun assertVersionTextViewPresent() { clickRecyclerViewItems(R.string.pref_info_version) } From 7460ee10566bd13eee984b51182b71bb1959b24e Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Sat, 5 Sep 2020 01:14:08 +0530 Subject: [PATCH 13/17] Used map instead heuristical arrayList with loop --- .../java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 69f62791c..85f6ca0c5 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -18,7 +18,6 @@ package org.kiwix.kiwixmobile.settings -import android.view.View import androidx.annotation.StringRes import androidx.recyclerview.widget.RecyclerView import androidx.test.espresso.Espresso.onView @@ -29,7 +28,6 @@ import androidx.test.espresso.matcher.ViewMatchers.withClassName import androidx.test.espresso.matcher.ViewMatchers.withText import applyWithViewHierarchyPrinting import com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed -import org.hamcrest.Matcher import org.hamcrest.Matchers import org.kiwix.kiwixmobile.BaseRobot import org.kiwix.kiwixmobile.Findable.Text @@ -45,10 +43,8 @@ fun settingsRobo(func: SettingsRobot.() -> Unit) = class SettingsRobot : BaseRobot() { private fun clickRecyclerViewItems(@StringRes vararg stringIds: Int) { - val matchers: Array?> = arrayOfNulls(stringIds.size) - for (i in stringIds.indices) { - matchers[i] = withText(stringIds[i]) - } + val matchers = stringIds.indices.map { withText(stringIds[it]) }.toTypedArray() + onView( withClassName(Matchers.`is`(RecyclerView::class.java.name)) ).perform( From 135e67a4f954b4bac600bc57534aafed0accb718 Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Tue, 8 Sep 2020 23:27:28 +0530 Subject: [PATCH 14/17] Removed usage of indices for transformation --- .../java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 85f6ca0c5..f1dcee7de 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -43,7 +43,7 @@ fun settingsRobo(func: SettingsRobot.() -> Unit) = class SettingsRobot : BaseRobot() { private fun clickRecyclerViewItems(@StringRes vararg stringIds: Int) { - val matchers = stringIds.indices.map { withText(stringIds[it]) }.toTypedArray() + val matchers = stringIds.map { return@map withText(it) }.toTypedArray() onView( withClassName(Matchers.`is`(RecyclerView::class.java.name)) From 4835d828d8d1b996dd710c74f7f3a158a9809ff9 Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Wed, 9 Sep 2020 00:03:22 +0530 Subject: [PATCH 15/17] Changed to lambda Reference and created and extension function for creating matchers --- .../java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index f1dcee7de..18717a586 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -43,13 +43,11 @@ fun settingsRobo(func: SettingsRobot.() -> Unit) = class SettingsRobot : BaseRobot() { private fun clickRecyclerViewItems(@StringRes vararg stringIds: Int) { - val matchers = stringIds.map { return@map withText(it) }.toTypedArray() - onView( withClassName(Matchers.`is`(RecyclerView::class.java.name)) ).perform( actionOnItem( - hasDescendant(Matchers.anyOf(*matchers)), ViewActions.click() + hasDescendant(Matchers.anyOf(*stringIds.matcher())), ViewActions.click() ) ) } @@ -126,4 +124,6 @@ class SettingsRobot : BaseRobot() { private fun nightModeStrings(): Array = context.resources.getStringArray(R.array.pref_night_modes_entries) + + private fun IntArray.matcher() = this.map(::withText).toTypedArray() } From 24960e3acfc6994648db72fe12968dc6dc165af7 Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Wed, 9 Sep 2020 15:09:55 +0530 Subject: [PATCH 16/17] Added init in Robot --- .../kiwixmobile/settings/SettingsRobot.kt | 41 +++++++++++-------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index 18717a586..d3e127604 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -31,7 +31,10 @@ import com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertD import org.hamcrest.Matchers import org.kiwix.kiwixmobile.BaseRobot import org.kiwix.kiwixmobile.Findable.Text +import org.kiwix.kiwixmobile.Findable.ViewId import org.kiwix.kiwixmobile.core.R +import org.kiwix.kiwixmobile.core.R.array +import org.kiwix.kiwixmobile.core.R.string /** * Authored by Ayush Shrivastava on 25/8/20 @@ -42,58 +45,62 @@ fun settingsRobo(func: SettingsRobot.() -> Unit) = class SettingsRobot : BaseRobot() { + init { + isVisible(ViewId(R.id.toolbar)) + } + private fun clickRecyclerViewItems(@StringRes vararg stringIds: Int) { onView( withClassName(Matchers.`is`(RecyclerView::class.java.name)) ).perform( actionOnItem( - hasDescendant(Matchers.anyOf(*stringIds.matcher())), ViewActions.click() + hasDescendant(Matchers.anyOf(*stringIds.matchers())), ViewActions.click() ) ) } fun toggleBackToTopPref() { - clickRecyclerViewItems(R.string.pref_back_to_top) + clickRecyclerViewItems(string.pref_back_to_top) } fun toggleOpenNewTabInBackground() { - clickRecyclerViewItems(R.string.pref_newtab_background_title) + clickRecyclerViewItems(string.pref_newtab_background_title) } fun toggleExternalLinkWarningPref() { - clickRecyclerViewItems(R.string.pref_external_link_popup_title) + clickRecyclerViewItems(string.pref_external_link_popup_title) } fun toggleWifiDownloadsOnlyPref() { - clickRecyclerViewItems(R.string.pref_wifi_only) + clickRecyclerViewItems(string.pref_wifi_only) } fun clickLanguagePreference() { - clickRecyclerViewItems(R.string.device_default) + clickRecyclerViewItems(string.device_default) } fun assertLanguagePrefDialogDisplayed() { - assertDisplayed(R.string.pref_language_title) + assertDisplayed(string.pref_language_title) } fun clickStoragePreference() { - clickRecyclerViewItems(R.string.internal_storage, R.string.external_storage) + clickRecyclerViewItems(string.internal_storage, string.external_storage) } fun assertStorageDialogDisplayed() { - assertDisplayed(R.string.pref_storage) + assertDisplayed(string.pref_storage) } fun clickClearHistoryPreference() { - clickRecyclerViewItems(R.string.pref_clear_all_history_title) + clickRecyclerViewItems(string.pref_clear_all_history_title) } fun assertHistoryDialogDisplayed() { - assertDisplayed(R.string.clear_all_history_dialog_title) + assertDisplayed(string.clear_all_history_dialog_title) } fun clickNightModePreference() { - clickRecyclerViewItems(R.string.pref_night_mode) + clickRecyclerViewItems(string.pref_night_mode) } fun assertNightModeDialogDisplayed() { @@ -103,7 +110,7 @@ class SettingsRobot : BaseRobot() { } fun clickCredits() { - clickRecyclerViewItems(R.string.pref_credits_title) + clickRecyclerViewItems(string.pref_credits_title) } fun assertContributorsDialogDisplayed() { @@ -111,11 +118,11 @@ class SettingsRobot : BaseRobot() { } fun assertZoomTextViewPresent() { - clickRecyclerViewItems(R.string.pref_text_zoom_title) + clickRecyclerViewItems(string.pref_text_zoom_title) } fun assertVersionTextViewPresent() { - clickRecyclerViewItems(R.string.pref_info_version) + clickRecyclerViewItems(string.pref_info_version) } fun dismissDialog() { @@ -123,7 +130,7 @@ class SettingsRobot : BaseRobot() { } private fun nightModeStrings(): Array = - context.resources.getStringArray(R.array.pref_night_modes_entries) + context.resources.getStringArray(array.pref_night_modes_entries) - private fun IntArray.matcher() = this.map(::withText).toTypedArray() + private fun IntArray.matchers() = map(::withText).toTypedArray() } From e980e5b08d900b81452349d0f933d1442cb7e833 Mon Sep 17 00:00:00 2001 From: s-ayush2903 Date: Wed, 9 Sep 2020 15:38:01 +0530 Subject: [PATCH 17/17] Made init assertion more Verbose and verifiable --- .../kiwixmobile/settings/SettingsRobot.kt | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt index d3e127604..2e5330ed4 100644 --- a/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt +++ b/app/src/androidTest/java/org/kiwix/kiwixmobile/settings/SettingsRobot.kt @@ -31,10 +31,7 @@ import com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertD import org.hamcrest.Matchers import org.kiwix.kiwixmobile.BaseRobot import org.kiwix.kiwixmobile.Findable.Text -import org.kiwix.kiwixmobile.Findable.ViewId -import org.kiwix.kiwixmobile.core.R -import org.kiwix.kiwixmobile.core.R.array -import org.kiwix.kiwixmobile.core.R.string +import org.kiwix.kiwixmobile.R /** * Authored by Ayush Shrivastava on 25/8/20 @@ -46,7 +43,7 @@ fun settingsRobo(func: SettingsRobot.() -> Unit) = class SettingsRobot : BaseRobot() { init { - isVisible(ViewId(R.id.toolbar)) + assertDisplayed(R.string.menu_settings) } private fun clickRecyclerViewItems(@StringRes vararg stringIds: Int) { @@ -60,47 +57,47 @@ class SettingsRobot : BaseRobot() { } fun toggleBackToTopPref() { - clickRecyclerViewItems(string.pref_back_to_top) + clickRecyclerViewItems(R.string.pref_back_to_top) } fun toggleOpenNewTabInBackground() { - clickRecyclerViewItems(string.pref_newtab_background_title) + clickRecyclerViewItems(R.string.pref_newtab_background_title) } fun toggleExternalLinkWarningPref() { - clickRecyclerViewItems(string.pref_external_link_popup_title) + clickRecyclerViewItems(R.string.pref_external_link_popup_title) } fun toggleWifiDownloadsOnlyPref() { - clickRecyclerViewItems(string.pref_wifi_only) + clickRecyclerViewItems(R.string.pref_wifi_only) } fun clickLanguagePreference() { - clickRecyclerViewItems(string.device_default) + clickRecyclerViewItems(R.string.device_default) } fun assertLanguagePrefDialogDisplayed() { - assertDisplayed(string.pref_language_title) + assertDisplayed(R.string.pref_language_title) } fun clickStoragePreference() { - clickRecyclerViewItems(string.internal_storage, string.external_storage) + clickRecyclerViewItems(R.string.internal_storage, R.string.external_storage) } fun assertStorageDialogDisplayed() { - assertDisplayed(string.pref_storage) + assertDisplayed(R.string.pref_storage) } fun clickClearHistoryPreference() { - clickRecyclerViewItems(string.pref_clear_all_history_title) + clickRecyclerViewItems(R.string.pref_clear_all_history_title) } fun assertHistoryDialogDisplayed() { - assertDisplayed(string.clear_all_history_dialog_title) + assertDisplayed(R.string.clear_all_history_dialog_title) } fun clickNightModePreference() { - clickRecyclerViewItems(string.pref_night_mode) + clickRecyclerViewItems(R.string.pref_night_mode) } fun assertNightModeDialogDisplayed() { @@ -110,7 +107,7 @@ class SettingsRobot : BaseRobot() { } fun clickCredits() { - clickRecyclerViewItems(string.pref_credits_title) + clickRecyclerViewItems(R.string.pref_credits_title) } fun assertContributorsDialogDisplayed() { @@ -118,11 +115,11 @@ class SettingsRobot : BaseRobot() { } fun assertZoomTextViewPresent() { - clickRecyclerViewItems(string.pref_text_zoom_title) + clickRecyclerViewItems(R.string.pref_text_zoom_title) } fun assertVersionTextViewPresent() { - clickRecyclerViewItems(string.pref_info_version) + clickRecyclerViewItems(R.string.pref_info_version) } fun dismissDialog() { @@ -130,7 +127,7 @@ class SettingsRobot : BaseRobot() { } private fun nightModeStrings(): Array = - context.resources.getStringArray(array.pref_night_modes_entries) + context.resources.getStringArray(R.array.pref_night_modes_entries) private fun IntArray.matchers() = map(::withText).toTypedArray() }