Bug 1863319 - Split crashing UI tests inside TabbedBrowsingTest into smaller tests

fenix/121.0
oana.horvath 7 months ago committed by mergify[bot]
parent 008bc6f38f
commit 75f6a6c66b

@ -19,17 +19,25 @@ import org.mozilla.fenix.helpers.TestHelper.mDevice
*/
object MatcherHelper {
fun itemWithResId(resourceId: String) =
mDevice.findObject(UiSelector().resourceId(resourceId))
fun itemWithResId(resourceId: String): UiObject {
Log.i(TAG, "Looking for item with resource id: $resourceId")
return mDevice.findObject(UiSelector().resourceId(resourceId))
}
fun itemContainingText(itemText: String) =
mDevice.findObject(UiSelector().textContains(itemText))
fun itemContainingText(itemText: String): UiObject {
Log.i(TAG, "Looking for item with text: $itemText")
return mDevice.findObject(UiSelector().textContains(itemText))
}
fun itemWithText(itemText: String) =
mDevice.findObject(UiSelector().text(itemText))
fun itemWithText(itemText: String): UiObject {
Log.i(TAG, "Looking for item with text: $itemText")
return mDevice.findObject(UiSelector().text(itemText))
}
fun itemWithDescription(description: String) =
mDevice.findObject(UiSelector().descriptionContains(description))
fun itemWithDescription(description: String): UiObject {
Log.i(TAG, "Looking for item with description: $description")
return mDevice.findObject(UiSelector().descriptionContains(description))
}
fun checkedItemWithResId(resourceId: String, isChecked: Boolean) =
mDevice.findObject(UiSelector().resourceId(resourceId).checked(isChecked))

@ -4,9 +4,11 @@
package org.mozilla.fenix.helpers.ext
import android.util.Log
import androidx.test.uiautomator.SearchCondition
import androidx.test.uiautomator.UiDevice
import org.junit.Assert.assertNotNull
import org.mozilla.fenix.helpers.Constants.TAG
import org.mozilla.fenix.helpers.TestAssetHelper
/**
@ -17,4 +19,8 @@ import org.mozilla.fenix.helpers.TestAssetHelper
fun UiDevice.waitNotNull(
searchCondition: SearchCondition<*>,
waitTime: Long = TestAssetHelper.waitingTime,
) = assertNotNull(wait(searchCondition, waitTime))
) {
Log.i(TAG, "Wait not null: $searchCondition")
assertNotNull(wait(searchCondition, waitTime))
Log.i(TAG, "Found $searchCondition not null")
}

@ -18,7 +18,6 @@ import org.junit.Test
import org.mozilla.fenix.customannotations.SmokeTest
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
import org.mozilla.fenix.helpers.AppAndSystemHelper.verifyKeyboardVisibility
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
import org.mozilla.fenix.helpers.MatcherHelper
import org.mozilla.fenix.helpers.RetryTestRule
@ -118,9 +117,9 @@ class ComposeTabbedBrowsingTest {
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/903604
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2349580
@Test
fun closingTabsMethodsTest() {
fun closingTabsTest() {
val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
@ -133,24 +132,31 @@ class ComposeTabbedBrowsingTest {
}
browserScreen {
verifyTabCounter("1")
}.openComposeTabDrawer(composeTestRule) {
closeTab()
}
homeScreen {
verifyTabCounter("0")
}.openNavigationToolbar {
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/903604
@Test
fun swipeToCloseTabsTest() {
val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
}.enterURLAndEnterToBrowser(genericURL.url) {
waitForPageToLoad()
}.openComposeTabDrawer(composeTestRule) {
verifyExistingOpenTabs("Test_Page_1")
swipeTabRight("Test_Page_1")
verifySnackBarText("Tab closed")
}
homeScreen {
verifyTabCounter("0")
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(genericURL.url) {
waitForPageToLoad()
}.openComposeTabDrawer(composeTestRule) {
verifyExistingOpenTabs("Test_Page_1")
swipeTabLeft("Test_Page_1")
verifySnackBarText("Tab closed")
}
homeScreen {
verifyTabCounter("0")
@ -159,10 +165,10 @@ class ComposeTabbedBrowsingTest {
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/903591
@Test
fun closingPrivateTabsMethodsTest() {
fun closingPrivateTabsTest() {
val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
homeScreen { }.togglePrivateBrowsingMode()
homeScreen { }.togglePrivateBrowsingMode(switchPBModeOn = true)
navigationToolbar {
}.enterURLAndEnterToBrowser(genericURL.url) {
}.openComposeTabDrawer(composeTestRule) {
@ -173,29 +179,6 @@ class ComposeTabbedBrowsingTest {
}
browserScreen {
verifyTabCounter("1")
}.openComposeTabDrawer(composeTestRule) {
closeTab()
}
homeScreen {
verifyTabCounter("0")
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(genericURL.url) {
}.openComposeTabDrawer(composeTestRule) {
verifyExistingOpenTabs("Test_Page_1")
swipeTabRight("Test_Page_1")
verifySnackBarText("Private tab closed")
}
homeScreen {
verifyTabCounter("0")
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(genericURL.url) {
}.openComposeTabDrawer(composeTestRule) {
verifyExistingOpenTabs("Test_Page_1")
swipeTabLeft("Test_Page_1")
verifySnackBarText("Private tab closed")
}
homeScreen {
verifyTabCounter("0")
}
}
@ -348,74 +331,129 @@ class ComposeTabbedBrowsingTest {
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/927315
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/927314
@Test
fun tabsCounterShortcutMenuTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
fun tabsCounterShortcutMenuCloseTabTest() {
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
}.enterURLAndEnterToBrowser(firstWebPage.url) {
waitForPageToLoad()
}.goToHomescreen {
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(secondWebPage.url) {
waitForPageToLoad()
}
navigationToolbar {
}.openTabButtonShortcutsMenu {
verifyTabButtonShortcutMenuItems()
}.closeTabFromShortcutsMenu {
browserScreen {
verifyTabCounter("1")
verifyPageContent(firstWebPage.content)
}
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2343663
@Test
fun tabsCounterShortcutMenuNewPrivateTabTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
navigationToolbar {
}.openTabButtonShortcutsMenu {
}.openNewPrivateTabFromShortcutsMenu {
verifyKeyboardVisibility()
verifySearchBarPlaceholder("Search or enter address")
// dismiss search dialog
}.dismissSearchBar {
verifyPrivateBrowsingHomeScreenItems()
verifyIfInPrivateOrNormalMode(privateBrowsingEnabled = true)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2343662
@Test
fun tabsCounterShortcutMenuNewTabTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
navigationToolbar {
}.openTabButtonShortcutsMenu {
}.openNewTabFromShortcutsMenu {
verifyKeyboardVisibility()
verifySearchBarPlaceholder("Search or enter address")
// dismiss search dialog
}.dismissSearchBar {
verifyHomeWordmark()
verifyNavigationToolbar()
verifyIfInPrivateOrNormalMode(privateBrowsingEnabled = false)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/927314
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/927315
@Test
fun privateTabsCounterShortcutMenuTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
fun privateTabsCounterShortcutMenuCloseTabTest() {
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
homeScreen {}.togglePrivateBrowsingMode()
homeScreen {}.togglePrivateBrowsingMode(switchPBModeOn = true)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
}.enterURLAndEnterToBrowser(firstWebPage.url) {
waitForPageToLoad()
}.goToHomescreen {
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(secondWebPage.url) {
waitForPageToLoad()
}
navigationToolbar {
}.openTabButtonShortcutsMenu {
verifyTabButtonShortcutMenuItems()
}.closeTabFromShortcutsMenu {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
browserScreen {
verifyTabCounter("1")
verifyPageContent(firstWebPage.content)
}
}.openTabButtonShortcutsMenu {
}.closeTabFromShortcutsMenu {
homeScreen {
verifyIfInPrivateOrNormalMode(privateBrowsingEnabled = true)
}
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2344199
@Test
fun privateTabsCounterShortcutMenuNewPrivateTabTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
homeScreen {}.togglePrivateBrowsingMode(switchPBModeOn = true)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
waitForPageToLoad()
}
navigationToolbar {
}.openTabButtonShortcutsMenu {
}.openNewPrivateTabFromShortcutsMenu {
verifyKeyboardVisibility()
verifySearchBarPlaceholder("Search or enter address")
// dismiss search dialog
}.dismissSearchBar {
verifyCommonMythsLink()
verifyIfInPrivateOrNormalMode(privateBrowsingEnabled = true)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2344198
@Test
fun privateTabsCounterShortcutMenuNewTabTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
homeScreen {}.togglePrivateBrowsingMode(switchPBModeOn = true)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
verifyPageContent(defaultWebPage.content)
}
navigationToolbar {
}.openTabButtonShortcutsMenu {
}.openNewTabFromShortcutsMenu {
verifyKeyboardVisibility()
verifySearchBarPlaceholder("Search or enter address")
// dismiss search dialog
verifySearchToolbar(isDisplayed = true)
}.dismissSearchBar {
// Verify normal browsing homescreen
verifyExistingTopSitesList()
verifyIfInPrivateOrNormalMode(privateBrowsingEnabled = false)
}
}

@ -17,7 +17,6 @@ import org.junit.Test
import org.mozilla.fenix.customannotations.SmokeTest
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
import org.mozilla.fenix.helpers.AppAndSystemHelper.verifyKeyboardVisibility
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
import org.mozilla.fenix.helpers.MatcherHelper
import org.mozilla.fenix.helpers.RetryTestRule
@ -110,9 +109,9 @@ class TabbedBrowsingTest {
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/903604
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2349580
@Test
fun closingTabsMethodsTest() {
fun closingTabsTest() {
val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
@ -125,13 +124,17 @@ class TabbedBrowsingTest {
}
browserScreen {
verifyTabCounter("1")
}.openTabDrawer {
closeTab()
}
homeScreen {
verifyTabCounter("0")
}.openNavigationToolbar {
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/903604
@Test
fun swipeToCloseTabsTest() {
val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
}.enterURLAndEnterToBrowser(genericURL.url) {
waitForPageToLoad()
}.openTabDrawer {
verifyExistingOpenTabs("Test_Page_1")
swipeTabRight("Test_Page_1")
@ -141,6 +144,7 @@ class TabbedBrowsingTest {
verifyTabCounter("0")
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(genericURL.url) {
waitForPageToLoad()
}.openTabDrawer {
verifyExistingOpenTabs("Test_Page_1")
swipeTabLeft("Test_Page_1")
@ -153,10 +157,10 @@ class TabbedBrowsingTest {
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/903591
@Test
fun closingPrivateTabsMethodsTest() {
fun closingPrivateTabsTest() {
val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
homeScreen { }.togglePrivateBrowsingMode()
homeScreen { }.togglePrivateBrowsingMode(switchPBModeOn = true)
navigationToolbar {
}.enterURLAndEnterToBrowser(genericURL.url) {
}.openTabDrawer {
@ -168,29 +172,6 @@ class TabbedBrowsingTest {
}
browserScreen {
verifyTabCounter("1")
}.openTabDrawer {
closeTab()
}
homeScreen {
verifyTabCounter("0")
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(genericURL.url) {
}.openTabDrawer {
verifyExistingOpenTabs("Test_Page_1")
swipeTabRight("Test_Page_1")
verifySnackBarText("Private tab closed")
}
homeScreen {
verifyTabCounter("0")
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(genericURL.url) {
}.openTabDrawer {
verifyExistingOpenTabs("Test_Page_1")
swipeTabLeft("Test_Page_1")
verifySnackBarText("Private tab closed")
}
homeScreen {
verifyTabCounter("0")
}
}
@ -375,76 +356,129 @@ class TabbedBrowsingTest {
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/927315
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/927314
@Test
fun tabsCounterShortcutMenuTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
fun tabsCounterShortcutMenuCloseTabTest() {
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
}.enterURLAndEnterToBrowser(firstWebPage.url) {
waitForPageToLoad()
}.goToHomescreen {
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(secondWebPage.url) {
waitForPageToLoad()
}
navigationToolbar {
}.openTabButtonShortcutsMenu {
verifyTabButtonShortcutMenuItems()
}.closeTabFromShortcutsMenu {
browserScreen {
verifyTabCounter("1")
verifyPageContent(firstWebPage.content)
}
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2343663
@Test
fun tabsCounterShortcutMenuNewPrivateTabTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
navigationToolbar {
}.openTabButtonShortcutsMenu {
}.openNewPrivateTabFromShortcutsMenu {
verifyKeyboardVisibility()
verifySearchBarPlaceholder("Search or enter address")
// dismiss search dialog
}.dismissSearchBar {
verifyPrivateBrowsingHomeScreenItems()
verifyIfInPrivateOrNormalMode(privateBrowsingEnabled = true)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2343662
@Test
fun tabsCounterShortcutMenuNewTabTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
navigationToolbar {
}.openTabButtonShortcutsMenu {
}.openNewTabFromShortcutsMenu {
verifyKeyboardVisibility()
verifySearchBarPlaceholder("Search or enter address")
// dismiss search dialog
}.dismissSearchBar {
verifyHomeWordmark()
verifyNavigationToolbar()
verifyIfInPrivateOrNormalMode(privateBrowsingEnabled = false)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/927314
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/927315
@Test
fun privateTabsCounterShortcutMenuTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
fun privateTabsCounterShortcutMenuCloseTabTest() {
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
homeScreen {}.togglePrivateBrowsingMode()
homeScreen {}.togglePrivateBrowsingMode(switchPBModeOn = true)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
}.enterURLAndEnterToBrowser(firstWebPage.url) {
waitForPageToLoad()
}.goToHomescreen {
}.openNavigationToolbar {
}.enterURLAndEnterToBrowser(secondWebPage.url) {
waitForPageToLoad()
}
navigationToolbar {
}.openTabButtonShortcutsMenu {
verifyTabButtonShortcutMenuItems()
}.closeTabFromShortcutsMenu {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
browserScreen {
verifyTabCounter("1")
verifyPageContent(firstWebPage.content)
}
}.openTabButtonShortcutsMenu {
}.closeTabFromShortcutsMenu {
homeScreen {
verifyIfInPrivateOrNormalMode(privateBrowsingEnabled = true)
}
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2344199
@Test
fun privateTabsCounterShortcutMenuNewPrivateTabTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
homeScreen {}.togglePrivateBrowsingMode(switchPBModeOn = true)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
waitForPageToLoad()
}
navigationToolbar {
}.openTabButtonShortcutsMenu {
}.openNewPrivateTabFromShortcutsMenu {
verifyKeyboardVisibility()
verifySearchBarPlaceholder("Search or enter address")
// dismiss search dialog
}.dismissSearchBar {
verifyCommonMythsLink()
verifyIfInPrivateOrNormalMode(privateBrowsingEnabled = true)
}
}
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2344198
@Test
fun privateTabsCounterShortcutMenuNewTabTest() {
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
homeScreen {}.togglePrivateBrowsingMode(switchPBModeOn = true)
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {}
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
verifyPageContent(defaultWebPage.content)
}
navigationToolbar {
}.openTabButtonShortcutsMenu {
}.openNewTabFromShortcutsMenu {
verifyKeyboardVisibility()
verifySearchBarPlaceholder("Search or enter address")
// dismiss search dialog
verifySearchToolbar(isDisplayed = true)
}.dismissSearchBar {
// Verify normal browsing homescreen
verifyExistingTopSitesList()
verifyIfInPrivateOrNormalMode(privateBrowsingEnabled = false)
}
}
@ -496,12 +530,9 @@ class TabbedBrowsingTest {
}.enterURLAndEnterToBrowser(firstWebPage.url) {
}.openTabDrawer {
}.openNewTab {
}.submitQuery(secondWebPage.url.toString()) {
}
}.submitQuery(secondWebPage.url.toString()) {}
closeApp(activityTestRule)
restartApp(activityTestRule)
homeScreen {
verifyPrivateBrowsingHomeScreenItems()
}.openTabDrawer {

@ -498,6 +498,10 @@ class HomeScreenRobot {
)
}
fun verifyIfInPrivateOrNormalMode(privateBrowsingEnabled: Boolean) {
assert(isPrivateModeEnabled() == privateBrowsingEnabled)
}
class Transition {
fun openTabDrawer(interact: TabDrawerRobot.() -> Unit): TabDrawerRobot.Transition {
@ -563,17 +567,16 @@ class HomeScreenRobot {
return SyncSignInRobot.Transition()
}
fun togglePrivateBrowsingMode() {
if (
!itemWithResIdAndDescription(
"$packageName:id/privateBrowsingButton",
"Disable private browsing",
).exists()
) {
mDevice.findObject(UiSelector().resourceId("$packageName:id/privateBrowsingButton"))
.waitForExists(
waitingTime,
)
fun togglePrivateBrowsingMode(switchPBModeOn: Boolean = true) {
// Switch to private browsing homescreen
if (switchPBModeOn && !isPrivateModeEnabled()) {
privateBrowsingButton.waitForExists(waitingTime)
privateBrowsingButton.click()
}
// Switch to normal browsing homescreen
if (!switchPBModeOn && isPrivateModeEnabled()) {
privateBrowsingButton.waitForExists(waitingTime)
privateBrowsingButton.click()
}
}
@ -1053,6 +1056,13 @@ private val homeScreen =
itemWithResId("$packageName:id/homeLayout")
private val privateBrowsingButton =
itemWithResId("$packageName:id/privateBrowsingButton")
private fun isPrivateModeEnabled(): Boolean =
itemWithResIdAndDescription(
"$packageName:id/privateBrowsingButton",
"Disable private browsing",
).exists()
private val homepageWordmark =
itemWithResId("$packageName:id/wordmark")

@ -41,6 +41,7 @@ import org.mozilla.fenix.helpers.DataGenerationHelper.getStringResource
import org.mozilla.fenix.helpers.HomeActivityComposeTestRule
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResId
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResIdContainingText
import org.mozilla.fenix.helpers.MatcherHelper.itemWithText
import org.mozilla.fenix.helpers.SessionLoadedIdlingResource
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeShort
@ -165,13 +166,9 @@ class NavigationToolbarRobot {
runWithIdleRes(sessionLoadedIdlingResource) {
assertTrue(
mDevice.findObject(
UiSelector().resourceId("$packageName:id/browserLayout"),
).waitForExists(waitingTime) || mDevice.findObject(
UiSelector().resourceId("$packageName:id/download_button"),
).waitForExists(waitingTime) || mDevice.findObject(
UiSelector().text(getStringResource(R.string.tcp_cfr_message)),
).waitForExists(waitingTime),
itemWithResId("$packageName:id/browserLayout").waitForExists(waitingTime) ||
itemWithResId("$packageName:id/download_button").waitForExists(waitingTime) ||
itemWithText(getStringResource(R.string.tcp_cfr_message)).waitForExists(waitingTime),
)
}
@ -295,8 +292,9 @@ class NavigationToolbarRobot {
}
fun openTabButtonShortcutsMenu(interact: NavigationToolbarRobot.() -> Unit): Transition {
mDevice.waitNotNull(Until.findObject(By.desc("Tabs")))
mDevice.waitNotNull(Until.findObject(By.res("$packageName:id/counter_root")))
tabsCounter().click(LONG_CLICK_DURATION)
Log.i(TAG, "Tabs counter long-click successful.")
NavigationToolbarRobot().interact()
return Transition()
@ -314,6 +312,7 @@ class NavigationToolbarRobot {
ViewActions.click(),
),
)
Log.i(TAG, "Clicked the tab shortcut Close tab button.")
NavigationToolbarRobot().interact()
return Transition()
@ -321,7 +320,7 @@ class NavigationToolbarRobot {
fun openNewTabFromShortcutsMenu(interact: SearchRobot.() -> Unit): SearchRobot.Transition {
mDevice.waitForIdle(waitingTime)
Log.i(TAG, "Looking for tab shortcut New tab button.")
onView(withId(R.id.mozac_browser_menu_recyclerView))
.perform(
RecyclerViewActions.actionOnItem<RecyclerView.ViewHolder>(
@ -331,6 +330,7 @@ class NavigationToolbarRobot {
ViewActions.click(),
),
)
Log.i(TAG, "Clicked the tab shortcut New tab button.")
SearchRobot().interact()
return SearchRobot.Transition()
@ -338,7 +338,7 @@ class NavigationToolbarRobot {
fun openNewPrivateTabFromShortcutsMenu(interact: SearchRobot.() -> Unit): SearchRobot.Transition {
mDevice.waitForIdle(waitingTime)
Log.i(TAG, "Looking for tab shortcut New private tab button.")
onView(withId(R.id.mozac_browser_menu_recyclerView))
.perform(
RecyclerViewActions.actionOnItem<RecyclerView.ViewHolder>(
@ -348,6 +348,7 @@ class NavigationToolbarRobot {
ViewActions.click(),
),
)
Log.i(TAG, "Clicked the tab shortcut New private tab button.")
SearchRobot().interact()
return SearchRobot.Transition()
@ -380,15 +381,11 @@ fun navigationToolbar(interact: NavigationToolbarRobot.() -> Unit): NavigationTo
}
fun openEditURLView() {
mDevice.waitNotNull(
Until.findObject(By.res("$packageName:id/toolbar")),
waitingTime,
)
urlBar().waitForExists(waitingTime)
urlBar().click()
mDevice.waitNotNull(
Until.findObject(By.res("$packageName:id/mozac_browser_toolbar_edit_url_view")),
waitingTime,
)
Log.i(TAG, "openEditURLView: URL bar clicked.")
itemWithResId("$packageName:id/mozac_browser_toolbar_edit_url_view").waitForExists(waitingTime)
Log.i(TAG, "openEditURLView: Edit URL bar displayed.")
}
private fun assertNoHistoryBookmarks() {

@ -334,10 +334,9 @@ class SearchRobot {
private lateinit var sessionLoadedIdlingResource: SessionLoadedIdlingResource
fun dismissSearchBar(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
mDevice.waitForIdle()
closeSoftKeyboard()
mDevice.pressBack()
try {
searchWrapper().waitForExists(waitingTime)
mDevice.pressBack()
assertTrue(searchWrapper().waitUntilGone(waitingTimeShort))
} catch (e: AssertionError) {
mDevice.pressBack()

@ -6,6 +6,7 @@
package org.mozilla.fenix.ui.robots
import android.util.Log
import android.view.View
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.UiController
@ -131,6 +132,7 @@ class TabDrawerRobot {
var retries = 0 // number of retries before failing, will stop at 2
do {
closeTabButton().click()
Log.i("MozTestLog", "Clicked the close tab button in tabs tray. Retry #$retries")
retries++
} while (closeTabButton().exists() && retries < 3)
}
@ -158,7 +160,9 @@ class TabDrawerRobot {
),
),
).perform(swipeRight())
Log.i("MozTestLog", "Tab $title swiped right from tabs tray. Retry # $i")
assertTrue(
"Tab $title swipe right was unsuccessful.",
itemWithResIdContainingText(
"$packageName:id/mozac_browser_tabstray_title",
title,
@ -188,7 +192,9 @@ class TabDrawerRobot {
),
),
).perform(swipeLeft())
Log.i("MozTestLog", "Tab $title swiped left from tabs tray. Retry # $i")
assertTrue(
"Tab $title swipe left was unsuccessful.",
itemWithResIdContainingText(
"$packageName:id/mozac_browser_tabstray_title",
title,
@ -206,8 +212,9 @@ class TabDrawerRobot {
fun verifySnackBarText(expectedText: String) {
assertTrue(
"SnackBar message: $expectedText - not found",
mDevice.findObject(
UiSelector().text(expectedText),
UiSelector().textContains(expectedText),
).waitForExists(waitingTime),
)
}
@ -513,8 +520,10 @@ private fun assertExistingOpenTabs(vararg tabTitles: String) {
tabsList
.getChildByText(UiSelector().text(title), title, true)
assertTrue(
"Tab $title not found",
tabItem(title).waitForExists(waitingTimeLong),
)
Log.i("MozTestLog", "Tab $title found in tabs tray.")
}
}
}

Loading…
Cancel
Save