For #26286 refactor homeScreenItemsTest UI test

This commit is contained in:
AndiAJ 2022-11-23 15:38:17 +02:00 committed by mergify[bot]
parent 38a1c4a357
commit c86c917cce
4 changed files with 91 additions and 31 deletions

View File

@ -4,6 +4,7 @@
package org.mozilla.fenix.ui
import androidx.compose.ui.test.junit4.AndroidComposeTestRule
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.By
import androidx.test.uiautomator.UiDevice
@ -35,10 +36,11 @@ class HomeScreenTest {
private lateinit var mDevice: UiDevice
private lateinit var mockWebServer: MockWebServer
@get:Rule
val activityTestRule = HomeActivityTestRule.withDefaultSettingsOverrides()
@get:Rule(order = 0)
val activityTestRule =
AndroidComposeTestRule(HomeActivityTestRule.withDefaultSettingsOverrides()) { it.activity }
@Rule
@Rule(order = 1)
@JvmField
val retryTestRule = RetryTestRule(3)
@ -62,21 +64,26 @@ class HomeScreenTest {
homeScreen { }.dismissOnboarding()
homeScreen {
verifyHomeScreen()
verifyNavigationToolbar()
verifyHomePrivateBrowsingButton()
verifyHomeMenu()
verifyHomeWordmark()
verifyTabButton()
verifyCollectionsHeader()
verifyHomeToolbar()
verifyHomeComponent()
// Verify Top Sites
verifyExistingTopSitesList()
verifyHomePrivateBrowsingButton()
verifyExistingTopSitesTabs("Wikipedia")
verifyExistingTopSitesTabs("Top Articles")
verifyExistingTopSitesTabs("Google")
verifyCollectionsHeader()
verifyNoCollectionsText()
scrollToPocketProvokingStories()
swipePocketProvokingStories()
verifyPocketRecommendedStoriesItems(activityTestRule, 1, 3, 4, 5, 6, 7)
verifyPocketSponsoredStoriesItems(activityTestRule, 2, 8)
verifyDiscoverMoreStoriesButton(activityTestRule, 9)
verifyStoriesByTopicItems()
verifyPoweredByPocket(activityTestRule)
verifyCustomizeHomepageButton(true)
verifyNavigationToolbar()
verifyDefaultSearchEngine("Google")
verifyHomeMenuButton()
verifyTabButton()
verifyNoTabsOpened()
}
}
@ -89,11 +96,11 @@ class HomeScreenTest {
verifyHomeScreen()
verifyNavigationToolbar()
verifyHomePrivateBrowsingButton()
verifyHomeMenu()
verifyHomeMenuButton()
verifyHomeWordmark()
verifyTabButton()
verifyPrivateSessionMessage()
verifyHomeToolbar()
verifyNavigationToolbar()
verifyHomeComponent()
}.openCommonMythsLink {
verifyUrl("common-myths-about-private-browsing")
@ -107,11 +114,11 @@ class HomeScreenTest {
verifyHomeScreen()
verifyNavigationToolbar()
verifyHomePrivateBrowsingButton()
verifyHomeMenu()
verifyHomeMenuButton()
verifyHomeWordmark()
verifyTabButton()
verifyPrivateSessionMessage()
verifyHomeToolbar()
verifyNavigationToolbar()
verifyHomeComponent()
}
}
@ -144,7 +151,7 @@ class HomeScreenTest {
@Test
fun dismissOnboardingUsingHelpTest() {
activityTestRule.applySettingsExceptions {
activityTestRule.activityRule.applySettingsExceptions {
it.isJumpBackInCFREnabled = false
it.isWallpaperOnboardingEnabled = false
}
@ -174,7 +181,7 @@ class HomeScreenTest {
@Test
fun verifyPocketHomepageStoriesTest() {
activityTestRule.applySettingsExceptions {
activityTestRule.activityRule.applySettingsExceptions {
it.isRecentTabsFeatureEnabled = false
it.isRecentlyVisitedFeatureEnabled = false
}

View File

@ -115,7 +115,7 @@ class SmokeTest {
verifyHomeScreen()
verifyNavigationToolbar()
verifyHomePrivateBrowsingButton()
verifyHomeMenu()
verifyHomeMenuButton()
verifyHomeWordmark()
verifyWelcomeHeader()

View File

@ -354,7 +354,7 @@ class TabbedBrowsingTest {
// dismiss search dialog
homeScreen { }.pressBack()
verifyPrivateSessionMessage()
verifyHomeToolbar()
verifyNavigationToolbar()
}
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
@ -365,7 +365,7 @@ class TabbedBrowsingTest {
// dismiss search dialog
homeScreen { }.pressBack()
verifyHomeWordmark()
verifyHomeToolbar()
verifyNavigationToolbar()
}
}
}

View File

@ -8,9 +8,13 @@ package org.mozilla.fenix.ui.robots
import android.graphics.Bitmap
import android.widget.EditText
import androidx.compose.ui.test.assert
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.hasTestTag
import androidx.compose.ui.test.hasText
import androidx.compose.ui.test.junit4.ComposeTestRule
import androidx.compose.ui.test.onChildAt
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import androidx.recyclerview.widget.RecyclerView
@ -75,12 +79,11 @@ class HomeScreenRobot {
fun verifyFocusedNavigationToolbar() = assertFocusedNavigationToolbar()
fun verifyHomeScreen() = assertHomeScreen()
fun verifyHomePrivateBrowsingButton() = assertHomePrivateBrowsingButton()
fun verifyHomeMenu() = assertHomeMenu()
fun verifyHomeMenuButton() = assertHomeMenuButton()
fun verifyTabButton() = assertTabButton()
fun verifyCollectionsHeader() = assertCollectionsHeader()
fun verifyNoCollectionsText() = assertNoCollectionsText()
fun verifyHomeWordmark() = assertHomeWordmark()
fun verifyHomeToolbar() = assertHomeToolbar()
fun verifyHomeComponent() = assertHomeComponent()
fun verifyDefaultSearchEngine(searchEngine: String) = verifySearchEngineIcon(searchEngine)
fun verifyNoTabsOpened() = assertNoTabsOpened()
@ -267,6 +270,39 @@ class HomeScreenRobot {
}
}
fun scrollToPocketProvokingStories() =
scrollToElementByText(getStringResource(R.string.pocket_stories_categories_header))
fun swipePocketProvokingStories() {
UiScrollable(UiSelector().resourceId("pocket.stories")).setAsHorizontalList()
.swipeLeft(3)
}
fun verifyPocketRecommendedStoriesItems(composeTestRule: ComposeTestRule, vararg positions: Int) {
composeTestRule.onNodeWithTag("pocket.stories").assertIsDisplayed()
positions.forEach {
composeTestRule.onNodeWithTag("pocket.stories")
.onChildAt(it - 1)
.assert(hasTestTag("pocket.recommended.story"))
}
}
fun verifyPocketSponsoredStoriesItems(composeTestRule: ComposeTestRule, vararg positions: Int) {
composeTestRule.onNodeWithTag("pocket.stories").assertIsDisplayed()
positions.forEach {
composeTestRule.onNodeWithTag("pocket.stories")
.onChildAt(it - 1)
.assert(hasTestTag("pocket.sponsored.story"))
}
}
fun verifyDiscoverMoreStoriesButton(composeTestRule: ComposeTestRule, position: Int) {
composeTestRule.onNodeWithTag("pocket.stories")
.assertIsDisplayed()
.onChildAt(position - 1)
.assert(hasTestTag("pocket.discover.more.story"))
}
fun verifyStoriesByTopic(enabled: Boolean) {
if (enabled) {
scrollToElementByText(getStringResource(R.string.pocket_stories_categories_header))
@ -291,6 +327,15 @@ class HomeScreenRobot {
}
}
fun verifyStoriesByTopicItems() =
assertTrue(mDevice.findObject(UiSelector().resourceId("pocket.categories")).childCount > 1)
fun verifyPoweredByPocket(rule: ComposeTestRule) {
homeScreenList().scrollIntoView(mDevice.findObject(UiSelector().resourceId("pocket.header")))
rule.onNodeWithTag("pocket.header.title", true).assertIsDisplayed()
rule.onNodeWithTag("pocket.header.subtitle", true).assertIsDisplayed()
}
fun verifyCustomizeHomepageButton(enabled: Boolean) {
if (enabled) {
scrollToElementByText(getStringResource(R.string.browser_menu_customize_home_1))
@ -619,7 +664,7 @@ private fun assertHomeScreen() {
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
}
private fun assertHomeMenu() = onView(ViewMatchers.withResourceName("menuButton"))
private fun assertHomeMenuButton() = onView(ViewMatchers.withResourceName("menuButton"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertHomePrivateBrowsingButton() =
@ -630,9 +675,6 @@ private val homepageWordmark = onView(ViewMatchers.withResourceName("wordmark"))
private fun assertHomeWordmark() =
homepageWordmark.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertHomeToolbar() = onView(ViewMatchers.withResourceName("toolbar"))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
private fun assertTabButton() =
onView(allOf(withId(R.id.tab_button), isDisplayed()))
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
@ -668,9 +710,9 @@ private fun getSearchEngine(searchEngineName: String) =
appContext.components.core.store.state.search.searchEngines.find { it.name == searchEngineName }
private fun verifySearchEngineIcon(searchEngineName: String) {
val ddgSearchEngine = getSearchEngine(searchEngineName)
val defaultSearchEngine = getSearchEngine(searchEngineName)
?: throw AssertionError("No search engine with name $searchEngineName")
verifySearchEngineIcon(ddgSearchEngine.icon, ddgSearchEngine.name)
verifySearchEngineIcon(defaultSearchEngine.icon, defaultSearchEngine.name)
}
// First Run elements
@ -949,6 +991,17 @@ private fun sponsoredShortcut(sponsoredShortcutTitle: String) =
.textContains(sponsoredShortcutTitle),
)
private fun discoverMoreStoriesButton(position: Int) =
mDevice
.findObject(
UiSelector()
.resourceId("pocket.stories"),
).getChild(
UiSelector()
.resourceId("pocket.discover.more.story")
.index(position - 1),
)
val deleteFromHistory =
onView(
allOf(