Improve homeThreeDotMenuItemsTest UI test coverage

upstream-sync
AndiAJ 3 years ago committed by mergify[bot]
parent f466d65256
commit f91285881d

@ -54,11 +54,16 @@ class ThreeDotMenuMainTest {
verifyDesktopSite() verifyDesktopSite()
verifyWhatsNewButton() verifyWhatsNewButton()
verifyHelpButton() verifyHelpButton()
verifyCustomizeHomeButton()
verifySettingsButton() verifySettingsButton()
}.openSettings { }.openSettings {
verifySettingsView() verifySettingsView()
}.goBack { }.goBack {
}.openThreeDotMenu { }.openThreeDotMenu {
}.openCustomizeHome {
verifyHomePageView()
}.goBack {
}.openThreeDotMenu {
}.openHelp { }.openHelp {
verifyHelpUrl() verifyHelpUrl()
}.openTabDrawer { }.openTabDrawer {

@ -1,7 +1,11 @@
package org.mozilla.fenix.ui.robots package org.mozilla.fenix.ui.robots
import androidx.test.espresso.Espresso.onView import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.Visibility
import androidx.test.espresso.matcher.ViewMatchers.hasSibling import androidx.test.espresso.matcher.ViewMatchers.hasSibling
import androidx.test.espresso.matcher.ViewMatchers.withContentDescription
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.espresso.matcher.ViewMatchers.withText
import org.hamcrest.CoreMatchers.allOf import org.hamcrest.CoreMatchers.allOf
@ -13,11 +17,46 @@ import org.mozilla.fenix.helpers.click
*/ */
class SettingsSubMenuHomepageRobot { class SettingsSubMenuHomepageRobot {
fun verifyHomePageView() {
assertMostVisitedTopSitesButton()
assertJumpBackInButton()
assertRecentBookmarksButton()
assertRecentSearchesButton()
assertPocketButton()
assertOpeningScreenHeading()
assertHomepageButton()
assertLastTabButton()
assertHomepageAfterFourHoursButton()
}
fun clickStartOnHomepageButton() = homepageButton().click() fun clickStartOnHomepageButton() = homepageButton().click()
class Transition class Transition {
fun goBack(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
goBackButton().click()
HomeScreenRobot().interact()
return HomeScreenRobot.Transition()
}
}
} }
private fun mostVisitedTopSitesButton() =
onView(allOf(withText(R.string.top_sites_toggle_top_recent_sites_3)))
private fun jumpBackInButton() =
onView(allOf(withText(R.string.customize_toggle_jump_back_in)))
private fun recentBookmarksButton() =
onView(allOf(withText(R.string.customize_toggle_recent_bookmarks)))
private fun recentSearchesButton() =
onView(allOf(withText(R.string.customize_toggle_recent_searches)))
private fun pocketButton() =
onView(allOf(withText(R.string.customize_toggle_pocket)))
private fun openingScreenHeading() = onView(withText(R.string.preferences_opening_screen)) private fun openingScreenHeading() = onView(withText(R.string.preferences_opening_screen))
private fun homepageButton() = private fun homepageButton() =
@ -29,7 +68,41 @@ private fun homepageButton() =
) )
) )
private fun lastTabButton() = onView(withText(R.string.opening_screen_last_tab)) private fun lastTabButton() =
onView(
allOf(
withId(R.id.title),
withText(R.string.opening_screen_last_tab),
hasSibling(withId(R.id.radio_button))
)
)
private fun homepageAfterFourHoursButton() = private fun homepageAfterFourHoursButton() =
onView(withText(R.string.opening_screen_after_four_hours_of_inactivity)) onView(
allOf(
withId(R.id.title),
withText(R.string.opening_screen_after_four_hours_of_inactivity),
hasSibling(withId(R.id.radio_button))
)
)
private fun goBackButton() = onView(allOf(withContentDescription(R.string.action_bar_up_description)))
private fun assertMostVisitedTopSitesButton() =
mostVisitedTopSitesButton().check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertJumpBackInButton() =
jumpBackInButton().check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertRecentBookmarksButton() =
recentBookmarksButton().check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertRecentSearchesButton() =
recentSearchesButton().check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertPocketButton() =
pocketButton().check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertOpeningScreenHeading() =
openingScreenHeading().check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertHomepageButton() =
homepageButton().check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertLastTabButton() =
lastTabButton().check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertHomepageAfterFourHoursButton() =
homepageAfterFourHoursButton().check(matches(withEffectiveVisibility(Visibility.VISIBLE)))

@ -49,6 +49,7 @@ class ThreeDotMenuMainRobot {
fun verifyShareAllTabsButton() = assertShareAllTabsButton() fun verifyShareAllTabsButton() = assertShareAllTabsButton()
fun clickShareAllTabsButton() = shareAllTabsButton().click() fun clickShareAllTabsButton() = shareAllTabsButton().click()
fun verifySettingsButton() = assertSettingsButton() fun verifySettingsButton() = assertSettingsButton()
fun verifyCustomizeHomeButton() = assertCustomizeHomeButton()
fun verifyAddOnsButton() = assertAddOnsButton() fun verifyAddOnsButton() = assertAddOnsButton()
fun verifyHistoryButton() = assertHistoryButton() fun verifyHistoryButton() = assertHistoryButton()
fun verifyBookmarksButton() = assertBookmarksButton() fun verifyBookmarksButton() = assertBookmarksButton()
@ -202,6 +203,26 @@ class ThreeDotMenuMainRobot {
return BrowserRobot.Transition() return BrowserRobot.Transition()
} }
fun openCustomizeHome(interact: SettingsSubMenuHomepageRobot.() -> Unit): SettingsSubMenuHomepageRobot.Transition {
mDevice.wait(
Until
.findObject(
By.textContains("$packageName:id/browser_menu_customize_home")
),
waitingTime
)
customizeHomeButton().click()
mDevice.findObject(
UiSelector().resourceId("$packageName:id/recycler_view")
).waitForExists(waitingTime)
SettingsSubMenuHomepageRobot().interact()
return SettingsSubMenuHomepageRobot.Transition()
}
fun goForward(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition { fun goForward(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
forwardButton().click() forwardButton().click()
@ -357,6 +378,17 @@ private fun threeDotMenuRecyclerViewExists() {
private fun settingsButton() = mDevice.findObject(UiSelector().text("Settings")) private fun settingsButton() = mDevice.findObject(UiSelector().text("Settings"))
private fun assertSettingsButton() = assertTrue(settingsButton().waitForExists(waitingTime)) private fun assertSettingsButton() = assertTrue(settingsButton().waitForExists(waitingTime))
private fun customizeHomeButton() =
onView(
allOf(
withId(R.id.text),
withText(R.string.browser_menu_customize_home)
)
)
private fun assertCustomizeHomeButton() =
customizeHomeButton().check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun addOnsButton() = onView(allOf(withText("Add-ons"))) private fun addOnsButton() = onView(allOf(withText("Add-ons")))
private fun assertAddOnsButton() { private fun assertAddOnsButton() {
onView(withId(R.id.mozac_browser_menu_menuView)).perform(swipeDown()) onView(withId(R.id.mozac_browser_menu_menuView)).perform(swipeDown())

@ -44,6 +44,7 @@ gcloud:
device: device:
- model: Pixel2 - model: Pixel2
version: 28 version: 28
locale: en_US
flank: flank:
project: GOOGLE_PROJECT project: GOOGLE_PROJECT

Loading…
Cancel
Save