|
|
@ -9,6 +9,7 @@ package org.mozilla.fenix.ui.robots
|
|
|
|
import android.view.View
|
|
|
|
import android.view.View
|
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
|
|
import androidx.test.espresso.Espresso.onView
|
|
|
|
import androidx.test.espresso.Espresso.onView
|
|
|
|
|
|
|
|
import androidx.test.espresso.Espresso.pressBack
|
|
|
|
import androidx.test.espresso.UiController
|
|
|
|
import androidx.test.espresso.UiController
|
|
|
|
import androidx.test.espresso.ViewAction
|
|
|
|
import androidx.test.espresso.ViewAction
|
|
|
|
import androidx.test.espresso.action.ViewActions
|
|
|
|
import androidx.test.espresso.action.ViewActions
|
|
|
@ -44,8 +45,10 @@ import org.mozilla.fenix.share.ShareFragment
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
class ThreeDotMenuMainRobot {
|
|
|
|
class ThreeDotMenuMainRobot {
|
|
|
|
fun verifySettingsButton() = assertSettingsButton()
|
|
|
|
fun verifySettingsButton() = assertSettingsButton()
|
|
|
|
|
|
|
|
fun verifyAddOnsButton() = assertAddOnsButton()
|
|
|
|
fun verifyHistoryButton() = assertHistoryButton()
|
|
|
|
fun verifyHistoryButton() = assertHistoryButton()
|
|
|
|
fun verifyBookmarksButton() = assertBookmarksButton()
|
|
|
|
fun verifyBookmarksButton() = assertBookmarksButton()
|
|
|
|
|
|
|
|
fun verifySyncedTabsButton() = assertSyncedTabsButton()
|
|
|
|
fun verifyHelpButton() = assertHelpButton()
|
|
|
|
fun verifyHelpButton() = assertHelpButton()
|
|
|
|
fun verifyThreeDotMenuExists() = threeDotMenuRecyclerViewExists()
|
|
|
|
fun verifyThreeDotMenuExists() = threeDotMenuRecyclerViewExists()
|
|
|
|
fun verifyForwardButton() = assertForwardButton()
|
|
|
|
fun verifyForwardButton() = assertForwardButton()
|
|
|
@ -106,12 +109,40 @@ class ThreeDotMenuMainRobot {
|
|
|
|
fun verifyShareALinkTitle() = assertShareALinkTitle()
|
|
|
|
fun verifyShareALinkTitle() = assertShareALinkTitle()
|
|
|
|
fun verifyWhatsNewButton() = assertWhatsNewButton()
|
|
|
|
fun verifyWhatsNewButton() = assertWhatsNewButton()
|
|
|
|
fun verifyAddFirefoxHome() = assertAddToFirefoxHome()
|
|
|
|
fun verifyAddFirefoxHome() = assertAddToFirefoxHome()
|
|
|
|
|
|
|
|
fun verifyAddToMobileHome() = assertAddToMobileHome()
|
|
|
|
|
|
|
|
fun verifyDesktopSite() = assertDesktopSite()
|
|
|
|
|
|
|
|
fun verifyOpenInAppButton() = assertOpenInAppButton()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun verifyThreeDotMainMenuItems() {
|
|
|
|
|
|
|
|
verifyAddOnsButton()
|
|
|
|
|
|
|
|
verifyHistoryButton()
|
|
|
|
|
|
|
|
verifyBookmarksButton()
|
|
|
|
|
|
|
|
verifySyncedTabsButton()
|
|
|
|
|
|
|
|
verifySettingsButton()
|
|
|
|
|
|
|
|
verifyFindInPageButton()
|
|
|
|
|
|
|
|
verifyAddFirefoxHome()
|
|
|
|
|
|
|
|
verifyAddToMobileHome()
|
|
|
|
|
|
|
|
verifyDesktopSite()
|
|
|
|
|
|
|
|
verifyAddBookmarkButton()
|
|
|
|
|
|
|
|
verifyShareButton()
|
|
|
|
|
|
|
|
verifyForwardButton()
|
|
|
|
|
|
|
|
verifyRefreshButton()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class Transition {
|
|
|
|
class Transition {
|
|
|
|
|
|
|
|
|
|
|
|
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
|
|
|
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun clickAddOnsReportSiteIssue(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
|
|
|
|
|
|
|
addOnsButton().click()
|
|
|
|
|
|
|
|
addOnsReportSiteIssueButton().click()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BrowserRobot().interact()
|
|
|
|
|
|
|
|
return BrowserRobot.Transition()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fun openSettings(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
|
|
|
fun openSettings(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
|
|
|
|
|
|
|
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
|
|
|
onView(allOf(withResourceName("text"), withText(R.string.browser_menu_settings)))
|
|
|
|
onView(allOf(withResourceName("text"), withText(R.string.browser_menu_settings)))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(isCompletelyDisplayed()))
|
|
|
|
.check(matches(isCompletelyDisplayed()))
|
|
|
@ -121,7 +152,17 @@ class ThreeDotMenuMainRobot {
|
|
|
|
return SettingsRobot.Transition()
|
|
|
|
return SettingsRobot.Transition()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun openSyncedTabs(interact: SyncedTabsRobot.() -> Unit): SyncedTabsRobot.Transition {
|
|
|
|
|
|
|
|
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
|
|
|
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.text("Synced tabs")), waitingTime)
|
|
|
|
|
|
|
|
syncedTabsButton().click()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SyncedTabsRobot().interact()
|
|
|
|
|
|
|
|
return SyncedTabsRobot.Transition()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fun openBookmarks(interact: BookmarksRobot.() -> Unit): BookmarksRobot.Transition {
|
|
|
|
fun openBookmarks(interact: BookmarksRobot.() -> Unit): BookmarksRobot.Transition {
|
|
|
|
|
|
|
|
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.text("Bookmarks")), waitingTime)
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.text("Bookmarks")), waitingTime)
|
|
|
|
bookmarksButton().click()
|
|
|
|
bookmarksButton().click()
|
|
|
|
|
|
|
|
|
|
|
@ -130,6 +171,7 @@ class ThreeDotMenuMainRobot {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fun openHistory(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition {
|
|
|
|
fun openHistory(interact: HistoryRobot.() -> Unit): HistoryRobot.Transition {
|
|
|
|
|
|
|
|
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.text("History")), waitingTime)
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.text("History")), waitingTime)
|
|
|
|
historyButton().click()
|
|
|
|
historyButton().click()
|
|
|
|
|
|
|
|
|
|
|
@ -137,6 +179,23 @@ class ThreeDotMenuMainRobot {
|
|
|
|
return HistoryRobot.Transition()
|
|
|
|
return HistoryRobot.Transition()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun bookmarkPage(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
|
|
|
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.desc("Bookmark")), waitingTime)
|
|
|
|
|
|
|
|
addBookmarkButton().click()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BrowserRobot().interact()
|
|
|
|
|
|
|
|
return BrowserRobot.Transition()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun sharePage(interact: LibrarySubMenusMultipleSelectionToolbarRobot.() -> Unit): LibrarySubMenusMultipleSelectionToolbarRobot.Transition {
|
|
|
|
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.desc("Share")), waitingTime)
|
|
|
|
|
|
|
|
shareButton().click()
|
|
|
|
|
|
|
|
pressBack()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LibrarySubMenusMultipleSelectionToolbarRobot().interact()
|
|
|
|
|
|
|
|
return LibrarySubMenusMultipleSelectionToolbarRobot.Transition()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fun openHelp(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
|
|
|
fun openHelp(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.text("Help")), waitingTime)
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.text("Help")), waitingTime)
|
|
|
|
helpButton().click()
|
|
|
|
helpButton().click()
|
|
|
@ -163,6 +222,13 @@ class ThreeDotMenuMainRobot {
|
|
|
|
return BrowserRobot.Transition()
|
|
|
|
return BrowserRobot.Transition()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun goBackToBrowser(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
|
|
|
|
|
|
|
mDevice.pressBack()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BrowserRobot().interact()
|
|
|
|
|
|
|
|
return BrowserRobot.Transition()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fun close(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
|
|
|
|
fun close(interact: HomeScreenRobot.() -> Unit): HomeScreenRobot.Transition {
|
|
|
|
// Close three dot
|
|
|
|
// Close three dot
|
|
|
|
mDevice.pressBack()
|
|
|
|
mDevice.pressBack()
|
|
|
@ -196,6 +262,7 @@ class ThreeDotMenuMainRobot {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fun openFindInPage(interact: FindInPageRobot.() -> Unit): FindInPageRobot.Transition {
|
|
|
|
fun openFindInPage(interact: FindInPageRobot.() -> Unit): FindInPageRobot.Transition {
|
|
|
|
|
|
|
|
onView(withId(R.id.mozac_browser_menu_recyclerView)).perform(ViewActions.swipeDown())
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.text("Find in page")), waitingTime)
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.text("Find in page")), waitingTime)
|
|
|
|
findInPageButton().click()
|
|
|
|
findInPageButton().click()
|
|
|
|
|
|
|
|
|
|
|
@ -274,6 +341,13 @@ class ThreeDotMenuMainRobot {
|
|
|
|
HomeScreenRobot().interact()
|
|
|
|
HomeScreenRobot().interact()
|
|
|
|
return HomeScreenRobot.Transition()
|
|
|
|
return HomeScreenRobot.Transition()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun openSaveToCollection(interact: ThreeDotMenuMainRobot.() -> Unit): ThreeDotMenuMainRobot.Transition {
|
|
|
|
|
|
|
|
mDevice.waitNotNull(Until.findObject(By.text("Save to collection")), waitingTime)
|
|
|
|
|
|
|
|
saveCollectionButton().click()
|
|
|
|
|
|
|
|
ThreeDotMenuMainRobot().interact()
|
|
|
|
|
|
|
|
return ThreeDotMenuMainRobot.Transition()
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -286,6 +360,11 @@ private fun assertSettingsButton() = settingsButton()
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(isCompletelyDisplayed()))
|
|
|
|
.check(matches(isCompletelyDisplayed()))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun addOnsButton() = onView(allOf(withText("Add-ons")))
|
|
|
|
|
|
|
|
private fun assertAddOnsButton() = addOnsButton()
|
|
|
|
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
|
|
|
|
private fun addOnsReportSiteIssueButton() = onView(allOf(withText("Report Site Issue…")))
|
|
|
|
|
|
|
|
|
|
|
|
private fun historyButton() = onView(allOf(withText(R.string.library_history)))
|
|
|
|
private fun historyButton() = onView(allOf(withText(R.string.library_history)))
|
|
|
|
private fun assertHistoryButton() = historyButton()
|
|
|
|
private fun assertHistoryButton() = historyButton()
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
@ -294,6 +373,10 @@ private fun bookmarksButton() = onView(allOf(withText(R.string.library_bookmarks
|
|
|
|
private fun assertBookmarksButton() = bookmarksButton()
|
|
|
|
private fun assertBookmarksButton() = bookmarksButton()
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun syncedTabsButton() = onView(allOf(withText(R.string.library_synced_tabs)))
|
|
|
|
|
|
|
|
private fun assertSyncedTabsButton() = syncedTabsButton()
|
|
|
|
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
|
|
|
|
|
|
|
|
private fun helpButton() = onView(allOf(withText(R.string.browser_menu_help)))
|
|
|
|
private fun helpButton() = onView(allOf(withText(R.string.browser_menu_help)))
|
|
|
|
private fun assertHelpButton() = helpButton()
|
|
|
|
private fun assertHelpButton() = helpButton()
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
@ -399,3 +482,36 @@ private fun assertAddToFirefoxHome() {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun addToMobileHomeButton() =
|
|
|
|
|
|
|
|
onView(allOf(withText(R.string.browser_menu_add_to_homescreen)))
|
|
|
|
|
|
|
|
private fun assertAddToMobileHome() {
|
|
|
|
|
|
|
|
onView(withId(R.id.mozac_browser_menu_recyclerView))
|
|
|
|
|
|
|
|
.perform(
|
|
|
|
|
|
|
|
RecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
|
|
|
|
|
|
|
|
hasDescendant(withText(R.string.browser_menu_add_to_homescreen))
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun desktopSiteButton() =
|
|
|
|
|
|
|
|
onView(allOf(withText(R.string.browser_menu_desktop_site)))
|
|
|
|
|
|
|
|
private fun assertDesktopSite() {
|
|
|
|
|
|
|
|
onView(withId(R.id.mozac_browser_menu_recyclerView))
|
|
|
|
|
|
|
|
.perform(
|
|
|
|
|
|
|
|
RecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
|
|
|
|
|
|
|
|
hasDescendant(withText(R.string.browser_menu_desktop_site))
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun openInAppButton() =
|
|
|
|
|
|
|
|
onView(allOf(withText(R.string.browser_menu_open_app_link)))
|
|
|
|
|
|
|
|
private fun assertOpenInAppButton() {
|
|
|
|
|
|
|
|
onView(withId(R.id.mozac_browser_menu_recyclerView))
|
|
|
|
|
|
|
|
.perform(
|
|
|
|
|
|
|
|
RecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
|
|
|
|
|
|
|
|
hasDescendant(withText(R.string.browser_menu_open_app_link))
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
).check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
|
|
|
|
}
|
|
|
|