From 2c6401dc63786f10e7a884acfb2d6188b13d0642 Mon Sep 17 00:00:00 2001 From: "oana.horvath" Date: Thu, 12 Oct 2023 16:59:00 +0300 Subject: [PATCH] Bug 1858438 - Tabs Tray TestRail matching --- .../mozilla/fenix/ui/ComposeHomeScreenTest.kt | 2 +- .../fenix/ui/ComposeMediaNotificationTest.kt | 3 + .../org/mozilla/fenix/ui/ComposeSmokeTest.kt | 86 ------ .../fenix/ui/ComposeTabbedBrowsingTest.kt | 253 ++++++++++------- .../org/mozilla/fenix/ui/HomeScreenTest.kt | 2 +- .../mozilla/fenix/ui/MediaNotificationTest.kt | 1 + .../java/org/mozilla/fenix/ui/SmokeTest.kt | 52 ---- .../mozilla/fenix/ui/TabbedBrowsingTest.kt | 259 +++++++++++------- .../mozilla/fenix/ui/robots/BrowserRobot.kt | 8 - .../fenix/ui/robots/HomeScreenRobot.kt | 3 +- .../fenix/ui/robots/NavigationToolbarRobot.kt | 16 +- 11 files changed, 336 insertions(+), 349 deletions(-) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeHomeScreenTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeHomeScreenTest.kt index f9e350dcc4..fab9595237 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeHomeScreenTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeHomeScreenTest.kt @@ -88,7 +88,7 @@ class ComposeHomeScreenTest { homeScreen { }.togglePrivateBrowsingMode() homeScreen { - verifyPrivateBrowsingHomeScreen() + verifyPrivateBrowsingHomeScreenItems() }.openCommonMythsLink { verifyUrl("common-myths-about-private-browsing") } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeMediaNotificationTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeMediaNotificationTest.kt index b3706cc456..db762cf693 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeMediaNotificationTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeMediaNotificationTest.kt @@ -69,6 +69,7 @@ class ComposeMediaNotificationTest { mockWebServer.shutdown() } + // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1347033 @SmokeTest @Test fun verifyVideoPlaybackSystemNotificationTest() { @@ -103,6 +104,7 @@ class ComposeMediaNotificationTest { mDevice.pressBack() } + // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2316010 @SmokeTest @Test fun verifyAudioPlaybackSystemNotificationTest() { @@ -137,6 +139,7 @@ class ComposeMediaNotificationTest { mDevice.pressBack() } + // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/903595 @Test fun mediaSystemNotificationInPrivateModeTest() { val audioTestPage = TestAssetHelper.getAudioPageAsset(mockWebServer) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeSmokeTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeSmokeTest.kt index 9cf56c107c..60423a4198 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeSmokeTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeSmokeTest.kt @@ -12,8 +12,6 @@ import androidx.core.net.toUri import androidx.test.platform.app.InstrumentationRegistry import androidx.test.rule.ActivityTestRule import androidx.test.uiautomator.UiDevice -import mozilla.components.browser.state.store.BrowserStore -import mozilla.components.concept.engine.mediasession.MediaSession import okhttp3.mockwebserver.MockWebServer import org.junit.After import org.junit.Before @@ -22,17 +20,13 @@ import org.junit.Test import org.mozilla.fenix.IntentReceiverActivity import org.mozilla.fenix.R import org.mozilla.fenix.customannotations.SmokeTest -import org.mozilla.fenix.ext.components import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.HomeActivityIntentTestRule -import org.mozilla.fenix.helpers.MatcherHelper.itemWithText import org.mozilla.fenix.helpers.RetryTestRule import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestHelper.registerAndCleanupIdlingResources import org.mozilla.fenix.helpers.ViewVisibilityIdlingResource import org.mozilla.fenix.ui.robots.browserScreen -import org.mozilla.fenix.ui.robots.clickPageObject -import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.navigationToolbar /** @@ -46,8 +40,6 @@ import org.mozilla.fenix.ui.robots.navigationToolbar class ComposeSmokeTest { private lateinit var mDevice: UiDevice private lateinit var mockWebServer: MockWebServer - private val customMenuItem = "TestMenuItem" - private lateinit var browserStore: BrowserStore @get:Rule(order = 0) val activityTestRule = AndroidComposeTestRule( @@ -69,10 +61,6 @@ class ComposeSmokeTest { @Before fun setUp() { - // Initializing this as part of class construction, below the rule would throw a NPE - // So we are initializing this here instead of in all related tests. - browserStore = activityTestRule.activity.components.core.store - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) mockWebServer = MockWebServer().apply { dispatcher = AndroidAssetDispatcher() @@ -85,62 +73,6 @@ class ComposeSmokeTest { mockWebServer.shutdown() } - @Test - fun shareTabsFromTabsTrayTest() { - val firstWebsite = TestAssetHelper.getGenericAsset(mockWebServer, 1) - val secondWebsite = TestAssetHelper.getGenericAsset(mockWebServer, 2) - val firstWebsiteTitle = firstWebsite.title - val secondWebsiteTitle = secondWebsite.title - val sharingApp = "Gmail" - val sharedUrlsString = "${firstWebsite.url}\n\n${secondWebsite.url}" - - homeScreen { - }.openNavigationToolbar { - }.enterURLAndEnterToBrowser(firstWebsite.url) { - verifyPageContent(firstWebsite.content) - }.openComposeTabDrawer(activityTestRule) { - }.openNewTab { - }.submitQuery(secondWebsite.url.toString()) { - verifyPageContent(secondWebsite.content) - }.openComposeTabDrawer(activityTestRule) { - verifyExistingOpenTabs("Test_Page_1") - verifyExistingOpenTabs("Test_Page_2") - }.openThreeDotMenu { - verifyShareAllTabsButton() - }.clickShareAllTabsButton { - verifyShareTabsOverlay(firstWebsiteTitle, secondWebsiteTitle) - verifySharingWithSelectedApp( - sharingApp, - sharedUrlsString, - "$firstWebsiteTitle, $secondWebsiteTitle", - ) - } - } - - @Test - fun privateTabsTrayWithOpenedTabTest() { - val website = TestAssetHelper.getGenericAsset(mockWebServer, 1) - - homeScreen { - }.togglePrivateBrowsingMode() - - homeScreen { - }.openNavigationToolbar { - }.enterURLAndEnterToBrowser(website.url) { - }.openComposeTabDrawer(activityTestRule) { - verifyNormalBrowsingButtonIsSelected(false) - verifyPrivateBrowsingButtonIsSelected(true) - verifySyncedTabsButtonIsSelected(false) - verifyThreeDotButton() - verifyNormalTabCounter() - verifyPrivateTabsList() - verifyExistingOpenTabs(website.title) - verifyTabCloseButton() - verifyTabThumbnail() - verifyFab() - } - } - @Test fun mainMenuInstallPWATest() { val pwaPage = "https://mozilla-mobile.github.io/testapp/" @@ -198,22 +130,4 @@ class ComposeSmokeTest { verifyAppearanceColorSepia(true) } } - - @Test - fun tabMediaControlButtonTest() { - val audioTestPage = TestAssetHelper.getAudioPageAsset(mockWebServer) - - navigationToolbar { - }.enterURLAndEnterToBrowser(audioTestPage.url) { - mDevice.waitForIdle() - clickPageObject(itemWithText("Play")) - assertPlaybackState(browserStore, MediaSession.PlaybackState.PLAYING) - }.openComposeTabDrawer(activityTestRule) { - verifyTabMediaControlButtonState("Pause") - clickTabMediaControlButton("Pause") - verifyTabMediaControlButtonState("Play") - }.openTab(audioTestPage.title) { - assertPlaybackState(browserStore, MediaSession.PlaybackState.PAUSED) - } - } } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeTabbedBrowsingTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeTabbedBrowsingTest.kt index aa2d0325da..f1f5da3455 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeTabbedBrowsingTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/ComposeTabbedBrowsingTest.kt @@ -8,14 +8,18 @@ import androidx.compose.ui.test.junit4.AndroidComposeTestRule import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.UiDevice import com.google.android.material.bottomsheet.BottomSheetBehavior +import mozilla.components.browser.state.store.BrowserStore +import mozilla.components.concept.engine.mediasession.MediaSession import okhttp3.mockwebserver.MockWebServer import org.junit.After import org.junit.Before import org.junit.Rule 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.HomeActivityIntentTestRule +import org.mozilla.fenix.helpers.MatcherHelper import org.mozilla.fenix.helpers.RetryTestRule import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestHelper.clickSnackbarButton @@ -24,6 +28,7 @@ import org.mozilla.fenix.helpers.TestHelper.restartApp import org.mozilla.fenix.helpers.TestHelper.verifyKeyboardVisibility import org.mozilla.fenix.helpers.TestHelper.verifySnackBarText import org.mozilla.fenix.ui.robots.browserScreen +import org.mozilla.fenix.ui.robots.clickPageObject import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.navigationToolbar import org.mozilla.fenix.ui.robots.notificationShade @@ -48,6 +53,7 @@ import org.mozilla.fenix.ui.robots.notificationShade class ComposeTabbedBrowsingTest { private lateinit var mDevice: UiDevice private lateinit var mockWebServer: MockWebServer + private lateinit var browserStore: BrowserStore @get:Rule(order = 0) val composeTestRule = @@ -64,6 +70,10 @@ class ComposeTabbedBrowsingTest { @Before fun setUp() { + // Initializing this as part of class construction, below the rule would throw a NPE + // So we are initializing this here instead of in all related tests. + browserStore = composeTestRule.activity.components.core.store + mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) mockWebServer = MockWebServer().apply { dispatcher = AndroidAssetDispatcher() @@ -76,52 +86,7 @@ class ComposeTabbedBrowsingTest { mockWebServer.shutdown() } - @Test - fun openNewTabTest() { - val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) - - navigationToolbar { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { - mDevice.waitForIdle() - verifyTabCounter("1") - }.openComposeTabDrawer(composeTestRule) { - verifyNormalBrowsingButtonIsSelected() - verifyExistingOpenTabs("Test_Page_1") - closeTab() - } - homeScreen { - }.openComposeTabDrawer(composeTestRule) { - verifyNoOpenTabsInNormalBrowsing() - }.openNewTab { - }.submitQuery(defaultWebPage.url.toString()) { - verifyPageContent(defaultWebPage.content) - verifyTabCounter("1") - }.openComposeTabDrawer(composeTestRule) { - verifyNormalBrowsingButtonIsSelected() - verifyExistingOpenTabs("Test_Page_1") - } - } - - @Test - fun openNewPrivateTabTest() { - val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) - - homeScreen { - }.togglePrivateBrowsingMode() - navigationToolbar { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { - mDevice.waitForIdle() - verifyTabCounter("1") - }.openComposeTabDrawer(composeTestRule) { - verifyPrivateTabsList() - verifyPrivateBrowsingButtonIsSelected() - }.toggleToNormalTabs { - verifyNoOpenTabsInNormalBrowsing() - }.toggleToPrivateTabs { - verifyPrivateTabsList() - } - } - + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903599 @Test fun closeAllTabsTest() { val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) @@ -153,8 +118,9 @@ class ComposeTabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903604 @Test - fun closeTabTest() { + fun closingTabsMethodsTest() { val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1) navigationToolbar { @@ -162,6 +128,13 @@ class ComposeTabbedBrowsingTest { }.openComposeTabDrawer(composeTestRule) { verifyExistingOpenTabs("Test_Page_1") closeTab() + verifySnackBarText("Tab closed") + clickSnackbarButton("UNDO") + } + browserScreen { + verifyTabCounter("1") + }.openComposeTabDrawer(composeTestRule) { + closeTab() } homeScreen { verifyTabCounter("0") @@ -184,42 +157,23 @@ class ComposeTabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903591 @Test - fun verifyUndoSnackBarTest() { - // disabling these features because they interfere with the snackbar visibility - composeTestRule.activityRule.applySettingsExceptions { - it.isPocketEnabled = false - it.isRecentTabsFeatureEnabled = false - it.isRecentlyVisitedFeatureEnabled = false - } - + fun closingPrivateTabsMethodsTest() { val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1) + homeScreen { }.togglePrivateBrowsingMode() navigationToolbar { }.enterURLAndEnterToBrowser(genericURL.url) { }.openComposeTabDrawer(composeTestRule) { verifyExistingOpenTabs("Test_Page_1") closeTab() - verifySnackBarText("Tab closed") + verifySnackBarText("Private tab closed") clickSnackbarButton("UNDO") } - browserScreen { verifyTabCounter("1") }.openComposeTabDrawer(composeTestRule) { - verifyExistingOpenTabs("Test_Page_1") - } - } - - @Test - fun closePrivateTabTest() { - val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1) - - homeScreen { }.togglePrivateBrowsingMode() - navigationToolbar { - }.enterURLAndEnterToBrowser(genericURL.url) { - }.openComposeTabDrawer(composeTestRule) { - verifyExistingOpenTabs("Test_Page_1") closeTab() } homeScreen { @@ -229,6 +183,7 @@ class ComposeTabbedBrowsingTest { }.openComposeTabDrawer(composeTestRule) { verifyExistingOpenTabs("Test_Page_1") swipeTabRight("Test_Page_1") + verifySnackBarText("Private tab closed") } homeScreen { verifyTabCounter("0") @@ -237,36 +192,34 @@ class ComposeTabbedBrowsingTest { }.openComposeTabDrawer(composeTestRule) { verifyExistingOpenTabs("Test_Page_1") swipeTabLeft("Test_Page_1") + verifySnackBarText("Private tab closed") } homeScreen { verifyTabCounter("0") } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903606 + @SmokeTest @Test - fun verifyPrivateTabUndoSnackBarTest() { - val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1) + fun tabMediaControlButtonTest() { + val audioTestPage = TestAssetHelper.getAudioPageAsset(mockWebServer) - homeScreen { }.togglePrivateBrowsingMode() navigationToolbar { - }.enterURLAndEnterToBrowser(genericURL.url) { - verifyPageContent(genericURL.content) - }.openComposeTabDrawer(composeTestRule) { - verifyExistingOpenTabs("Test_Page_1") - closeTab() - verifySnackBarText("Private tab closed") - clickSnackbarButton("UNDO") - } - - browserScreen { - verifyPageContent(genericURL.content) - verifyTabCounter("1") + }.enterURLAndEnterToBrowser(audioTestPage.url) { + mDevice.waitForIdle() + clickPageObject(MatcherHelper.itemWithText("Play")) + assertPlaybackState(browserStore, MediaSession.PlaybackState.PLAYING) }.openComposeTabDrawer(composeTestRule) { - verifyExistingOpenTabs("Test_Page_1") - verifyPrivateBrowsingButtonIsSelected() + verifyTabMediaControlButtonState("Pause") + clickTabMediaControlButton("Pause") + verifyTabMediaControlButtonState("Play") + }.openTab(audioTestPage.title) { + assertPlaybackState(browserStore, MediaSession.PlaybackState.PAUSED) } } + // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/903592 @SmokeTest @Test fun verifyCloseAllPrivateTabsNotificationTest() { @@ -310,6 +263,7 @@ class ComposeTabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903600 @Test fun verifyEmptyTabTray() { homeScreen { @@ -326,8 +280,9 @@ class ComposeTabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903585 @Test - fun emptyTabsTrayViewPrivateBrowsingTest() { + fun verifyEmptyPrivateTabsTrayTest() { homeScreen { }.openComposeTabDrawer(composeTestRule) { }.toggleToPrivateTabs { @@ -343,8 +298,9 @@ class ComposeTabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903601 @Test - fun verifyOpenTabDetails() { + fun verifyTabsTrayWithOpenTabTest() { val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) navigationToolbar { @@ -366,29 +322,57 @@ class ComposeTabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903587 + @SmokeTest + @Test + fun verifyPrivateTabsTrayWithOpenTabTest() { + val website = TestAssetHelper.getGenericAsset(mockWebServer, 1) + + homeScreen { + }.openComposeTabDrawer(composeTestRule) { + }.toggleToPrivateTabs { + }.openNewTab { + }.submitQuery(website.url.toString()) { + }.openComposeTabDrawer(composeTestRule) { + verifyNormalBrowsingButtonIsSelected(false) + verifyPrivateBrowsingButtonIsSelected(true) + verifySyncedTabsButtonIsSelected(false) + verifyThreeDotButton() + verifyNormalTabCounter() + verifyPrivateTabsList() + verifyExistingOpenTabs(website.title) + verifyTabCloseButton() + verifyTabThumbnail() + verifyFab() + } + } + + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/927314 @Test - fun verifyContextMenuShortcuts() { + fun tabsCounterShortcutMenuTest() { val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) navigationToolbar { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { }.openTabButtonShortcutsMenu { verifyTabButtonShortcutMenuItems() }.closeTabFromShortcutsMenu { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { }.openTabButtonShortcutsMenu { }.openNewPrivateTabFromShortcutsMenu { verifyKeyboardVisibility() verifySearchBarPlaceholder("Search or enter address") // dismiss search dialog }.dismissSearchBar { - verifyCommonMythsLink() - verifyNavigationToolbar() + verifyPrivateBrowsingHomeScreenItems() } navigationToolbar { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { }.openTabButtonShortcutsMenu { - }.openTabFromShortcutsMenu { + }.openNewTabFromShortcutsMenu { verifyKeyboardVisibility() verifySearchBarPlaceholder("Search or enter address") // dismiss search dialog @@ -398,6 +382,43 @@ class ComposeTabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/927314 + @Test + fun privateTabsCounterShortcutMenuTest() { + val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) + + homeScreen {}.togglePrivateBrowsingMode() + navigationToolbar { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { + }.openTabButtonShortcutsMenu { + verifyTabButtonShortcutMenuItems() + }.closeTabFromShortcutsMenu { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { + }.openTabButtonShortcutsMenu { + }.openNewPrivateTabFromShortcutsMenu { + verifyKeyboardVisibility() + verifySearchBarPlaceholder("Search or enter address") + // dismiss search dialog + }.dismissSearchBar { + verifyCommonMythsLink() + } + navigationToolbar { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { + }.openTabButtonShortcutsMenu { + }.openNewTabFromShortcutsMenu { + verifyKeyboardVisibility() + verifySearchBarPlaceholder("Search or enter address") + // dismiss search dialog + }.dismissSearchBar { + // Verify normal browsing homescreen + verifyExistingTopSitesList() + } + } + + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/1046683 @Test fun verifySyncedTabsWhenUserIsNotSignedInTest() { navigationToolbar { @@ -411,6 +432,41 @@ class ComposeTabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903598 + @SmokeTest + @Test + fun shareTabsFromTabsTrayTest() { + val firstWebsite = TestAssetHelper.getGenericAsset(mockWebServer, 1) + val secondWebsite = TestAssetHelper.getGenericAsset(mockWebServer, 2) + val firstWebsiteTitle = firstWebsite.title + val secondWebsiteTitle = secondWebsite.title + val sharingApp = "Gmail" + val sharedUrlsString = "${firstWebsite.url}\n\n${secondWebsite.url}" + + homeScreen { + }.openNavigationToolbar { + }.enterURLAndEnterToBrowser(firstWebsite.url) { + verifyPageContent(firstWebsite.content) + }.openComposeTabDrawer(composeTestRule) { + }.openNewTab { + }.submitQuery(secondWebsite.url.toString()) { + verifyPageContent(secondWebsite.content) + }.openComposeTabDrawer(composeTestRule) { + verifyExistingOpenTabs("Test_Page_1") + verifyExistingOpenTabs("Test_Page_2") + }.openThreeDotMenu { + verifyShareAllTabsButton() + }.clickShareAllTabsButton { + verifyShareTabsOverlay(firstWebsiteTitle, secondWebsiteTitle) + verifySharingWithSelectedApp( + sharingApp, + sharedUrlsString, + "$firstWebsiteTitle, $secondWebsiteTitle", + ) + } + } + + // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/526244 @Test fun privateModeStaysAsDefaultAfterRestartTest() { val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) @@ -424,13 +480,14 @@ class ComposeTabbedBrowsingTest { restartApp(composeTestRule.activityRule) homeScreen { - verifyPrivateBrowsingHomeScreen() + verifyPrivateBrowsingHomeScreenItems() }.openComposeTabDrawer(composeTestRule) { }.toggleToNormalTabs { verifyExistingOpenTabs(defaultWebPage.title) } } + // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2228470 @SmokeTest @Test fun privateTabsDoNotPersistAfterClosingAppTest() { @@ -449,7 +506,7 @@ class ComposeTabbedBrowsingTest { closeApp(composeTestRule.activityRule) restartApp(composeTestRule.activityRule) homeScreen { - verifyPrivateBrowsingHomeScreen() + verifyPrivateBrowsingHomeScreenItems() }.openComposeTabDrawer(composeTestRule) { verifyNoOpenTabsInPrivateBrowsing() } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/HomeScreenTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/HomeScreenTest.kt index 9b1417f47e..172886e2bb 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/HomeScreenTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/HomeScreenTest.kt @@ -86,7 +86,7 @@ class HomeScreenTest { homeScreen { }.togglePrivateBrowsingMode() homeScreen { - verifyPrivateBrowsingHomeScreen() + verifyPrivateBrowsingHomeScreenItems() }.openCommonMythsLink { verifyUrl("common-myths-about-private-browsing") } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/MediaNotificationTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/MediaNotificationTest.kt index d4bc856343..5ea9084c66 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/MediaNotificationTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/MediaNotificationTest.kt @@ -132,6 +132,7 @@ class MediaNotificationTest { mDevice.pressBack() } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903595 @Test fun mediaSystemNotificationInPrivateModeTest() { val audioTestPage = TestAssetHelper.getAudioPageAsset(mockWebServer) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt index bdcfc7a79f..ebfb8e3b05 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/SmokeTest.kt @@ -12,8 +12,6 @@ import androidx.core.net.toUri import androidx.test.platform.app.InstrumentationRegistry import androidx.test.rule.ActivityTestRule import androidx.test.uiautomator.UiDevice -import mozilla.components.browser.state.store.BrowserStore -import mozilla.components.concept.engine.mediasession.MediaSession import okhttp3.mockwebserver.MockWebServer import org.junit.After import org.junit.Before @@ -22,16 +20,13 @@ import org.junit.Test import org.mozilla.fenix.IntentReceiverActivity import org.mozilla.fenix.R import org.mozilla.fenix.customannotations.SmokeTest -import org.mozilla.fenix.ext.components import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.HomeActivityIntentTestRule -import org.mozilla.fenix.helpers.MatcherHelper.itemWithText import org.mozilla.fenix.helpers.RetryTestRule import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestHelper.registerAndCleanupIdlingResources import org.mozilla.fenix.helpers.ViewVisibilityIdlingResource import org.mozilla.fenix.ui.robots.browserScreen -import org.mozilla.fenix.ui.robots.clickPageObject import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.navigationToolbar @@ -46,7 +41,6 @@ import org.mozilla.fenix.ui.robots.navigationToolbar class SmokeTest { private lateinit var mDevice: UiDevice private lateinit var mockWebServer: MockWebServer - private lateinit var browserStore: BrowserStore @get:Rule(order = 0) val activityTestRule = AndroidComposeTestRule( @@ -67,10 +61,6 @@ class SmokeTest { @Before fun setUp() { - // Initializing this as part of class construction, below the rule would throw a NPE - // So we are initializing this here instead of in all related tests. - browserStore = activityTestRule.activity.components.core.store - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) mockWebServer = MockWebServer().apply { dispatcher = AndroidAssetDispatcher() @@ -115,30 +105,6 @@ class SmokeTest { } } - @Test - fun privateTabsTrayWithOpenedTabTest() { - val website = TestAssetHelper.getGenericAsset(mockWebServer, 1) - - homeScreen { - }.togglePrivateBrowsingMode() - - homeScreen { - }.openNavigationToolbar { - }.enterURLAndEnterToBrowser(website.url) { - }.openTabDrawer { - verifyNormalBrowsingButtonIsSelected(false) - verifyPrivateBrowsingButtonIsSelected(true) - verifySyncedTabsButtonIsSelected(false) - verifyTabTrayOverflowMenu(true) - verifyTabsTrayCounter() - verifyExistingTabList() - verifyExistingOpenTabs(website.title) - verifyCloseTabsButton(website.title) - verifyOpenedTabThumbnail() - verifyPrivateBrowsingNewTabButton() - } - } - @Test fun mainMenuInstallPWATest() { val pwaPage = "https://mozilla-mobile.github.io/testapp/" @@ -196,22 +162,4 @@ class SmokeTest { verifyAppearanceColorSepia(true) } } - - @Test - fun tabMediaControlButtonTest() { - val audioTestPage = TestAssetHelper.getAudioPageAsset(mockWebServer) - - navigationToolbar { - }.enterURLAndEnterToBrowser(audioTestPage.url) { - mDevice.waitForIdle() - clickPageObject(itemWithText("Play")) - assertPlaybackState(browserStore, MediaSession.PlaybackState.PLAYING) - }.openTabDrawer { - verifyTabMediaControlButtonState("Pause") - clickTabMediaControlButton("Pause") - verifyTabMediaControlButtonState("Play") - }.openTab(audioTestPage.title) { - assertPlaybackState(browserStore, MediaSession.PlaybackState.PAUSED) - } - } } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/TabbedBrowsingTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/TabbedBrowsingTest.kt index b602c34042..ea196f189c 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/TabbedBrowsingTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/TabbedBrowsingTest.kt @@ -7,20 +7,25 @@ package org.mozilla.fenix.ui import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.UiDevice import com.google.android.material.bottomsheet.BottomSheetBehavior +import mozilla.components.browser.state.store.BrowserStore +import mozilla.components.concept.engine.mediasession.MediaSession import okhttp3.mockwebserver.MockWebServer import org.junit.After import org.junit.Before import org.junit.Rule 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.HomeActivityIntentTestRule +import org.mozilla.fenix.helpers.MatcherHelper import org.mozilla.fenix.helpers.RetryTestRule import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestHelper.closeApp import org.mozilla.fenix.helpers.TestHelper.restartApp import org.mozilla.fenix.helpers.TestHelper.verifyKeyboardVisibility import org.mozilla.fenix.ui.robots.browserScreen +import org.mozilla.fenix.ui.robots.clickPageObject import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.navigationToolbar import org.mozilla.fenix.ui.robots.notificationShade @@ -45,6 +50,7 @@ import org.mozilla.fenix.ui.robots.notificationShade class TabbedBrowsingTest { private lateinit var mDevice: UiDevice private lateinit var mockWebServer: MockWebServer + private lateinit var browserStore: BrowserStore @get:Rule val activityTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides(skipOnboarding = true) @@ -55,6 +61,10 @@ class TabbedBrowsingTest { @Before fun setUp() { + // Initializing this as part of class construction, below the rule would throw a NPE + // So we are initializing this here instead of in all related tests. + browserStore = activityTestRule.activity.components.core.store + mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) mockWebServer = MockWebServer().apply { dispatcher = AndroidAssetDispatcher() @@ -67,51 +77,7 @@ class TabbedBrowsingTest { mockWebServer.shutdown() } - @Test - fun openNewTabTest() { - val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) - - navigationToolbar { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { - mDevice.waitForIdle() - verifyTabCounter("1") - }.openTabDrawer { - verifyNormalModeSelected() - verifyExistingOpenTabs("Test_Page_1") - closeTab() - }.openTabDrawer { - verifyNoOpenTabsInNormalBrowsing() - }.openNewTab { - }.submitQuery(defaultWebPage.url.toString()) { - mDevice.waitForIdle() - verifyTabCounter("1") - }.openTabDrawer { - verifyNormalModeSelected() - verifyExistingOpenTabs("Test_Page_1") - } - } - - // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/233629 - @Test - fun openNewPrivateTabTest() { - val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) - - homeScreen {}.togglePrivateBrowsingMode() - - navigationToolbar { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { - mDevice.waitForIdle() - verifyTabCounter("1") - }.openTabDrawer { - verifyExistingTabList() - verifyPrivateModeSelected() - }.toggleToNormalTabs { - verifyNoOpenTabsInNormalBrowsing() - }.toggleToPrivateTabs { - verifyExistingTabList() - } - } - + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903599 @Test fun closeAllTabsTest() { val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) @@ -144,8 +110,9 @@ class TabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903604 @Test - fun closeTabTest() { + fun closingTabsMethodsTest() { val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1) navigationToolbar { @@ -153,6 +120,13 @@ class TabbedBrowsingTest { }.openTabDrawer { verifyExistingOpenTabs("Test_Page_1") closeTab() + verifySnackBarText("Tab closed") + snackBarButtonClick("UNDO") + } + browserScreen { + verifyTabCounter("1") + }.openTabDrawer { + closeTab() } homeScreen { verifyTabCounter("0") @@ -161,6 +135,7 @@ class TabbedBrowsingTest { }.openTabDrawer { verifyExistingOpenTabs("Test_Page_1") swipeTabRight("Test_Page_1") + verifySnackBarText("Tab closed") } homeScreen { verifyTabCounter("0") @@ -169,48 +144,31 @@ class TabbedBrowsingTest { }.openTabDrawer { verifyExistingOpenTabs("Test_Page_1") swipeTabLeft("Test_Page_1") + verifySnackBarText("Tab closed") } homeScreen { verifyTabCounter("0") } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903591 @Test - fun verifyUndoSnackBarTest() { - // disabling these features because they interfere with the snackbar visibility - activityTestRule.applySettingsExceptions { - it.isPocketEnabled = false - it.isRecentTabsFeatureEnabled = false - } - + fun closingPrivateTabsMethodsTest() { val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1) + homeScreen { }.togglePrivateBrowsingMode() navigationToolbar { }.enterURLAndEnterToBrowser(genericURL.url) { }.openTabDrawer { verifyExistingOpenTabs("Test_Page_1") + verifyCloseTabsButton("Test_Page_1") closeTab() - verifySnackBarText("Tab closed") + verifySnackBarText("Private tab closed") snackBarButtonClick("UNDO") } - browserScreen { verifyTabCounter("1") }.openTabDrawer { - verifyExistingOpenTabs("Test_Page_1") - } - } - - @Test - fun closePrivateTabTest() { - val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1) - - homeScreen { }.togglePrivateBrowsingMode() - navigationToolbar { - }.enterURLAndEnterToBrowser(genericURL.url) { - }.openTabDrawer { - verifyExistingOpenTabs("Test_Page_1") - verifyCloseTabsButton("Test_Page_1") closeTab() } homeScreen { @@ -220,6 +178,7 @@ class TabbedBrowsingTest { }.openTabDrawer { verifyExistingOpenTabs("Test_Page_1") swipeTabRight("Test_Page_1") + verifySnackBarText("Private tab closed") } homeScreen { verifyTabCounter("0") @@ -228,32 +187,30 @@ class TabbedBrowsingTest { }.openTabDrawer { verifyExistingOpenTabs("Test_Page_1") swipeTabLeft("Test_Page_1") + verifySnackBarText("Private tab closed") } homeScreen { verifyTabCounter("0") } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903606 + @SmokeTest @Test - fun verifyPrivateTabUndoSnackBarTest() { - val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1) + fun tabMediaControlButtonTest() { + val audioTestPage = TestAssetHelper.getAudioPageAsset(mockWebServer) - homeScreen { }.togglePrivateBrowsingMode() navigationToolbar { - }.enterURLAndEnterToBrowser(genericURL.url) { - }.openTabDrawer { - verifyExistingOpenTabs("Test_Page_1") - verifyCloseTabsButton("Test_Page_1") - closeTab() - verifySnackBarText("Private tab closed") - snackBarButtonClick("UNDO") - } - - browserScreen { - verifyTabCounter("1") + }.enterURLAndEnterToBrowser(audioTestPage.url) { + mDevice.waitForIdle() + clickPageObject(MatcherHelper.itemWithText("Play")) + assertPlaybackState(browserStore, MediaSession.PlaybackState.PLAYING) }.openTabDrawer { - verifyExistingOpenTabs("Test_Page_1") - verifyPrivateModeSelected() + verifyTabMediaControlButtonState("Pause") + clickTabMediaControlButton("Pause") + verifyTabMediaControlButtonState("Play") + }.openTab(audioTestPage.title) { + assertPlaybackState(browserStore, MediaSession.PlaybackState.PAUSED) } } @@ -278,6 +235,40 @@ class TabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903598 + @SmokeTest + @Test + fun shareTabsFromTabsTrayTest() { + val firstWebsite = TestAssetHelper.getGenericAsset(mockWebServer, 1) + val secondWebsite = TestAssetHelper.getGenericAsset(mockWebServer, 2) + val firstWebsiteTitle = firstWebsite.title + val secondWebsiteTitle = secondWebsite.title + val sharingApp = "Gmail" + val sharedUrlsString = "${firstWebsite.url}\n\n${secondWebsite.url}" + + homeScreen { + }.openNavigationToolbar { + }.enterURLAndEnterToBrowser(firstWebsite.url) { + verifyPageContent(firstWebsite.content) + }.openTabDrawer { + }.openNewTab { + }.submitQuery(secondWebsite.url.toString()) { + verifyPageContent(secondWebsite.content) + }.openTabDrawer { + verifyExistingOpenTabs("Test_Page_1") + verifyExistingOpenTabs("Test_Page_2") + }.openTabsListThreeDotMenu { + verifyShareAllTabsButton() + }.clickShareAllTabsButton { + verifyShareTabsOverlay(firstWebsiteTitle, secondWebsiteTitle) + verifySharingWithSelectedApp( + sharingApp, + sharedUrlsString, + "$firstWebsiteTitle, $secondWebsiteTitle", + ) + } + } + @Test fun verifyTabTrayNotShowingStateHalfExpanded() { navigationToolbar { @@ -301,6 +292,7 @@ class TabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903600 @Test fun verifyEmptyTabTray() { navigationToolbar { @@ -315,8 +307,9 @@ class TabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903585 @Test - fun emptyTabsTrayViewPrivateBrowsingTest() { + fun verifyEmptyPrivateTabsTrayTest() { navigationToolbar { }.openTabTray { }.toggleToPrivateTabs { @@ -330,12 +323,15 @@ class TabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903601 @Test - fun verifyOpenTabDetails() { + fun verifyTabsTrayWithOpenTabTest() { val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) - navigationToolbar { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { + homeScreen { + }.openTabDrawer { + }.openNewTab { + }.submitQuery(defaultWebPage.url.toString()) { }.openTabDrawer { verifyNormalBrowsingButtonIsSelected(true) verifyPrivateBrowsingButtonIsSelected(false) @@ -353,29 +349,57 @@ class TabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/903587 + @SmokeTest + @Test + fun verifyPrivateTabsTrayWithOpenTabTest() { + val website = TestAssetHelper.getGenericAsset(mockWebServer, 1) + + homeScreen { + }.openTabDrawer { + }.toggleToPrivateTabs { + }.openNewTab { + }.submitQuery(website.url.toString()) { + }.openTabDrawer { + verifyNormalBrowsingButtonIsSelected(false) + verifyPrivateBrowsingButtonIsSelected(true) + verifySyncedTabsButtonIsSelected(false) + verifyTabTrayOverflowMenu(true) + verifyTabsTrayCounter() + verifyExistingTabList() + verifyExistingOpenTabs(website.title) + verifyCloseTabsButton(website.title) + verifyOpenedTabThumbnail() + verifyPrivateBrowsingNewTabButton() + } + } + + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/927315 @Test - fun verifyContextMenuShortcuts() { + fun tabsCounterShortcutMenuTest() { val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) navigationToolbar { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { }.openTabButtonShortcutsMenu { verifyTabButtonShortcutMenuItems() }.closeTabFromShortcutsMenu { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { }.openTabButtonShortcutsMenu { }.openNewPrivateTabFromShortcutsMenu { verifyKeyboardVisibility() verifySearchBarPlaceholder("Search or enter address") // dismiss search dialog }.dismissSearchBar { - verifyCommonMythsLink() - verifyNavigationToolbar() + verifyPrivateBrowsingHomeScreenItems() } navigationToolbar { - }.enterURLAndEnterToBrowser(defaultWebPage.url) { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { }.openTabButtonShortcutsMenu { - }.openTabFromShortcutsMenu { + }.openNewTabFromShortcutsMenu { verifyKeyboardVisibility() verifySearchBarPlaceholder("Search or enter address") // dismiss search dialog @@ -385,6 +409,45 @@ class TabbedBrowsingTest { } } + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/927314 + @Test + fun privateTabsCounterShortcutMenuTest() { + val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) + + homeScreen {}.togglePrivateBrowsingMode() + navigationToolbar { + }.enterURLAndEnterToBrowser(defaultWebPage.url) { + waitForPageToLoad() + } + navigationToolbar { + }.openTabButtonShortcutsMenu { + verifyTabButtonShortcutMenuItems() + }.closeTabFromShortcutsMenu { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { + }.openTabButtonShortcutsMenu { + }.openNewPrivateTabFromShortcutsMenu { + verifyKeyboardVisibility() + verifySearchBarPlaceholder("Search or enter address") + // dismiss search dialog + }.dismissSearchBar { + verifyCommonMythsLink() + } + navigationToolbar { + }.enterURLAndEnterToBrowser(defaultWebPage.url) {} + navigationToolbar { + }.openTabButtonShortcutsMenu { + }.openNewTabFromShortcutsMenu { + verifyKeyboardVisibility() + verifySearchBarPlaceholder("Search or enter address") + // dismiss search dialog + }.dismissSearchBar { + // Verify normal browsing homescreen + verifyExistingTopSitesList() + } + } + + // TestRail: https://testrail.stage.mozaws.net/index.php?/cases/view/1046683 @Test fun verifySyncedTabsWhenUserIsNotSignedInTest() { navigationToolbar { @@ -411,7 +474,7 @@ class TabbedBrowsingTest { closeApp(activityTestRule) restartApp(activityTestRule) homeScreen { - verifyPrivateBrowsingHomeScreen() + verifyPrivateBrowsingHomeScreenItems() }.openTabDrawer { }.toggleToNormalTabs { verifyExistingOpenTabs(defaultWebPage.title) @@ -439,7 +502,7 @@ class TabbedBrowsingTest { restartApp(activityTestRule) homeScreen { - verifyPrivateBrowsingHomeScreen() + verifyPrivateBrowsingHomeScreenItems() }.openTabDrawer { verifyNoOpenTabsInPrivateBrowsing() } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt index 95d62de00f..30dec85b8b 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt @@ -1105,14 +1105,6 @@ class BrowserRobot { return ComposeTabDrawerRobot.Transition(composeTestRule) } - fun openTabButtonShortcutsMenu(interact: NavigationToolbarRobot.() -> Unit): NavigationToolbarRobot.Transition { - mDevice.waitNotNull(Until.findObject(By.desc("Tabs"))) - tabsCounter().click(LONG_CLICK_DURATION) - - NavigationToolbarRobot().interact() - return NavigationToolbarRobot.Transition() - } - fun openNotificationShade(interact: NotificationRobot.() -> Unit): NotificationRobot.Transition { mDevice.openNotification() diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt index 0622a0592d..0b26c69f62 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt @@ -87,11 +87,10 @@ class HomeScreenRobot { fun verifyHomeScreen() = assertItemWithResIdExists(homeScreen) - fun verifyPrivateBrowsingHomeScreen() { + fun verifyPrivateBrowsingHomeScreenItems() { verifyHomeScreenAppBarItems() assertItemContainingTextExists(itemContainingText(privateSessionMessage)) verifyCommonMythsLink() - verifyNavigationToolbarItems() } fun verifyHomeScreenAppBarItems() = diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/NavigationToolbarRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/NavigationToolbarRobot.kt index a9d9cb1279..a80273bea0 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/NavigationToolbarRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/NavigationToolbarRobot.kt @@ -305,7 +305,15 @@ class NavigationToolbarRobot { return HomeScreenRobot.Transition() } - fun closeTabFromShortcutsMenu(interact: NavigationToolbarRobot.() -> Unit): NavigationToolbarRobot.Transition { + fun openTabButtonShortcutsMenu(interact: NavigationToolbarRobot.() -> Unit): Transition { + mDevice.waitNotNull(Until.findObject(By.desc("Tabs"))) + tabsCounter().click(LONG_CLICK_DURATION) + + NavigationToolbarRobot().interact() + return Transition() + } + + fun closeTabFromShortcutsMenu(interact: NavigationToolbarRobot.() -> Unit): Transition { mDevice.waitForIdle(waitingTime) onView(withId(R.id.mozac_browser_menu_recyclerView)) @@ -319,10 +327,10 @@ class NavigationToolbarRobot { ) NavigationToolbarRobot().interact() - return NavigationToolbarRobot.Transition() + return Transition() } - fun openTabFromShortcutsMenu(interact: SearchRobot.() -> Unit): SearchRobot.Transition { + fun openNewTabFromShortcutsMenu(interact: SearchRobot.() -> Unit): SearchRobot.Transition { mDevice.waitForIdle(waitingTime) onView(withId(R.id.mozac_browser_menu_recyclerView)) @@ -413,6 +421,8 @@ private fun awesomeBar() = mDevice.findObject(UiSelector().resourceId("$packageName:id/mozac_browser_toolbar_edit_url_view")) private fun threeDotButton() = onView(withId(R.id.mozac_browser_toolbar_menu)) private fun tabTrayButton() = onView(withId(R.id.tab_button)) +private fun tabsCounter() = + mDevice.findObject(By.res("$packageName:id/counter_root")) private fun fillLinkButton() = onView(withId(R.id.fill_link_from_clipboard)) private fun clearAddressBarButton() = itemWithResId("$packageName:id/mozac_browser_toolbar_clear_view") private fun goBackButton() = mDevice.pressBack()