Bug 1807302 - New sponsored shortcuts UI tests and other refactoring work
This commit is contained in:
parent
b1c40a784b
commit
b8877c2388
|
@ -4,6 +4,8 @@
|
|||
|
||||
package org.mozilla.fenix.helpers
|
||||
|
||||
import org.mozilla.fenix.helpers.TestHelper.getSponsoredShortcutTitle
|
||||
|
||||
object Constants {
|
||||
|
||||
// Device or AVD requires a Google Services Android OS installation
|
||||
|
@ -28,4 +30,18 @@ object Constants {
|
|||
"Bing" to "firefox&pc=MOZB&form=MOZMBA",
|
||||
"DuckDuckGo" to "t=fpas",
|
||||
)
|
||||
|
||||
val firstSponsoredShortcutTitle by lazy { getSponsoredShortcutTitle(2) }
|
||||
val secondSponsoredShortcutTitle by lazy { getSponsoredShortcutTitle(3) }
|
||||
|
||||
// Expected for en-us defaults
|
||||
val defaultTopSitesList by lazy {
|
||||
mapOf(
|
||||
"Google" to "Google",
|
||||
"First sponsored shortcut" to firstSponsoredShortcutTitle,
|
||||
"Second sponsored shortcut" to secondSponsoredShortcutTitle,
|
||||
"Top Articles" to "Top Articles",
|
||||
"Wikipedia" to "Wikipedia",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -445,4 +445,20 @@ object TestHelper {
|
|||
|
||||
clipBoard.setPrimaryClip(clipData)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns sponsored shortcut title based on the index.
|
||||
*/
|
||||
fun getSponsoredShortcutTitle(position: Int): String {
|
||||
val sponsoredShortcut = mDevice.findObject(
|
||||
UiSelector()
|
||||
.resourceId("$packageName:id/top_site_item")
|
||||
.index(position - 1),
|
||||
).getChild(
|
||||
UiSelector()
|
||||
.resourceId("$packageName:id/top_site_title"),
|
||||
).text
|
||||
|
||||
return sponsoredShortcut
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,249 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.fenix.ui
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.uiautomator.UiDevice
|
||||
import okhttp3.mockwebserver.MockWebServer
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Ignore
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.customannotations.SmokeTest
|
||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||
import org.mozilla.fenix.helpers.Constants.defaultTopSitesList
|
||||
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||
import org.mozilla.fenix.helpers.TestHelper.exitMenu
|
||||
import org.mozilla.fenix.helpers.TestHelper.getSponsoredShortcutTitle
|
||||
import org.mozilla.fenix.ui.robots.homeScreen
|
||||
|
||||
/**
|
||||
* Tests Sponsored shortcuts functionality
|
||||
*/
|
||||
|
||||
class SponsoredShortcutsTest {
|
||||
private lateinit var mDevice: UiDevice
|
||||
private lateinit var mockWebServer: MockWebServer
|
||||
private val defaultSearchEngine = "Amazon.com"
|
||||
private lateinit var sponsoredShortcutTitle: String
|
||||
private lateinit var sponsoredShortcutTitle2: String
|
||||
|
||||
@get:Rule
|
||||
val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides(skipOnboarding = true)
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||
mockWebServer = MockWebServer().apply {
|
||||
dispatcher = AndroidAssetDispatcher()
|
||||
start()
|
||||
}
|
||||
}
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
mockWebServer.shutdown()
|
||||
}
|
||||
|
||||
// Expected for en-us defaults
|
||||
@SmokeTest
|
||||
@Test
|
||||
fun verifySponsoredShortcutsListTest() {
|
||||
homeScreen {
|
||||
defaultTopSitesList.values.forEach { value ->
|
||||
verifyExistingTopSitesTabs(value)
|
||||
}
|
||||
}.openThreeDotMenu {
|
||||
}.openCustomizeHome {
|
||||
verifySponsoredShortcutsCheckBox(true)
|
||||
clickSponsoredShortcuts()
|
||||
verifySponsoredShortcutsCheckBox(false)
|
||||
}.goBack {
|
||||
verifyNotExistingSponsoredTopSitesList()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun openSponsoredShortcutTest() {
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
}.openSponsoredShortcut(sponsoredShortcutTitle) {
|
||||
verifyUrl(sponsoredShortcutTitle)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun openSponsoredShortcutInPrivateBrowsingTest() {
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
}.openContextMenuOnSponsoredShortcut(sponsoredShortcutTitle) {
|
||||
}.openTopSiteInPrivateTab {
|
||||
verifyUrl(sponsoredShortcutTitle)
|
||||
}
|
||||
}
|
||||
|
||||
@Ignore("Failing, see: https://github.com/mozilla-mobile/fenix/issues/25926")
|
||||
@Test
|
||||
fun verifySponsorsAndPrivacyLinkTest() {
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
}.openContextMenuOnSponsoredShortcut(sponsoredShortcutTitle) {
|
||||
}.clickSponsorsAndPrivacyButton {
|
||||
verifyUrl("support.mozilla.org/en-US/kb/sponsor-privacy")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun verifySponsoredShortcutsSettingsOptionTest() {
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
}.openContextMenuOnSponsoredShortcut(sponsoredShortcutTitle) {
|
||||
}.clickSponsoredShortcutsSettingsButton {
|
||||
verifyHomePageView()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun verifySponsoredShortcutsDetailsTest() {
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
sponsoredShortcutTitle2 = getSponsoredShortcutTitle(3)
|
||||
|
||||
verifySponsoredShortcutDetails(sponsoredShortcutTitle, 2)
|
||||
verifySponsoredShortcutDetails(sponsoredShortcutTitle2, 3)
|
||||
}
|
||||
}
|
||||
|
||||
// The default search engine should not be displayed as a sponsored shortcut
|
||||
@Test
|
||||
fun defaultSearchEngineIsNotDisplayedAsSponsoredShortcutTest() {
|
||||
val sponsoredShortcutTitle = "Amazon"
|
||||
|
||||
homeScreen {
|
||||
}.openThreeDotMenu {
|
||||
}.openSettings {
|
||||
}.openSearchSubMenu {
|
||||
changeDefaultSearchEngine(defaultSearchEngine)
|
||||
}
|
||||
|
||||
exitMenu()
|
||||
|
||||
homeScreen {
|
||||
verifySponsoredShortcutDoesNotExist(sponsoredShortcutTitle, 2)
|
||||
verifySponsoredShortcutDoesNotExist(sponsoredShortcutTitle, 3)
|
||||
}
|
||||
}
|
||||
|
||||
// 1 sponsored shortcut should be displayed if there are 7 pinned top sites
|
||||
@Test
|
||||
fun verifySponsoredShortcutsListWithSevenPinnedSitesTest() {
|
||||
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
||||
val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
|
||||
val thirdWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 3)
|
||||
val fourthWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 4)
|
||||
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
sponsoredShortcutTitle2 = getSponsoredShortcutTitle(3)
|
||||
|
||||
verifySponsoredShortcutDetails(sponsoredShortcutTitle, 2)
|
||||
verifySponsoredShortcutDetails(sponsoredShortcutTitle2, 3)
|
||||
}.openNavigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(firstWebPage.url) {
|
||||
verifyPageContent(firstWebPage.content)
|
||||
}.openThreeDotMenu {
|
||||
expandMenu()
|
||||
}.addToFirefoxHome {
|
||||
}.goToHomescreen {
|
||||
verifyExistingTopSitesTabs(firstWebPage.title)
|
||||
}.openNavigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(secondWebPage.url) {
|
||||
verifyPageContent(secondWebPage.content)
|
||||
}.openThreeDotMenu {
|
||||
expandMenu()
|
||||
}.addToFirefoxHome {
|
||||
}.goToHomescreen {
|
||||
verifyExistingTopSitesTabs(secondWebPage.title)
|
||||
}.openNavigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(thirdWebPage.url) {
|
||||
verifyPageContent(thirdWebPage.content)
|
||||
}.openThreeDotMenu {
|
||||
expandMenu()
|
||||
}.addToFirefoxHome {
|
||||
}.goToHomescreen {
|
||||
verifyExistingTopSitesTabs(thirdWebPage.title)
|
||||
}.openNavigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(fourthWebPage.url) {
|
||||
verifyPageContent(fourthWebPage.content)
|
||||
}.openThreeDotMenu {
|
||||
expandMenu()
|
||||
}.addToFirefoxHome {
|
||||
}.goToHomescreen {
|
||||
verifySponsoredShortcutDetails(sponsoredShortcutTitle, 2)
|
||||
verifySponsoredShortcutDoesNotExist(sponsoredShortcutTitle2, 3)
|
||||
}
|
||||
}
|
||||
|
||||
// No sponsored shortcuts should be displayed if there are 8 pinned top sites
|
||||
@Test
|
||||
fun verifySponsoredShortcutsListWithEightPinnedSitesTest() {
|
||||
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
||||
val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
|
||||
val thirdWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 3)
|
||||
val fourthWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 4)
|
||||
val fifthWebPage = TestAssetHelper.getLoremIpsumAsset(mockWebServer)
|
||||
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
sponsoredShortcutTitle2 = getSponsoredShortcutTitle(3)
|
||||
|
||||
verifySponsoredShortcutDetails(sponsoredShortcutTitle, 2)
|
||||
verifySponsoredShortcutDetails(sponsoredShortcutTitle2, 3)
|
||||
}.openNavigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(firstWebPage.url) {
|
||||
verifyPageContent(firstWebPage.content)
|
||||
}.openThreeDotMenu {
|
||||
expandMenu()
|
||||
}.addToFirefoxHome {
|
||||
}.goToHomescreen {
|
||||
verifyExistingTopSitesTabs(firstWebPage.title)
|
||||
}.openNavigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(secondWebPage.url) {
|
||||
verifyPageContent(secondWebPage.content)
|
||||
}.openThreeDotMenu {
|
||||
expandMenu()
|
||||
}.addToFirefoxHome {
|
||||
}.goToHomescreen {
|
||||
verifyExistingTopSitesTabs(secondWebPage.title)
|
||||
}.openNavigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(thirdWebPage.url) {
|
||||
verifyPageContent(thirdWebPage.content)
|
||||
}.openThreeDotMenu {
|
||||
expandMenu()
|
||||
}.addToFirefoxHome {
|
||||
}.goToHomescreen {
|
||||
verifyExistingTopSitesTabs(thirdWebPage.title)
|
||||
}.openNavigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(fourthWebPage.url) {
|
||||
verifyPageContent(fourthWebPage.content)
|
||||
}.openThreeDotMenu {
|
||||
expandMenu()
|
||||
}.addToFirefoxHome {
|
||||
}.goToHomescreen {
|
||||
verifyExistingTopSitesTabs(fourthWebPage.title)
|
||||
}.openNavigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(fifthWebPage.url) {
|
||||
verifyPageContent(fifthWebPage.content)
|
||||
}.openThreeDotMenu {
|
||||
expandMenu()
|
||||
}.addToFirefoxHome {
|
||||
}.goToHomescreen {
|
||||
verifySponsoredShortcutDoesNotExist(sponsoredShortcutTitle, 2)
|
||||
verifySponsoredShortcutDoesNotExist(sponsoredShortcutTitle2, 3)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,12 +9,12 @@ import androidx.test.uiautomator.UiDevice
|
|||
import okhttp3.mockwebserver.MockWebServer
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Ignore
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.customannotations.SmokeTest
|
||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||
import org.mozilla.fenix.helpers.Constants.defaultTopSitesList
|
||||
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
|
||||
import org.mozilla.fenix.helpers.RetryTestRule
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper.getGenericAsset
|
||||
|
@ -214,21 +214,15 @@ class TopSitesTest {
|
|||
}
|
||||
}
|
||||
|
||||
// Expected for en-us defaults
|
||||
@Test
|
||||
fun verifyDefaultTopSitesLocale_EN() {
|
||||
// en-US defaults
|
||||
val defaultTopSites = arrayOf(
|
||||
"Top Articles",
|
||||
"Wikipedia",
|
||||
"Google",
|
||||
)
|
||||
|
||||
fun verifyDefaultTopSitesList() {
|
||||
homeScreen { }.dismissOnboarding()
|
||||
|
||||
homeScreen {
|
||||
verifyExistingTopSitesList()
|
||||
defaultTopSites.forEach { item ->
|
||||
verifyExistingTopSitesTabs(item)
|
||||
defaultTopSitesList.values.forEach { value ->
|
||||
verifyExistingTopSitesTabs(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -258,71 +252,4 @@ class TopSitesTest {
|
|||
verifyEmptyHistoryView()
|
||||
}
|
||||
}
|
||||
|
||||
@SmokeTest
|
||||
@Test
|
||||
fun verifySponsoredShortcutsListTest() {
|
||||
homeScreen {
|
||||
var sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
var sponsoredShortcutTitle2 = getSponsoredShortcutTitle(3)
|
||||
|
||||
verifyExistingSponsoredTopSitesTabs(sponsoredShortcutTitle, 2)
|
||||
verifyExistingSponsoredTopSitesTabs(sponsoredShortcutTitle2, 3)
|
||||
}.openThreeDotMenu {
|
||||
}.openCustomizeHome {
|
||||
verifySponsoredShortcutsCheckBox(true)
|
||||
clickSponsoredShortcuts()
|
||||
verifySponsoredShortcutsCheckBox(false)
|
||||
}.goBack {
|
||||
verifyNotExistingSponsoredTopSitesList()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun openSponsoredShortcutTest() {
|
||||
var sponsoredShortcutTitle = ""
|
||||
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
}.openSponsoredShortcut(sponsoredShortcutTitle) {
|
||||
verifyUrl(sponsoredShortcutTitle)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun openSponsoredShortcutInPrivateBrowsingTest() {
|
||||
var sponsoredShortcutTitle = ""
|
||||
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
}.openContextMenuOnSponsoredShortcut(sponsoredShortcutTitle) {
|
||||
}.openTopSiteInPrivateTab {
|
||||
verifyUrl(sponsoredShortcutTitle)
|
||||
}
|
||||
}
|
||||
|
||||
@Ignore("Failing, see: https://github.com/mozilla-mobile/fenix/issues/25926")
|
||||
@Test
|
||||
fun verifySponsoredShortcutsSponsorsAndPrivacyOptionTest() {
|
||||
var sponsoredShortcutTitle = ""
|
||||
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
}.openContextMenuOnSponsoredShortcut(sponsoredShortcutTitle) {
|
||||
}.clickSponsorsAndPrivacyButton {
|
||||
verifyUrl("support.mozilla.org/en-US/kb/sponsor-privacy")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun verifySponsoredShortcutsSettingsOptionTest() {
|
||||
var sponsoredShortcutTitle = ""
|
||||
|
||||
homeScreen {
|
||||
sponsoredShortcutTitle = getSponsoredShortcutTitle(2)
|
||||
}.openContextMenuOnSponsoredShortcut(sponsoredShortcutTitle) {
|
||||
}.clickSponsoredShortcutsSettingsButton {
|
||||
verifyHomePageView()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -245,9 +245,24 @@ class HomeScreenRobot {
|
|||
|
||||
fun verifyExistingTopSitesList() = assertExistingTopSitesList()
|
||||
fun verifyNotExistingTopSitesList(title: String) = assertNotExistingTopSitesList(title)
|
||||
fun verifySponsoredShortcutDoesNotExist(sponsoredShortcutTitle: String, position: Int) =
|
||||
assertFalse(
|
||||
mDevice.findObject(
|
||||
UiSelector()
|
||||
.resourceId("$packageName:id/top_site_item")
|
||||
.index(position - 1),
|
||||
).getChild(
|
||||
UiSelector()
|
||||
.textContains(sponsoredShortcutTitle),
|
||||
).waitForExists(waitingTime),
|
||||
)
|
||||
fun verifyNotExistingSponsoredTopSitesList() = assertSponsoredTopSitesNotDisplayed()
|
||||
fun verifyExistingTopSitesTabs(title: String) = assertExistingTopSitesTabs(title)
|
||||
fun verifyExistingSponsoredTopSitesTabs(sponsoredShortcutTitle: String, position: Int) = assertSponsoredTopSiteIsDisplayed(sponsoredShortcutTitle, position)
|
||||
fun verifySponsoredShortcutDetails(sponsoredShortcutTitle: String, position: Int) {
|
||||
assertSponsoredShortcutLogoIsDisplayed(position)
|
||||
assertSponsoredShortcutTitle(sponsoredShortcutTitle, position)
|
||||
assertSponsoredSubtitleIsDisplayed(position)
|
||||
}
|
||||
fun verifyTopSiteContextMenuItems() = assertTopSiteContextMenuItems()
|
||||
|
||||
fun verifyJumpBackInSectionIsDisplayed() = assertJumpBackInSectionIsDisplayed()
|
||||
|
@ -434,19 +449,6 @@ class HomeScreenRobot {
|
|||
}
|
||||
}
|
||||
|
||||
fun getSponsoredShortcutTitle(position: Int): String {
|
||||
val sponsoredShortcut = mDevice.findObject(
|
||||
UiSelector()
|
||||
.resourceId("$packageName:id/top_site_item")
|
||||
.index(position - 1),
|
||||
).getChild(
|
||||
UiSelector()
|
||||
.resourceId("$packageName:id/top_site_title"),
|
||||
).text
|
||||
|
||||
return sponsoredShortcut
|
||||
}
|
||||
|
||||
fun verifyJumpBackInMessage() {
|
||||
assertTrue(
|
||||
mDevice.findObject(
|
||||
|
@ -880,10 +882,17 @@ private fun assertExistingTopSitesTabs(title: String) {
|
|||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
}
|
||||
|
||||
private fun assertSponsoredTopSiteIsDisplayed(sponsoredShortcutTitle: String, position: Int) {
|
||||
assertSponsoredShortcutTitle(sponsoredShortcutTitle, position)
|
||||
assertSponsoredSubtitleIsDisplayed(position)
|
||||
}
|
||||
private fun assertSponsoredShortcutLogoIsDisplayed(position: Int) =
|
||||
assertTrue(
|
||||
mDevice.findObject(
|
||||
UiSelector()
|
||||
.resourceId("$packageName:id/top_site_item")
|
||||
.index(position - 1),
|
||||
).getChild(
|
||||
UiSelector()
|
||||
.resourceId("$packageName:id/favicon_card"),
|
||||
).waitForExists(waitingTime),
|
||||
)
|
||||
|
||||
private fun assertSponsoredSubtitleIsDisplayed(position: Int) =
|
||||
assertTrue(
|
||||
|
@ -897,7 +906,7 @@ private fun assertSponsoredSubtitleIsDisplayed(position: Int) =
|
|||
).waitForExists(waitingTime),
|
||||
)
|
||||
|
||||
private fun assertSponsoredShortcutTitle(sponsoredShortcutTitle: String, position: Int) {
|
||||
private fun assertSponsoredShortcutTitle(sponsoredShortcutTitle: String, position: Int) =
|
||||
assertTrue(
|
||||
mDevice.findObject(
|
||||
UiSelector()
|
||||
|
@ -908,7 +917,6 @@ private fun assertSponsoredShortcutTitle(sponsoredShortcutTitle: String, positio
|
|||
.textContains(sponsoredShortcutTitle),
|
||||
).waitForExists(waitingTime),
|
||||
)
|
||||
}
|
||||
|
||||
private fun assertNotExistingTopSitesList(title: String) {
|
||||
mDevice.findObject(UiSelector().text(title)).waitUntilGone(waitingTime)
|
||||
|
|
|
@ -21,6 +21,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
|
|||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||
import androidx.test.uiautomator.By
|
||||
import androidx.test.uiautomator.UiObjectNotFoundException
|
||||
import androidx.test.uiautomator.UiSelector
|
||||
import androidx.test.uiautomator.Until
|
||||
import org.hamcrest.Matchers.allOf
|
||||
|
@ -340,7 +341,26 @@ class ThreeDotMenuMainRobot {
|
|||
}
|
||||
|
||||
fun addToFirefoxHome(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||
addToShortcutsButton.click()
|
||||
for (i in 1..RETRY_COUNT) {
|
||||
try {
|
||||
addToShortcutsButton.also {
|
||||
it.waitForExists(waitingTime)
|
||||
it.click()
|
||||
}
|
||||
|
||||
break
|
||||
} catch (e: UiObjectNotFoundException) {
|
||||
if (i == RETRY_COUNT) {
|
||||
throw e
|
||||
} else {
|
||||
mDevice.pressBack()
|
||||
navigationToolbar {
|
||||
}.openThreeDotMenu {
|
||||
expandMenu()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BrowserRobot().interact()
|
||||
return BrowserRobot.Transition()
|
||||
|
|
Loading…
Reference in New Issue