For #26286 refactor homeScreenItemsTest UI test
This commit is contained in:
parent
38a1c4a357
commit
c86c917cce
|
@ -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
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ class SmokeTest {
|
|||
verifyHomeScreen()
|
||||
verifyNavigationToolbar()
|
||||
verifyHomePrivateBrowsingButton()
|
||||
verifyHomeMenu()
|
||||
verifyHomeMenuButton()
|
||||
verifyHomeWordmark()
|
||||
|
||||
verifyWelcomeHeader()
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in New Issue