|
|
@ -8,23 +8,28 @@ package org.mozilla.fenix.ui.robots
|
|
|
|
|
|
|
|
|
|
|
|
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.action.ViewActions.clearText
|
|
|
|
import androidx.test.espresso.action.ViewActions.click
|
|
|
|
import androidx.test.espresso.action.ViewActions.click
|
|
|
|
|
|
|
|
import androidx.test.espresso.action.ViewActions.typeText
|
|
|
|
import androidx.test.espresso.assertion.ViewAssertions.matches
|
|
|
|
import androidx.test.espresso.assertion.ViewAssertions.matches
|
|
|
|
import androidx.test.espresso.contrib.RecyclerViewActions
|
|
|
|
import androidx.test.espresso.contrib.RecyclerViewActions
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.Visibility
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
|
|
|
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.withChild
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.withContentDescription
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.withContentDescription
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.withId
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.withId
|
|
|
|
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.withParent
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
|
|
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
|
|
|
import androidx.test.platform.app.InstrumentationRegistry
|
|
|
|
import androidx.test.platform.app.InstrumentationRegistry
|
|
|
|
import androidx.test.uiautomator.UiDevice
|
|
|
|
import androidx.test.uiautomator.UiDevice
|
|
|
|
import androidx.test.uiautomator.UiSelector
|
|
|
|
import androidx.test.uiautomator.UiSelector
|
|
|
|
import org.hamcrest.CoreMatchers
|
|
|
|
import org.hamcrest.CoreMatchers
|
|
|
|
|
|
|
|
import org.hamcrest.Matchers.allOf
|
|
|
|
|
|
|
|
import org.junit.Assert.assertTrue
|
|
|
|
import org.mozilla.fenix.R
|
|
|
|
import org.mozilla.fenix.R
|
|
|
|
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
|
|
|
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
|
|
|
|
import org.mozilla.fenix.helpers.TestHelper.packageName
|
|
|
|
|
|
|
|
import org.mozilla.fenix.helpers.click
|
|
|
|
import org.mozilla.fenix.helpers.click
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -53,9 +58,11 @@ class SettingsSubMenuSearchRobot {
|
|
|
|
|
|
|
|
|
|
|
|
fun saveNewSearchEngine() {
|
|
|
|
fun saveNewSearchEngine() {
|
|
|
|
addSearchEngineSaveButton().click()
|
|
|
|
addSearchEngineSaveButton().click()
|
|
|
|
mDevice.findObject(
|
|
|
|
assertTrue(
|
|
|
|
UiSelector().resourceId("$packageName:id/recycler_view")
|
|
|
|
mDevice.findObject(
|
|
|
|
).waitForExists(waitingTime)
|
|
|
|
UiSelector().textContains("Default search engine")
|
|
|
|
|
|
|
|
).waitForExists(waitingTime)
|
|
|
|
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fun addNewSearchEngine(searchEngineName: String) {
|
|
|
|
fun addNewSearchEngine(searchEngineName: String) {
|
|
|
@ -63,6 +70,35 @@ class SettingsSubMenuSearchRobot {
|
|
|
|
saveNewSearchEngine()
|
|
|
|
saveNewSearchEngine()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun selectAddCustomSearchEngine() = onView(withText("Other")).click()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun typeCustomEngineDetails(engineName: String, engineURL: String) {
|
|
|
|
|
|
|
|
onView(withId(R.id.edit_engine_name))
|
|
|
|
|
|
|
|
.perform(clearText())
|
|
|
|
|
|
|
|
.perform(typeText(engineName))
|
|
|
|
|
|
|
|
onView(withId(R.id.edit_search_string))
|
|
|
|
|
|
|
|
.perform(clearText())
|
|
|
|
|
|
|
|
.perform(typeText(engineURL))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun openEngineOverflowMenu(searchEngineName: String) {
|
|
|
|
|
|
|
|
mDevice.findObject(
|
|
|
|
|
|
|
|
UiSelector().resourceId("org.mozilla.fenix.debug:id/overflow_menu")
|
|
|
|
|
|
|
|
).waitForExists(waitingTime)
|
|
|
|
|
|
|
|
threeDotMenu(searchEngineName).click()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun clickEdit() = onView(withText("Edit")).click()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun saveEditSearchEngine() {
|
|
|
|
|
|
|
|
onView(withId(R.id.save_button)).click()
|
|
|
|
|
|
|
|
assertTrue(
|
|
|
|
|
|
|
|
mDevice.findObject(
|
|
|
|
|
|
|
|
UiSelector().textContains("Saved")
|
|
|
|
|
|
|
|
).waitForExists(waitingTime)
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class Transition {
|
|
|
|
class Transition {
|
|
|
|
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
|
|
|
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
|
|
|
|
|
|
|
|
|
|
@ -78,21 +114,21 @@ class SettingsSubMenuSearchRobot {
|
|
|
|
|
|
|
|
|
|
|
|
private fun assertDefaultSearchEngineHeader() =
|
|
|
|
private fun assertDefaultSearchEngineHeader() =
|
|
|
|
onView(withText("Default search engine"))
|
|
|
|
onView(withText("Default search engine"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
|
|
|
|
|
|
|
|
private fun assertSearchEngineList() {
|
|
|
|
private fun assertSearchEngineList() {
|
|
|
|
onView(withText("Google"))
|
|
|
|
onView(withText("Google"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
onView(withText("Amazon.com"))
|
|
|
|
onView(withText("Amazon.com"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
onView(withText("Bing"))
|
|
|
|
onView(withText("Bing"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
onView(withText("DuckDuckGo"))
|
|
|
|
onView(withText("DuckDuckGo"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
onView(withText("Wikipedia"))
|
|
|
|
onView(withText("Wikipedia"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
onView(withText("Add search engine"))
|
|
|
|
onView(withText("Add search engine"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun assertShowSearchSuggestions() {
|
|
|
|
private fun assertShowSearchSuggestions() {
|
|
|
@ -102,7 +138,7 @@ private fun assertShowSearchSuggestions() {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
onView(withText("Show search suggestions"))
|
|
|
|
onView(withText("Show search suggestions"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun assertShowSearchShortcuts() {
|
|
|
|
private fun assertShowSearchShortcuts() {
|
|
|
@ -112,7 +148,7 @@ private fun assertShowSearchShortcuts() {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
onView(withText("Show search engines"))
|
|
|
|
onView(withText("Show search engines"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun assertShowClipboardSuggestions() {
|
|
|
|
private fun assertShowClipboardSuggestions() {
|
|
|
@ -122,7 +158,7 @@ private fun assertShowClipboardSuggestions() {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
onView(withText("Show clipboard suggestions"))
|
|
|
|
onView(withText("Show clipboard suggestions"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun assertSearchBrowsingHistory() {
|
|
|
|
private fun assertSearchBrowsingHistory() {
|
|
|
@ -132,7 +168,7 @@ private fun assertSearchBrowsingHistory() {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
onView(withText("Search browsing history"))
|
|
|
|
onView(withText("Search browsing history"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun assertSearchBookmarks() {
|
|
|
|
private fun assertSearchBookmarks() {
|
|
|
@ -142,12 +178,12 @@ private fun assertSearchBookmarks() {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
onView(withText("Search bookmarks"))
|
|
|
|
onView(withText("Search bookmarks"))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun selectSearchEngine(searchEngine: String) {
|
|
|
|
private fun selectSearchEngine(searchEngine: String) {
|
|
|
|
onView(withText(searchEngine))
|
|
|
|
onView(withText(searchEngine))
|
|
|
|
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
|
|
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
|
|
|
.perform(click())
|
|
|
|
.perform(click())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -189,3 +225,11 @@ private fun addSearchEngineSaveButton() = onView(withId(R.id.add_search_engine))
|
|
|
|
private fun assertEngineListContains(searchEngineName: String) {
|
|
|
|
private fun assertEngineListContains(searchEngineName: String) {
|
|
|
|
onView(withId(R.id.search_engine_group)).check(matches(hasDescendant(withText(searchEngineName))))
|
|
|
|
onView(withId(R.id.search_engine_group)).check(matches(hasDescendant(withText(searchEngineName))))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun threeDotMenu(searchEngineName: String) =
|
|
|
|
|
|
|
|
onView(
|
|
|
|
|
|
|
|
allOf(
|
|
|
|
|
|
|
|
withId(R.id.overflow_menu),
|
|
|
|
|
|
|
|
withParent(withChild(withText(searchEngineName)))
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
)
|
|
|
|