From 675fe6a3a98c79f57f4ef01948a4834cbc901448 Mon Sep 17 00:00:00 2001 From: mcarare Date: Tue, 29 Oct 2019 15:36:37 +0200 Subject: [PATCH] For #1487 Add "my library" menu category and items to home 3-dot menu. Changed UI tests according to new menu items. --- .../syncintegration/SyncIntegrationTest.kt | 2 - .../org/mozilla/fenix/ui/BookmarksTest.kt | 2 - .../java/org/mozilla/fenix/ui/HistoryTest.kt | 17 ++----- .../org/mozilla/fenix/ui/LibraryMenuTest.kt | 46 +++++++++++++++---- .../mozilla/fenix/ui/ThreeDotMenuMainTest.kt | 21 +++++++-- .../mozilla/fenix/ui/robots/BookmarksRobot.kt | 12 ++--- .../mozilla/fenix/ui/robots/BrowserRobot.kt | 30 +++++++++++- .../mozilla/fenix/ui/robots/HistoryRobot.kt | 14 +++--- .../mozilla/fenix/ui/robots/LibraryRobot.kt | 12 ++--- .../fenix/ui/robots/ThreeDotMenuMainRobot.kt | 26 +++++++++++ 10 files changed, 130 insertions(+), 52 deletions(-) diff --git a/app/src/androidTest/java/org/mozilla/fenix/syncintegration/SyncIntegrationTest.kt b/app/src/androidTest/java/org/mozilla/fenix/syncintegration/SyncIntegrationTest.kt index 6e24576ea..3b5ab3aff 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/syncintegration/SyncIntegrationTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/syncintegration/SyncIntegrationTest.kt @@ -43,7 +43,6 @@ class SyncIntegrationTest { tapReturnToPreviousApp() homeScreen { }.openThreeDotMenu { - }.openLibrary { }.openHistory { } historyAfterSyncIsShown() } @@ -55,7 +54,6 @@ class SyncIntegrationTest { tapReturnToPreviousApp() homeScreen { }.openThreeDotMenu { - }.openLibrary { }.openBookmarks { } bookmarkAfterSyncIsShown() } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/BookmarksTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/BookmarksTest.kt index f08565aa7..3eba79953 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/BookmarksTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/BookmarksTest.kt @@ -55,7 +55,6 @@ class BookmarksTest { fun noBookmarkItemsTest() { homeScreen { }.openThreeDotMenu { - }.openLibrary { }.openBookmarks { verifyEmptyBookmarksList() } @@ -98,7 +97,6 @@ class BookmarksTest { fun createBookmarkFolderTest() { homeScreen { }.openThreeDotMenu { - }.openLibrary { }.openBookmarks { clickAddFolderButton() addNewFolderName(bookmarksFolderName) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/HistoryTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/HistoryTest.kt index 099535257..ba64a9303 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/HistoryTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/HistoryTest.kt @@ -13,6 +13,7 @@ import org.junit.After import org.junit.Before import org.junit.Rule import org.junit.Test +import org.junit.Ignore import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.HomeActivityTestRule import org.mozilla.fenix.helpers.TestAssetHelper @@ -55,8 +56,6 @@ class HistoryTest { fun noHistoryItemsInCacheTest() { homeScreen { }.openThreeDotMenu { - verifyLibraryButton() - }.openLibrary { verifyHistoryButton() }.openHistory { verifyHistoryMenuView() @@ -72,7 +71,6 @@ class HistoryTest { }.enterURLAndEnterToBrowser(firstWebPage.url) { }.openHomeScreen { }.openThreeDotMenu { - }.openLibrary { }.openHistory { verifyHistoryMenuView() verifyVisitedTimeTitle() @@ -89,7 +87,6 @@ class HistoryTest { }.enterURLAndEnterToBrowser(firstWebPage.url) { }.openHomeScreen { }.openThreeDotMenu { - }.openLibrary { }.openHistory { openOverflowMenu() clickThreeDotMenuDelete() @@ -105,7 +102,6 @@ class HistoryTest { }.enterURLAndEnterToBrowser(firstWebPage.url) { }.openHomeScreen { }.openThreeDotMenu { - }.openLibrary { }.openHistory { clickDeleteHistoryButton() verifyDeleteConfirmationMessage() @@ -122,7 +118,6 @@ class HistoryTest { }.enterURLAndEnterToBrowser(firstWebPage.url) { }.openHomeScreen { }.openThreeDotMenu { - }.openLibrary { }.openHistory { longTapSelectItem(firstWebPage.url) } @@ -146,7 +141,6 @@ class HistoryTest { }.openHomeScreen { closeTab() }.openThreeDotMenu { - }.openLibrary { }.openHistory { longTapSelectItem(firstWebPage.url) openActionBarOverflowOrOptionsMenu(activityTestRule.getActivity()) @@ -167,7 +161,6 @@ class HistoryTest { }.enterURLAndEnterToBrowser(firstWebPage.url) { }.openHomeScreen { }.openThreeDotMenu { - }.openLibrary { }.openHistory { longTapSelectItem(firstWebPage.url) openActionBarOverflowOrOptionsMenu(activityTestRule.getActivity()) @@ -191,7 +184,6 @@ class HistoryTest { }.enterURLAndEnterToBrowser(secondWebPage.url) { }.openHomeScreen { }.openThreeDotMenu { - }.openLibrary { }.openHistory { longTapSelectItem(firstWebPage.url) longTapSelectItem(secondWebPage.url) @@ -212,7 +204,6 @@ class HistoryTest { }.enterURLAndEnterToBrowser(firstWebPage.url) { }.openHomeScreen { }.openThreeDotMenu { - }.openLibrary { }.openHistory { longTapSelectItem(firstWebPage.url) } @@ -230,18 +221,16 @@ class HistoryTest { fun verifyBackNavigation() { homeScreen { }.openThreeDotMenu { - }.openLibrary { }.openHistory { }.goBack { - verifyLibraryView() + verifyHomeScreen() } } - + @Ignore("Test will be included after back navigation from History Fragment is sorted") @Test fun verifyCloseMenu() { homeScreen { }.openThreeDotMenu { - }.openLibrary { }.openHistory { }.closeMenu { verifyHomeScreen() diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/LibraryMenuTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/LibraryMenuTest.kt index f18ee32ba..ca1ca72b9 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/LibraryMenuTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/LibraryMenuTest.kt @@ -1,18 +1,44 @@ package org.mozilla.fenix.ui +import okhttp3.mockwebserver.MockWebServer +import org.junit.After +import org.junit.Before import org.junit.Rule import org.junit.Test +import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.HomeActivityTestRule -import org.mozilla.fenix.ui.robots.homeScreen +import org.mozilla.fenix.helpers.TestAssetHelper +import org.mozilla.fenix.ui.robots.navigationToolbar +/** + * Tests for verifying basic functionality of Library accessed from browser screen + */ class LibraryMenuTest { + private lateinit var mockWebServer: MockWebServer + private lateinit var defaultWebPage: TestAssetHelper.TestAsset + @get:Rule val activityTestRule = HomeActivityTestRule() + @Before + fun setUp() { + mockWebServer = MockWebServer().apply { + setDispatcher(AndroidAssetDispatcher()) + start() + } + defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1) + } + + @After + fun tearDown() { + mockWebServer.shutdown() + } + @Test fun libraryMenuItemsTest() { - homeScreen { + navigationToolbar { + }.enterURLAndEnterToBrowser(defaultWebPage.url) { }.openThreeDotMenu { }.openLibrary { verifyLibraryView() @@ -23,27 +49,30 @@ class LibraryMenuTest { @Test fun closeMenuButtonTest() { - homeScreen { + navigationToolbar { + }.enterURLAndEnterToBrowser(defaultWebPage.url) { }.openThreeDotMenu { }.openLibrary { }.closeMenu { - verifyHomeScreen() + verifyBrowserScreen() } } @Test fun backButtonTest() { - homeScreen { + navigationToolbar { + }.enterURLAndEnterToBrowser(defaultWebPage.url) { }.openThreeDotMenu { }.openLibrary { }.goBack { - verifyHomeScreen() + verifyBrowserScreen() } } @Test fun bookmarksButtonTest() { - homeScreen { + navigationToolbar { + }.enterURLAndEnterToBrowser(defaultWebPage.url) { }.openThreeDotMenu { }.openLibrary { }.openBookmarks { @@ -53,7 +82,8 @@ class LibraryMenuTest { @Test fun historyButtonTest() { - homeScreen { + navigationToolbar { + }.enterURLAndEnterToBrowser(defaultWebPage.url) { }.openThreeDotMenu { }.openLibrary { }.openHistory { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/ThreeDotMenuMainTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/ThreeDotMenuMainTest.kt index 2c84b5c9f..43c0fefc9 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/ThreeDotMenuMainTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/ThreeDotMenuMainTest.kt @@ -47,23 +47,34 @@ class ThreeDotMenuMainTest { homeScreen { }.openThreeDotMenu { verifySettingsButton() - verifyLibraryButton() + verifyBookmarksButton() + verifyHistoryButton() verifyHelpButton() verifyWhatsNewButton() }.openSettings { verifySettingsView() }.goBack { }.openThreeDotMenu { - }.openLibrary { - verifyLibraryView() - }.goBack { - }.openThreeDotMenu { }.openHelp { verifyHelpUrl() }.openHomeScreen { }.openThreeDotMenu { }.openWhatsNew { verifyWhatsNewURL() + }.openHomeScreen { + } + + homeScreen { + }.openThreeDotMenu { + }.openBookmarks { + verifyBookmarksMenuView() + }.goBack { + } + + homeScreen { + }.openThreeDotMenu { + }.openHistory { + verifyHistoryMenuView() } } } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BookmarksRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BookmarksRobot.kt index 05f756936..9390468e0 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BookmarksRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BookmarksRobot.kt @@ -16,8 +16,6 @@ import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withParent import androidx.test.espresso.matcher.ViewMatchers.withText -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice import org.hamcrest.Matchers.allOf import org.hamcrest.Matchers.containsString import org.mozilla.fenix.R @@ -50,6 +48,8 @@ class BookmarksRobot { fun verifyParentFolderSelector() = assertBookmarkFolderSelector() + fun verifyHomeScreen() = HomeScreenRobot().verifyHomeScreen() + fun clickAddFolderButton() { addFolderButton().click() } @@ -68,13 +68,11 @@ class BookmarksRobot { } class Transition { - val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - - fun goBack(interact: LibraryRobot.() -> Unit): LibraryRobot.Transition { + fun goBack(interact: BookmarksRobot.() -> Unit): BookmarksRobot.Transition { goBackButton().click() - LibraryRobot().interact() - return LibraryRobot.Transition() + BookmarksRobot().interact() + return BookmarksRobot.Transition() } fun openThreeDotMenu(interact: ThreeDotMenuBookmarksRobot.() -> Unit): ThreeDotMenuBookmarksRobot.Transition { 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 5dc780875..ec71d53db 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 @@ -7,13 +7,17 @@ package org.mozilla.fenix.ui.robots import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.matcher.ViewMatchers +import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.By import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.Until +import org.hamcrest.CoreMatchers import org.hamcrest.CoreMatchers.containsString import org.mozilla.fenix.R import org.mozilla.fenix.helpers.TestAssetHelper @@ -22,10 +26,16 @@ import org.mozilla.fenix.helpers.ext.waitNotNull class BrowserRobot { + fun verifyBrowserScreen() { + onView(ViewMatchers.withResourceName("browserLayout")) + .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE))) + } + fun verifyHelpUrl() { val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) val redirectUrl = "https://support.mozilla.org/" - mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/mozac_browser_toolbar_url_view")), TestAssetHelper.waitingTime) + mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/mozac_browser_toolbar_url_view")), + TestAssetHelper.waitingTime) onView(withId(R.id.mozac_browser_toolbar_url_view)) .check(matches(withText(containsString(redirectUrl)))) } @@ -33,7 +43,8 @@ class BrowserRobot { fun verifyWhatsNewURL() { val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) val redirectUrl = "https://support.mozilla.org/" - mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/mozac_browser_toolbar_url_view")), TestAssetHelper.waitingTime) + mDevice.waitNotNull(Until.findObject(By.res("org.mozilla.fenix.debug:id/mozac_browser_toolbar_url_view")), + TestAssetHelper.waitingTime) onView(withId(R.id.mozac_browser_toolbar_url_view)) .check(matches(withText(containsString(redirectUrl)))) } @@ -58,6 +69,21 @@ class BrowserRobot { class Transition { private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) + private fun threeDotButton() = onView( + CoreMatchers.allOf( + ViewMatchers.withContentDescription( + "Menu" + ) + ) + ) + + fun openThreeDotMenu(interact: ThreeDotMenuMainRobot.() -> Unit): ThreeDotMenuMainRobot.Transition { + mDevice.waitForIdle() + threeDotButton().perform(ViewActions.click()) + + ThreeDotMenuMainRobot().interact() + return ThreeDotMenuMainRobot.Transition() + } fun openNavigationToolbar(interact: NavigationToolbarRobot.() -> Unit): NavigationToolbarRobot.Transition { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HistoryRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HistoryRobot.kt index b4f01d0b5..503b07302 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HistoryRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HistoryRobot.kt @@ -37,6 +37,8 @@ class HistoryRobot { fun verifyDeleteConfirmationMessage() = assertDeleteConfirmationMessage() + fun verifyHomeScreen() = HomeScreenRobot().verifyHomeScreen() + fun openOverflowMenu() { overflowMenu().click() } @@ -57,18 +59,18 @@ class HistoryRobot { } class Transition { - fun goBack(interact: LibraryRobot.() -> Unit): LibraryRobot.Transition { + fun goBack(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition { goBackButton().click() - LibraryRobot().interact() - return LibraryRobot.Transition() + HistoryRobot().interact() + return HistoryRobot.Transition() } - fun closeMenu(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition { + fun closeMenu(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition { closeButton().click() - HomeScreenRobot().interact() - return HomeScreenRobot.Transition() + HistoryRobot().interact() + return HistoryRobot.Transition() } } } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/LibraryRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/LibraryRobot.kt index 1d00155d3..ff5a298bb 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/LibraryRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/LibraryRobot.kt @@ -35,20 +35,20 @@ class LibraryRobot { val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - fun goBack(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition { + fun goBack(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition { mDevice.waitForIdle() goBackButton().perform(click()) - HomeScreenRobot().interact() - return HomeScreenRobot.Transition() + BrowserRobot().interact() + return BrowserRobot.Transition() } - fun closeMenu(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition { + fun closeMenu(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition { closeButton().click() - HomeScreenRobot().interact() - return HomeScreenRobot.Transition() + BrowserRobot().interact() + return BrowserRobot.Transition() } fun openBookmarks(interact: BookmarksRobot.() -> Unit): BookmarksRobot.Transition { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/ThreeDotMenuMainRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/ThreeDotMenuMainRobot.kt index 88e5cafa7..f6ca35c39 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/ThreeDotMenuMainRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/ThreeDotMenuMainRobot.kt @@ -33,6 +33,8 @@ import org.mozilla.fenix.share.ShareFragment class ThreeDotMenuMainRobot { fun verifySettingsButton() = assertSettingsButton() fun verifyLibraryButton() = assertLibraryButton() + fun verifyHistoryButton() = assertHistoryButton() + fun verifyBookmarksButton() = assertBookmarksButton() fun verifyHelpButton() = assertHelpButton() fun verifyThreeDotMenuExists() = threeDotMenuRecyclerViewExists() fun verifyForwardButton() = assertForwardButton() @@ -80,6 +82,22 @@ class ThreeDotMenuMainRobot { return LibraryRobot.Transition() } + fun openBookmarks(interact: BookmarksRobot.() -> Unit): BookmarksRobot.Transition { + mDevice.waitNotNull(Until.findObject(By.text("Bookmarks")), waitingTime) + bookmarksButton().click() + + BookmarksRobot().interact() + return BookmarksRobot.Transition() + } + + fun openHistory(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition { + mDevice.waitNotNull(Until.findObject(By.text("History")), waitingTime) + historyButton().click() + + HistoryRobot().interact() + return HistoryRobot.Transition() + } + fun openHelp(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition { mDevice.waitNotNull(Until.findObject(By.text("Help")), waitingTime) helpButton().click() @@ -160,6 +178,14 @@ private fun libraryButton() = onView(allOf(withText(R.string.browser_menu_your_l private fun assertLibraryButton() = libraryButton() .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE))) +private fun historyButton() = onView(allOf(withText(R.string.library_history))) +private fun assertHistoryButton() = historyButton() + .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE))) + +private fun bookmarksButton() = onView(allOf(withText(R.string.library_bookmarks))) +private fun assertBookmarksButton() = bookmarksButton() + .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE))) + private fun helpButton() = onView(allOf(withText(R.string.browser_menu_help))) private fun assertHelpButton() = helpButton() .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))