Collection UI Test added, but set to disabled until Collection is refactored (#6160)
parent
11c07e6b3a
commit
ad94d49f24
|
@ -1,4 +1,7 @@
|
||||||
<html>
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Test_Page_1</title>
|
||||||
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>
|
<h1>
|
||||||
<p id="testContent">Page content: 1</p>
|
<p id="testContent">Page content: 1</p>
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
<html>
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Test_Page_2</title>
|
||||||
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>
|
<h1>
|
||||||
<p id="testContent">Page content: 2</p>
|
<p id="testContent">Page content: 2</p>
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
<html>
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Test_Page_3</title>
|
||||||
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>
|
<h1>
|
||||||
<p id="testContent">Page content: 3</p>
|
<p id="testContent">Page content: 3</p>
|
||||||
|
|
|
@ -4,25 +4,37 @@
|
||||||
|
|
||||||
package org.mozilla.fenix.ui
|
package org.mozilla.fenix.ui
|
||||||
|
|
||||||
|
import android.net.Uri
|
||||||
|
import androidx.test.espresso.Espresso.onView
|
||||||
|
import androidx.test.espresso.NoMatchingViewException
|
||||||
|
import androidx.test.espresso.assertion.ViewAssertions
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers
|
||||||
import androidx.test.platform.app.InstrumentationRegistry
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.By
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import androidx.test.uiautomator.Until
|
||||||
import okhttp3.mockwebserver.MockWebServer
|
import okhttp3.mockwebserver.MockWebServer
|
||||||
import org.junit.Rule
|
import org.junit.Ignore
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Ignore
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.mozilla.fenix.R
|
||||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||||
|
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||||
|
import org.mozilla.fenix.helpers.click
|
||||||
|
import org.mozilla.fenix.ui.robots.browserScreen
|
||||||
|
import org.mozilla.fenix.ui.robots.homeScreen
|
||||||
|
import org.mozilla.fenix.ui.robots.navigationToolbar
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for verifying basic functionality of history
|
* Tests for verifying basic functionality of tab collection
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class CollectionTest {
|
class CollectionTest {
|
||||||
/* ktlint-disable no-blank-line-before-rbrace */ // This imposes unreadable grouping.
|
/* ktlint-disable no-blank-line-before-rbrace */ // This imposes unreadable grouping.
|
||||||
|
|
||||||
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
private lateinit var mockWebServer: MockWebServer
|
private lateinit var mockWebServer: MockWebServer
|
||||||
|
|
||||||
|
@ -42,31 +54,162 @@ class CollectionTest {
|
||||||
mockWebServer.shutdown()
|
mockWebServer.shutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("not implemented")
|
|
||||||
@Test
|
@Test
|
||||||
fun AddTabToCollectionTest() {
|
@Ignore("Temp disable test - see: https://github.com/mozilla-mobile/fenix/issues/5793")
|
||||||
// open a webpage, and add currently opened tab to existing collection
|
// open a webpage, and add currently opened tab to existing collection
|
||||||
|
fun addTabToCollectionTest() {
|
||||||
|
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
||||||
|
val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
|
||||||
|
|
||||||
|
createCollection(firstWebPage.url, "testcollection_1")
|
||||||
|
|
||||||
|
// Close the open tab
|
||||||
|
homeScreen {
|
||||||
|
verifyHomeScreen()
|
||||||
|
}
|
||||||
|
onView(ViewMatchers.withId(R.id.close_tab_button)).click()
|
||||||
|
|
||||||
|
// On homeview, open another webpage
|
||||||
|
navigationToolbar {
|
||||||
|
}.enterURLAndEnterToBrowser(secondWebPage.url) {
|
||||||
|
verifyPageContent(secondWebPage.content)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save the current page to the testcollection_1
|
||||||
|
navigationToolbar {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
// click save to collection menu item, type collection name
|
||||||
|
clickBrowserViewSaveCollectionButton()
|
||||||
|
org.mozilla.fenix.ui.robots.mDevice.wait(
|
||||||
|
Until.findObject(By.text("testcollection_1")),
|
||||||
|
TestAssetHelper.waitingTime)
|
||||||
|
onView(ViewMatchers.withText("testcollection_1")).click()
|
||||||
|
mDevice.pressBack() // go to main page
|
||||||
|
}
|
||||||
|
|
||||||
|
// close currently opened tab
|
||||||
|
homeScreen {
|
||||||
|
verifyHomeScreen()
|
||||||
|
onView(ViewMatchers.withId(R.id.close_tab_button)).click()
|
||||||
|
org.mozilla.fenix.ui.robots.mDevice.wait(
|
||||||
|
Until.findObject(By.text("testcollection_1")),
|
||||||
|
TestAssetHelper.waitingTime)
|
||||||
|
// On homeview, expand the collection and open the first saved page
|
||||||
|
onView(ViewMatchers.withText("testcollection_1")).click()
|
||||||
|
onView(ViewMatchers.withText("Test_Page_1")).click()
|
||||||
|
}
|
||||||
|
// Page content: 1
|
||||||
|
browserScreen {
|
||||||
|
verifyPageContent("Page content: 1")
|
||||||
|
mDevice.pressBack() // go to main page
|
||||||
|
}
|
||||||
|
|
||||||
|
// tab_in_collection_item
|
||||||
|
homeScreen {
|
||||||
|
verifyHomeScreen()
|
||||||
|
onView(ViewMatchers.withId(R.id.close_tab_button)).click()
|
||||||
|
// On homeview, expand the collection and open the first saved page
|
||||||
|
org.mozilla.fenix.ui.robots.mDevice.wait(
|
||||||
|
Until.findObject(By.text("Test_Page_2")),
|
||||||
|
TestAssetHelper.waitingTime)
|
||||||
|
onView(ViewMatchers.withText("Test_Page_2")).click()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Page content: 2
|
||||||
|
browserScreen {
|
||||||
|
verifyPageContent("Page content: 2")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("not implemented")
|
|
||||||
@Test
|
@Test
|
||||||
fun OpenTabFromCollectionTest() {
|
@Ignore("Temp disable test - see: https://github.com/mozilla-mobile/fenix/issues/5793")
|
||||||
// Open one tab from Collection in the Homescreen view
|
// Rename Collection from the Homescreen
|
||||||
|
fun renameCollectionTest() {
|
||||||
|
|
||||||
|
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
||||||
|
|
||||||
|
createCollection(firstWebPage.url, "testcollection_1")
|
||||||
|
|
||||||
|
homeScreen {
|
||||||
|
// On homeview, tap the 3-dot button to expand, select rename, rename collection
|
||||||
|
clickCollectionThreeDotButton()
|
||||||
|
selectRenameCollection()
|
||||||
|
typeCollectionName("renamed_collection")
|
||||||
|
mDevice.wait(Until.findObject(By.text("renamed_collection")), TestAssetHelper.waitingTime)
|
||||||
|
// Verify the new name is displayed on homeview
|
||||||
|
onView(ViewMatchers.withText("renamed_collection"))
|
||||||
|
.check(ViewAssertions
|
||||||
|
.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("not implemented")
|
|
||||||
@Test
|
@Test
|
||||||
fun RenameCollectionTest() {
|
@Ignore("Temp disable test - see: https://github.com/mozilla-mobile/fenix/issues/5793")
|
||||||
// Rename Collection from the Homescreen
|
// Delete Collection from the Homescreen
|
||||||
|
fun deleteCollectionTest() {
|
||||||
|
|
||||||
|
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
||||||
|
|
||||||
|
createCollection(firstWebPage.url, "testcollection_1")
|
||||||
|
|
||||||
|
homeScreen {
|
||||||
|
// Choose delete collection from homeview, and confirm
|
||||||
|
clickCollectionThreeDotButton()
|
||||||
|
selectDeleteCollection()
|
||||||
|
confirmDeleteCollection()
|
||||||
|
|
||||||
|
// Check for No collections caption
|
||||||
|
onView(ViewMatchers.withText("No collections"))
|
||||||
|
.check(ViewAssertions
|
||||||
|
.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("not implemented")
|
|
||||||
@Test
|
@Test
|
||||||
fun DeleteCollectionTest() {
|
@Ignore("Temp disable test - see: https://github.com/mozilla-mobile/fenix/issues/5793")
|
||||||
// Delete Collection from the Homescreen
|
fun createCollectionTest() {
|
||||||
|
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
||||||
|
val secondWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 2)
|
||||||
|
|
||||||
|
createCollection(firstWebPage.url, "testcollection_1")
|
||||||
|
createCollection(secondWebPage.url, "testcollection_2", false)
|
||||||
|
|
||||||
|
// On the main screen, swipe to bottom until the collections are shown
|
||||||
|
homeScreen {
|
||||||
|
// swipe to bottom until the collections are shown
|
||||||
|
verifyHomeScreen()
|
||||||
|
try {
|
||||||
|
onView(ViewMatchers.withText("testcollection_1"))
|
||||||
|
.check(ViewAssertions
|
||||||
|
.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
} catch (e: NoMatchingViewException) {
|
||||||
|
scrollToElementByText("testcollection_1")
|
||||||
|
}
|
||||||
|
onView(ViewMatchers.withText("testcollection_2")).check(ViewAssertions
|
||||||
|
.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun CreateCollection() {
|
private fun createCollection(url: Uri, collectionName: String, firstCollection: Boolean = true) {
|
||||||
// Open 3 webpages, and save each of them to a single collection
|
val firstWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
||||||
|
|
||||||
|
// Open a webpage and save to collection "testcollection_1"
|
||||||
|
navigationToolbar {
|
||||||
|
}.enterURLAndEnterToBrowser(url) {
|
||||||
|
verifyPageContent(firstWebPage.content)
|
||||||
|
}
|
||||||
|
navigationToolbar {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
// click save to collection menu item, type collection name
|
||||||
|
clickBrowserViewSaveCollectionButton()
|
||||||
|
if (!firstCollection)
|
||||||
|
clickAddNewCollection()
|
||||||
|
|
||||||
|
}.typeCollectionName(collectionName) {}
|
||||||
|
|
||||||
|
mDevice.pressBack() // go to main page
|
||||||
|
org.mozilla.fenix.ui.robots.mDevice.wait(
|
||||||
|
Until.findObject(By.text(collectionName)),
|
||||||
|
TestAssetHelper.waitingTime)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,11 @@ class BrowserRobot {
|
||||||
.check((matches(withText(containsString(expectedText)))))
|
.check((matches(withText(containsString(expectedText)))))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun waitForCollectionSavedPopup() {
|
||||||
|
mDevice.wait(Until.findObject(By.text("Tab saved!")),
|
||||||
|
TestAssetHelper.waitingTime)
|
||||||
|
}
|
||||||
|
|
||||||
class Transition {
|
class Transition {
|
||||||
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
|
@ -94,6 +99,10 @@ fun browserScreen(interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun dismissOnboardingButton() = onView(withId(R.id.close_onboarding))
|
private fun dismissOnboardingButton() = onView(withId(R.id.close_onboarding))
|
||||||
|
fun dismissTrackingOnboarding() {
|
||||||
|
mDevice.wait(Until.findObject(By.res("close_onboarding")), TestAssetHelper.waitingTime)
|
||||||
|
dismissOnboardingButton().click()
|
||||||
|
}
|
||||||
|
|
||||||
fun navURLBar() = onView(withId(R.id.mozac_browser_toolbar_url_view))
|
fun navURLBar() = onView(withId(R.id.mozac_browser_toolbar_url_view))
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
package org.mozilla.fenix.ui.robots
|
package org.mozilla.fenix.ui.robots
|
||||||
|
|
||||||
import androidx.test.espresso.Espresso.onView
|
import androidx.test.espresso.Espresso.onView
|
||||||
|
import androidx.test.espresso.action.ViewActions
|
||||||
import androidx.test.espresso.action.ViewActions.click
|
import androidx.test.espresso.action.ViewActions.click
|
||||||
import androidx.test.espresso.assertion.ViewAssertions.doesNotExist
|
import androidx.test.espresso.assertion.ViewAssertions.doesNotExist
|
||||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||||
|
@ -14,7 +15,10 @@ import androidx.test.espresso.matcher.ViewMatchers
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.Visibility
|
import androidx.test.espresso.matcher.ViewMatchers.Visibility
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
|
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.hasFocus
|
||||||
import androidx.test.platform.app.InstrumentationRegistry
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.Until
|
||||||
|
import androidx.test.uiautomator.By
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import androidx.test.uiautomator.UiScrollable
|
import androidx.test.uiautomator.UiScrollable
|
||||||
import androidx.test.uiautomator.UiSelector
|
import androidx.test.uiautomator.UiSelector
|
||||||
|
@ -22,6 +26,8 @@ import org.hamcrest.CoreMatchers
|
||||||
import org.hamcrest.Matchers.allOf
|
import org.hamcrest.Matchers.allOf
|
||||||
import org.hamcrest.Matchers.containsString
|
import org.hamcrest.Matchers.containsString
|
||||||
import org.mozilla.fenix.R
|
import org.mozilla.fenix.R
|
||||||
|
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
||||||
|
import org.mozilla.fenix.helpers.click
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of Robot Pattern for the home screen menu.
|
* Implementation of Robot Pattern for the home screen menu.
|
||||||
|
@ -75,12 +81,34 @@ class HomeScreenRobot {
|
||||||
|
|
||||||
fun verifyExistingTabList() = assertExistingTabList()
|
fun verifyExistingTabList() = assertExistingTabList()
|
||||||
|
|
||||||
private fun scrollToElementByText(text: String): UiScrollable {
|
// Collections element
|
||||||
|
fun clickCollectionThreeDotButton() {
|
||||||
|
collectionThreeDotButton().click()
|
||||||
|
mDevice.wait(Until.findObject(By.text("Delete collection")), waitingTime)
|
||||||
|
}
|
||||||
|
fun selectRenameCollection() {
|
||||||
|
onView(allOf(ViewMatchers.withText("Rename collection"))).click()
|
||||||
|
mDevice.wait(Until.findObject(By.res("org.mozilla.fenix.debug:id/name_collection_edittext")), waitingTime)
|
||||||
|
}
|
||||||
|
fun selectDeleteCollection() {
|
||||||
|
onView(allOf(ViewMatchers.withText("Delete collection"))).click()
|
||||||
|
mDevice.wait(Until.findObject(By.res("message")), waitingTime)
|
||||||
|
}
|
||||||
|
fun confirmDeleteCollection() {
|
||||||
|
onView(allOf(ViewMatchers.withText("DELETE"))).click()
|
||||||
|
mDevice.wait(Until.findObject(By.res("org.mozilla.fenix.debug:id/collections_header")), waitingTime)
|
||||||
|
}
|
||||||
|
fun typeCollectionName(name: String) {
|
||||||
|
mDevice.wait(Until.findObject(By.res("org.mozilla.fenix.debug:id/name_collection_edittext")), waitingTime)
|
||||||
|
collectionNameTextField().check(matches(hasFocus()))
|
||||||
|
collectionNameTextField().perform(ViewActions.replaceText(name))
|
||||||
|
collectionNameTextField().perform(ViewActions.pressImeActionButton())
|
||||||
|
}
|
||||||
|
fun scrollToElementByText(text: String): UiScrollable {
|
||||||
val appView = UiScrollable(UiSelector().scrollable(true))
|
val appView = UiScrollable(UiSelector().scrollable(true))
|
||||||
appView.scrollTextIntoView(text)
|
appView.scrollTextIntoView(text)
|
||||||
return appView
|
return appView
|
||||||
}
|
}
|
||||||
|
|
||||||
fun swipeUpToDismissFirstRun() {
|
fun swipeUpToDismissFirstRun() {
|
||||||
scrollToElementByText("Start browsing")
|
scrollToElementByText("Start browsing")
|
||||||
}
|
}
|
||||||
|
@ -321,3 +349,7 @@ private fun assertExistingTabList() =
|
||||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun tabsListThreeDotButton() = onView(allOf(ViewMatchers.withId(R.id.tabs_overflow_button)))
|
private fun tabsListThreeDotButton() = onView(allOf(ViewMatchers.withId(R.id.tabs_overflow_button)))
|
||||||
|
|
||||||
|
private fun collectionThreeDotButton() = onView(allOf(ViewMatchers.withId(R.id.collection_overflow_button)))
|
||||||
|
|
||||||
|
private fun collectionNameTextField() = onView(allOf(ViewMatchers.withResourceName("name_collection_edittext"), hasFocus()))
|
||||||
|
|
|
@ -7,11 +7,14 @@
|
||||||
package org.mozilla.fenix.ui.robots
|
package org.mozilla.fenix.ui.robots
|
||||||
|
|
||||||
import androidx.test.espresso.Espresso.onView
|
import androidx.test.espresso.Espresso.onView
|
||||||
|
import androidx.test.espresso.action.ViewActions
|
||||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||||
import androidx.test.espresso.matcher.ViewMatchers
|
import androidx.test.espresso.matcher.ViewMatchers
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
import androidx.test.espresso.matcher.ViewMatchers.hasFocus
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withResourceName
|
import androidx.test.espresso.matcher.ViewMatchers.withResourceName
|
||||||
import androidx.test.platform.app.InstrumentationRegistry
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.By
|
import androidx.test.uiautomator.By
|
||||||
|
@ -44,6 +47,13 @@ class ThreeDotMenuMainRobot {
|
||||||
|
|
||||||
fun verifyShareTabButton() = assertShareTabButton()
|
fun verifyShareTabButton() = assertShareTabButton()
|
||||||
fun verifySaveCollection() = assertSaveCollectionButton()
|
fun verifySaveCollection() = assertSaveCollectionButton()
|
||||||
|
fun clickBrowserViewSaveCollectionButton() {
|
||||||
|
browserViewSaveCollectionButton().click()
|
||||||
|
}
|
||||||
|
fun clickAddNewCollection() {
|
||||||
|
addNewCollectionButton().click()
|
||||||
|
}
|
||||||
|
fun verifyCollectionNameTextField() = assertCollectionNameTextField()
|
||||||
fun verifyFindInPageButton() = assertFindInPageButton()
|
fun verifyFindInPageButton() = assertFindInPageButton()
|
||||||
fun verifyShareScrim() = assertShareScrim()
|
fun verifyShareScrim() = assertShareScrim()
|
||||||
fun verifySendToDeviceTitle() = assertSendToDeviceTitle()
|
fun verifySendToDeviceTitle() = assertSendToDeviceTitle()
|
||||||
|
@ -125,6 +135,16 @@ class ThreeDotMenuMainRobot {
|
||||||
BrowserRobot().interact()
|
BrowserRobot().interact()
|
||||||
return BrowserRobot.Transition()
|
return BrowserRobot.Transition()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun typeCollectionName(name: String, interact: BrowserRobot.() -> Unit): BrowserRobot.Transition {
|
||||||
|
mDevice.wait(Until.findObject(By.res("org.mozilla.fenix.debug:id/name_collection_edittext")), waitingTime)
|
||||||
|
|
||||||
|
collectionNameTextField().check(matches(hasFocus()))
|
||||||
|
collectionNameTextField().perform(ViewActions.replaceText(name), ViewActions.pressImeActionButton())
|
||||||
|
|
||||||
|
BrowserRobot().interact()
|
||||||
|
return BrowserRobot.Transition()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,43 +154,54 @@ private fun threeDotMenuRecyclerViewExists() {
|
||||||
|
|
||||||
private fun settingsButton() = onView(allOf(withText(R.string.settings)))
|
private fun settingsButton() = onView(allOf(withText(R.string.settings)))
|
||||||
private fun assertSettingsButton() = settingsButton()
|
private fun assertSettingsButton() = settingsButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun libraryButton() = onView(allOf(withText(R.string.browser_menu_your_library)))
|
private fun libraryButton() = onView(allOf(withText(R.string.browser_menu_your_library)))
|
||||||
private fun assertLibraryButton() = libraryButton()
|
private fun assertLibraryButton() = libraryButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.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(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun forwardButton() = onView(ViewMatchers.withContentDescription("Forward"))
|
private fun forwardButton() = onView(ViewMatchers.withContentDescription("Forward"))
|
||||||
private fun assertForwardButton() = forwardButton()
|
private fun assertForwardButton() = forwardButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun backButton() = onView(ViewMatchers.withContentDescription("Back"))
|
private fun backButton() = onView(ViewMatchers.withContentDescription("Back"))
|
||||||
private fun assertBackButton() = backButton()
|
private fun assertBackButton() = backButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun refreshButton() = onView(ViewMatchers.withContentDescription("Refresh"))
|
private fun refreshButton() = onView(ViewMatchers.withContentDescription("Refresh"))
|
||||||
private fun assertRefreshButton() = refreshButton()
|
private fun assertRefreshButton() = refreshButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun closeAllTabsButton() = onView(allOf(withText("Close all tabs")))
|
private fun closeAllTabsButton() = onView(allOf(withText("Close all tabs")))
|
||||||
private fun assertCloseAllTabsButton() = closeAllTabsButton()
|
private fun assertCloseAllTabsButton() = closeAllTabsButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun shareTabButton() = onView(allOf(withText("Share tabs")))
|
private fun shareTabButton() = onView(allOf(withText("Share tabs")))
|
||||||
private fun assertShareTabButton() = shareTabButton()
|
private fun assertShareTabButton() = shareTabButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun shareButton() = onView(allOf(withText("Share")))
|
private fun shareButton() = onView(allOf(withText("Share")))
|
||||||
private fun assertShareButton() = shareButton()
|
private fun assertShareButton() = shareButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
|
private fun browserViewSaveCollectionButton() = onView(allOf(withText("Save to Collection"),
|
||||||
|
withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun saveCollectionButton() = onView(allOf(withText("Save to collection")))
|
private fun saveCollectionButton() = onView(allOf(withText("Save to collection")))
|
||||||
private fun assertSaveCollectionButton() = saveCollectionButton()
|
private fun assertSaveCollectionButton() = saveCollectionButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
|
private fun addNewCollectionButton() = onView(allOf(withText("Add new collection")))
|
||||||
|
private fun assertaddNewCollectionButton() = addNewCollectionButton()
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
|
private fun collectionNameTextField() = onView(allOf(withResourceName("name_collection_edittext")))
|
||||||
|
private fun assertCollectionNameTextField() = collectionNameTextField()
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun findInPageButton() = onView(allOf(withText("Find in page")))
|
private fun findInPageButton() = onView(allOf(withText("Find in page")))
|
||||||
private fun assertFindInPageButton() = findInPageButton()
|
private fun assertFindInPageButton() = findInPageButton()
|
||||||
|
@ -183,7 +214,7 @@ private fun SendToDeviceTitle() =
|
||||||
onView(allOf(withText("SEND TO DEVICE"), withResourceName("accountHeaderText")))
|
onView(allOf(withText("SEND TO DEVICE"), withResourceName("accountHeaderText")))
|
||||||
|
|
||||||
private fun assertSendToDeviceTitle() = SendToDeviceTitle()
|
private fun assertSendToDeviceTitle() = SendToDeviceTitle()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
private fun ShareALinkTitle() =
|
private fun ShareALinkTitle() =
|
||||||
onView(allOf(withText("SHARE A LINK"), withResourceName("link_header")))
|
onView(allOf(withText("SHARE A LINK"), withResourceName("link_header")))
|
||||||
|
@ -192,4 +223,4 @@ private fun assertShareALinkTitle() = ShareALinkTitle()
|
||||||
|
|
||||||
private fun whatsNewButton() = onView(allOf(withText("What's New")))
|
private fun whatsNewButton() = onView(allOf(withText("What's New")))
|
||||||
private fun assertWhatsNewButton() = whatsNewButton()
|
private fun assertWhatsNewButton() = whatsNewButton()
|
||||||
.check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
Loading…
Reference in New Issue