diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/ReaderViewTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/ReaderViewTest.kt index 3d37cf44e..e4b9ca94d 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/ReaderViewTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/ReaderViewTest.kt @@ -5,22 +5,22 @@ package org.mozilla.fenix.ui import android.view.View +import androidx.test.espresso.IdlingRegistry import okhttp3.mockwebserver.MockWebServer import org.junit.After import org.junit.Before +import org.junit.Ignore import org.junit.Rule import org.junit.Test -import org.mozilla.fenix.ui.robots.navigationToolbar -import androidx.test.espresso.IdlingRegistry -import org.junit.Ignore import org.mozilla.fenix.FeatureFlags import org.mozilla.fenix.R import org.mozilla.fenix.helpers.AndroidAssetDispatcher -import org.mozilla.fenix.helpers.ViewVisibilityIdlingResource import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.TestAssetHelper +import org.mozilla.fenix.helpers.ViewVisibilityIdlingResource import org.mozilla.fenix.ui.robots.browserScreen import org.mozilla.fenix.ui.robots.mDevice +import org.mozilla.fenix.ui.robots.navigationToolbar /** * Tests for verifying basic functionality of content context menus @@ -125,6 +125,15 @@ class ReaderViewTest { toggleReaderView() mDevice.waitForIdle() } + browserScreen { + verifyPageContent(estimatedReadingTime) + } + navigationToolbar { + verifyCloseReaderViewDetected(true) + toggleReaderView() + mDevice.waitForIdle() + verifyReaderViewDetected(true) + } if (!FeatureFlags.toolbarMenuFeature) { browserScreen { @@ -134,12 +143,14 @@ class ReaderViewTest { }.closeBrowserMenuToBrowser { } } - navigationToolbar { - toggleReaderView() - mDevice.waitForIdle() - }.openThreeDotMenu { - verifyReaderViewAppearance(false) - }.close { } + if (!FeatureFlags.toolbarMenuFeature) { + navigationToolbar { + toggleReaderView() + mDevice.waitForIdle() + }.openThreeDotMenu { + verifyReaderViewAppearance(false) + }.close { } + } } @Test diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/NavigationToolbarRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/NavigationToolbarRobot.kt index 1a0ad0075..32af056df 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/NavigationToolbarRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/NavigationToolbarRobot.kt @@ -11,7 +11,6 @@ import androidx.recyclerview.widget.RecyclerView import androidx.test.espresso.Espresso.onView import androidx.test.espresso.IdlingRegistry import androidx.test.espresso.IdlingResource -import androidx.test.espresso.ViewInteraction import androidx.test.espresso.action.ViewActions import androidx.test.espresso.action.ViewActions.pressImeActionButton import androidx.test.espresso.action.ViewActions.replaceText @@ -60,12 +59,21 @@ class NavigationToolbarRobot { fun verifyTabButtonShortcutMenuItems() = assertTabButtonShortcutMenuItems() - fun verifyReaderViewDetected(visible: Boolean = false): ViewInteraction = + fun verifyReaderViewDetected(visible: Boolean = false) = assertReaderViewDetected(visible) + fun verifyCloseReaderViewDetected(visible: Boolean = false) = + assertCloseReaderViewDetected(visible) + fun typeSearchTerm(searchTerm: String) = awesomeBar().perform(typeText(searchTerm)) - fun toggleReaderView() = readerViewToggle().click() + fun toggleReaderView() { + mDevice.findObject(UiSelector() + .resourceId("$packageName:id/mozac_browser_toolbar_page_actions")) + .waitForExists(waitingTime) + + readerViewToggle().click() + } class Transition { @@ -312,7 +320,11 @@ private fun goBackButton() = mDevice.pressBack() private fun readerViewToggle() = onView(withParent(withId(R.id.mozac_browser_toolbar_page_actions))) -private fun assertReaderViewDetected(visible: Boolean) = +private fun assertReaderViewDetected(visible: Boolean) { + mDevice.findObject(UiSelector() + .description("Reader view")) + .waitForExists(waitingTime) + onView( allOf( withParent(withId(R.id.mozac_browser_toolbar_page_actions)), @@ -322,6 +334,23 @@ private fun assertReaderViewDetected(visible: Boolean) = if (visible) matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)) else ViewAssertions.doesNotExist() ) +} + +private fun assertCloseReaderViewDetected(visible: Boolean) { + mDevice.findObject(UiSelector() + .description("Close reader view")) + .waitForExists(waitingTime) + + onView( + allOf( + withParent(withId(R.id.mozac_browser_toolbar_page_actions)), + withContentDescription("Close reader view") + ) + ).check( + if (visible) matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)) + else ViewAssertions.doesNotExist() + ) +} inline fun runWithIdleRes(ir: IdlingResource?, pendingCheck: () -> Unit) { try {