Merge #6059
6059: Add verify items tests for settings menus r=kglazko a=rpappalax Also closes #6006 All UI tests are passing with the exception of 1 which was just uncovered by a new test in this PR. Issue here: https://github.com/mozilla-mobile/fenix/issues/6053 Co-authored-by: Richard Pappalardo <rpappalax@gmail.com>nightly-build-test
commit
fed0c88c6f
@ -0,0 +1,16 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
package org.mozilla.fenix.helpers
|
||||||
|
|
||||||
|
import androidx.test.uiautomator.UiScrollable
|
||||||
|
import androidx.test.uiautomator.UiSelector
|
||||||
|
|
||||||
|
object TestHelper {
|
||||||
|
fun scrollToElementByText(text: String): UiScrollable {
|
||||||
|
val appView = UiScrollable(UiSelector().scrollable(true))
|
||||||
|
appView.scrollTextIntoView(text)
|
||||||
|
return appView
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,93 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
package org.mozilla.fenix.ui
|
||||||
|
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import okhttp3.mockwebserver.MockWebServer
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.After
|
||||||
|
import org.junit.Ignore
|
||||||
|
import org.junit.Test
|
||||||
|
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||||
|
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||||
|
import org.mozilla.fenix.ui.robots.homeScreen
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for verifying the main three dot menu options
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
class SettingsAboutTest {
|
||||||
|
/* ktlint-disable no-blank-line-before-rbrace */ // This imposes unreadable grouping.
|
||||||
|
|
||||||
|
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
private lateinit var mockWebServer: MockWebServer
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val activityTestRule = HomeActivityTestRule()
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
mockWebServer = MockWebServer().apply {
|
||||||
|
setDispatcher(AndroidAssetDispatcher())
|
||||||
|
start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
fun tearDown() {
|
||||||
|
mockWebServer.shutdown()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
// Walks through settings menu and sub-menus to ensure all items are present
|
||||||
|
fun settingsAboutItemsTest() {
|
||||||
|
// ABOUT
|
||||||
|
homeScreen {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openSettings {
|
||||||
|
// ABOUT
|
||||||
|
verifyAboutHeading()
|
||||||
|
verifyHelp()
|
||||||
|
verifyRateOnGooglePlay()
|
||||||
|
verifyAboutFirefoxPreview()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ABOUT
|
||||||
|
@Ignore("This is a stub test, ignore for now")
|
||||||
|
@Test
|
||||||
|
fun verifyHelpRedirect() {
|
||||||
|
// Open 3dot (main) menu
|
||||||
|
// Select settings
|
||||||
|
// Click on "Help"
|
||||||
|
// Verify redirect to: https://support.mozilla.org/
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore("This is a stub test, ignore for now")
|
||||||
|
@Test
|
||||||
|
fun verifyRateOnGooglePlayRedirect() {
|
||||||
|
// Open 3dot (main) menu
|
||||||
|
// Select settings
|
||||||
|
// Click on "Rate on Google Play"
|
||||||
|
// Verify Android "Open with Google Play Store" sub menu
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore("This is a stub test, ignore for now")
|
||||||
|
@Test
|
||||||
|
fun verifyAboutFirefoxPreview() {
|
||||||
|
// Open 3dot (main) menu
|
||||||
|
// Select settings
|
||||||
|
// Click on "Verify About Firefox Preview"
|
||||||
|
// Verify about page contains....
|
||||||
|
// Build #
|
||||||
|
// Version #
|
||||||
|
// "Firefox Preview is produced by Mozilla"
|
||||||
|
// Day, Date, timestamp
|
||||||
|
// "Open source libraries we use"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,102 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
package org.mozilla.fenix.ui
|
||||||
|
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import okhttp3.mockwebserver.MockWebServer
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Before
|
||||||
|
import org.junit.After
|
||||||
|
import org.junit.Ignore
|
||||||
|
import org.junit.Test
|
||||||
|
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||||
|
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||||
|
import org.mozilla.fenix.ui.robots.homeScreen
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for verifying the main three dot menu options
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
class SettingsDeveloperToolsTest {
|
||||||
|
/* ktlint-disable no-blank-line-before-rbrace */ // This imposes unreadable grouping.
|
||||||
|
|
||||||
|
private val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
private lateinit var mockWebServer: MockWebServer
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val activityTestRule = HomeActivityTestRule()
|
||||||
|
|
||||||
|
@Before
|
||||||
|
fun setUp() {
|
||||||
|
mockWebServer = MockWebServer().apply {
|
||||||
|
setDispatcher(AndroidAssetDispatcher())
|
||||||
|
start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
fun tearDown() {
|
||||||
|
mockWebServer.shutdown()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
// Walks through settings developer tools menu and sub-menus to ensure all items are present
|
||||||
|
fun settingsDeveloperToolsItemsTest() {
|
||||||
|
homeScreen {
|
||||||
|
}.openThreeDotMenu {
|
||||||
|
}.openSettings {
|
||||||
|
verifyDeveloperToolsHeading()
|
||||||
|
verifyRemoteDebug()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEVELOPER TOOLS
|
||||||
|
@Ignore("This is a stub test, ignore for now")
|
||||||
|
@Test
|
||||||
|
fun turnOnRemoteDebuggingViaUsb() {
|
||||||
|
// Open terminal
|
||||||
|
// Verify USB debugging is off
|
||||||
|
// Open 3dot (main) menu
|
||||||
|
// Select settings
|
||||||
|
// Toggle Remote debugging via USB to 'on'
|
||||||
|
// Open terminal
|
||||||
|
// Verify USB debugging is on
|
||||||
|
}
|
||||||
|
|
||||||
|
// ABOUT
|
||||||
|
@Ignore("This is a stub test, ignore for now")
|
||||||
|
@Test
|
||||||
|
fun verifyHelpRedirect() {
|
||||||
|
// Open 3dot (main) menu
|
||||||
|
// Select settings
|
||||||
|
// Click on "Help"
|
||||||
|
// Verify redirect to: https://support.mozilla.org/
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore("This is a stub test, ignore for now")
|
||||||
|
@Test
|
||||||
|
fun verifyRateOnGooglePlayRedirect() {
|
||||||
|
// Open 3dot (main) menu
|
||||||
|
// Select settings
|
||||||
|
// Click on "Rate on Google Play"
|
||||||
|
// Verify Android "Open with Google Play Store" sub menu
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore("This is a stub test, ignore for now")
|
||||||
|
@Test
|
||||||
|
fun verifyAboutFirefoxPreview() {
|
||||||
|
// Open 3dot (main) menu
|
||||||
|
// Select settings
|
||||||
|
// Click on "Verify About Firefox Preview"
|
||||||
|
// Verify about page contains....
|
||||||
|
// Build #
|
||||||
|
// Version #
|
||||||
|
// "Firefox Preview is produced by Mozilla"
|
||||||
|
// Day, Date, timestamp
|
||||||
|
// "Open source libraries we use"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
@file:Suppress("TooManyFunctions")
|
||||||
|
|
||||||
|
package org.mozilla.fenix.ui.robots
|
||||||
|
|
||||||
|
import androidx.test.espresso.Espresso
|
||||||
|
import androidx.test.espresso.action.ViewActions
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import org.hamcrest.CoreMatchers
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of Robot Pattern for the settings search sub menu.
|
||||||
|
*/
|
||||||
|
class SettingsSubMenuAboutRobot {
|
||||||
|
|
||||||
|
class Transition {
|
||||||
|
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
|
fun goBack(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
||||||
|
mDevice.waitForIdle()
|
||||||
|
goBackButton().perform(ViewActions.click())
|
||||||
|
|
||||||
|
SettingsRobot().interact()
|
||||||
|
return SettingsRobot.Transition()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun goBackButton() =
|
||||||
|
Espresso.onView(CoreMatchers.allOf(ViewMatchers.withContentDescription("Navigate up")))
|
@ -0,0 +1,46 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
@file:Suppress("TooManyFunctions")
|
||||||
|
|
||||||
|
package org.mozilla.fenix.ui.robots
|
||||||
|
|
||||||
|
import androidx.test.espresso.Espresso
|
||||||
|
import androidx.test.espresso.action.ViewActions
|
||||||
|
import androidx.test.espresso.assertion.ViewAssertions
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import org.hamcrest.CoreMatchers
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of Robot Pattern for the settings Accessibility sub menu.
|
||||||
|
*/
|
||||||
|
class SettingsSubMenuAccessibilityRobot {
|
||||||
|
|
||||||
|
fun verifyAutomaticFontSizing() = assertAutomaticFontSizing()
|
||||||
|
|
||||||
|
class Transition {
|
||||||
|
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
|
fun goBack(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
||||||
|
mDevice.waitForIdle()
|
||||||
|
goBackButton().perform(ViewActions.click())
|
||||||
|
|
||||||
|
SettingsRobot().interact()
|
||||||
|
return SettingsRobot.Transition()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun assertAutomaticFontSizing() {
|
||||||
|
Espresso.onView(ViewMatchers.withText("Automatic Font Sizing"))
|
||||||
|
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
val strFont = "Font size will match your Android settings. Disable to manage font size here."
|
||||||
|
Espresso.onView(ViewMatchers.withText(strFont))
|
||||||
|
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun goBackButton() =
|
||||||
|
Espresso.onView(CoreMatchers.allOf(ViewMatchers.withContentDescription("Navigate up")))
|
@ -0,0 +1,43 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
@file:Suppress("TooManyFunctions")
|
||||||
|
|
||||||
|
package org.mozilla.fenix.ui.robots
|
||||||
|
|
||||||
|
import androidx.test.espresso.Espresso.onView
|
||||||
|
import androidx.test.espresso.action.ViewActions
|
||||||
|
import androidx.test.espresso.assertion.ViewAssertions
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import org.hamcrest.CoreMatchers
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of Robot Pattern for the settings DefaultBrowser sub menu.
|
||||||
|
*/
|
||||||
|
class SettingsSubMenuDefaultBrowserRobot {
|
||||||
|
|
||||||
|
fun verifyOpenLinksInPrivateTab() = assertOpenLinksInPrivateTab()
|
||||||
|
|
||||||
|
class Transition {
|
||||||
|
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
|
fun goBack(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
||||||
|
mDevice.waitForIdle()
|
||||||
|
goBackButton().perform(ViewActions.click())
|
||||||
|
|
||||||
|
SettingsRobot().interact()
|
||||||
|
return SettingsRobot.Transition()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun assertOpenLinksInPrivateTab() {
|
||||||
|
onView(ViewMatchers.withText("Open links in private tab"))
|
||||||
|
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun goBackButton() =
|
||||||
|
onView(CoreMatchers.allOf(ViewMatchers.withContentDescription("Navigate up")))
|
@ -0,0 +1,69 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
@file:Suppress("TooManyFunctions")
|
||||||
|
|
||||||
|
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.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import org.hamcrest.CoreMatchers
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of Robot Pattern for the settings search sub menu.
|
||||||
|
*/
|
||||||
|
class SettingsSubMenuSearchRobot {
|
||||||
|
fun verifyDefaultSearchEngineHeader() = assertDefaultSearchEngineHeader()
|
||||||
|
fun verifySearchEngineList() = assertSearchEngineList()
|
||||||
|
fun verifyShowSearchSuggestions() = assertShowSearchSuggestions()
|
||||||
|
fun verifyShowClipboardSuggestions() = assertShowClipboardSuggestions()
|
||||||
|
fun verifySearchBrowsingHistory() = assertSearchBrowsingHistory()
|
||||||
|
fun verifySearchBookmarks() = assertSearchBookmarks()
|
||||||
|
|
||||||
|
class Transition {
|
||||||
|
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
|
fun goBack(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
||||||
|
mDevice.waitForIdle()
|
||||||
|
goBackButton().perform(ViewActions.click())
|
||||||
|
|
||||||
|
SettingsRobot().interact()
|
||||||
|
return SettingsRobot.Transition()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun assertDefaultSearchEngineHeader() = onView(ViewMatchers.withText("Default search engine"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
private fun assertSearchEngineList() {
|
||||||
|
onView(ViewMatchers.withText("Google"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
onView(ViewMatchers.withText("Amazon.com"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
onView(ViewMatchers.withText("Bing"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
onView(ViewMatchers.withText("DuckDuckGo"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
onView(ViewMatchers.withText("Twitter"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
onView(ViewMatchers.withText("Wikipedia"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun assertShowSearchSuggestions() = onView(ViewMatchers.withText("Show search suggestions"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
private fun assertShowClipboardSuggestions() = onView(ViewMatchers.withText("Show clipboard suggestions"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
private fun assertSearchBrowsingHistory() = onView(ViewMatchers.withText("Search browsing history"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
private fun assertSearchBookmarks() = onView(ViewMatchers.withText("Search bookmarks"))
|
||||||
|
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
|
||||||
|
private fun goBackButton() =
|
||||||
|
onView(CoreMatchers.allOf(ViewMatchers.withContentDescription("Navigate up")))
|
@ -0,0 +1,49 @@
|
|||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
@file:Suppress("TooManyFunctions")
|
||||||
|
|
||||||
|
package org.mozilla.fenix.ui.robots
|
||||||
|
|
||||||
|
import androidx.test.espresso.Espresso
|
||||||
|
import androidx.test.espresso.Espresso.onView
|
||||||
|
import androidx.test.espresso.action.ViewActions
|
||||||
|
import androidx.test.espresso.assertion.ViewAssertions
|
||||||
|
import androidx.test.espresso.matcher.ViewMatchers
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
|
import androidx.test.uiautomator.UiDevice
|
||||||
|
import org.hamcrest.CoreMatchers
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of Robot Pattern for the settings Theme sub menu.
|
||||||
|
*/
|
||||||
|
class SettingsSubMenuThemeRobot {
|
||||||
|
|
||||||
|
fun verifyThemes() = assertThemes()
|
||||||
|
|
||||||
|
class Transition {
|
||||||
|
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
|
||||||
|
|
||||||
|
fun goBack(interact: SettingsRobot.() -> Unit): SettingsRobot.Transition {
|
||||||
|
mDevice.waitForIdle()
|
||||||
|
goBackButton().perform(ViewActions.click())
|
||||||
|
|
||||||
|
SettingsRobot().interact()
|
||||||
|
return SettingsRobot.Transition()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun assertThemes() {
|
||||||
|
onView(ViewMatchers.withText("Light"))
|
||||||
|
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
onView(ViewMatchers.withText("Dark"))
|
||||||
|
.check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
// Conditionally unavailable on API 25
|
||||||
|
// onView(ViewMatchers.withText("Follow device theme"))
|
||||||
|
// .check(ViewAssertions.matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun goBackButton() =
|
||||||
|
Espresso.onView(CoreMatchers.allOf(ViewMatchers.withContentDescription("Navigate up")))
|
Loading…
Reference in New Issue