You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
295 lines
8.7 KiB
Kotlin
295 lines
8.7 KiB
Kotlin
/* 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 android.view.View
|
|
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 org.mozilla.fenix.ui.robots.readerViewRobot
|
|
import androidx.test.espresso.IdlingRegistry
|
|
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.ui.robots.mDevice
|
|
|
|
/**
|
|
* Tests for verifying basic functionality of content context menus
|
|
*
|
|
* - Verifies Reader View entry and detection when available UI and functionality
|
|
* - Verifies Reader View exit UI and functionality
|
|
* - Verifies Reader View appearance controls UI and functionality
|
|
*
|
|
*/
|
|
|
|
@Ignore("Temp disable - reader view page detection issues: https://github.com/mozilla-mobile/fenix/issues/9688 ")
|
|
class ReaderViewTest {
|
|
private lateinit var mockWebServer: MockWebServer
|
|
private var readerViewNotificationDot: ViewVisibilityIdlingResource? = null
|
|
|
|
@get:Rule
|
|
val activityIntentTestRule = HomeActivityIntentTestRule()
|
|
|
|
@Before
|
|
fun setUp() {
|
|
mockWebServer = MockWebServer().apply {
|
|
setDispatcher(AndroidAssetDispatcher())
|
|
start()
|
|
}
|
|
|
|
readerViewNotificationDot = ViewVisibilityIdlingResource(
|
|
activityIntentTestRule.activity.findViewById(R.id.notification_dot),
|
|
View.VISIBLE
|
|
)
|
|
}
|
|
|
|
@After
|
|
fun tearDown() {
|
|
mockWebServer.shutdown()
|
|
IdlingRegistry.getInstance().unregister(readerViewNotificationDot)
|
|
}
|
|
|
|
/**
|
|
* Verify that Reader View capable pages
|
|
*
|
|
* - Show blue notification in the three dot menu
|
|
* - Show the toggle button in the three dot menu
|
|
*
|
|
*/
|
|
@Test
|
|
fun verifyReaderViewPageMenuDetection() {
|
|
val readerViewPage =
|
|
TestAssetHelper.getLoremIpsumAsset(mockWebServer)
|
|
|
|
navigationToolbar {
|
|
}.enterURLAndEnterToBrowser(readerViewPage.url) {
|
|
mDevice.waitForIdle()
|
|
}
|
|
|
|
IdlingRegistry.getInstance().register(readerViewNotificationDot)
|
|
|
|
readerViewRobot {
|
|
verifyReaderViewDetected(true)
|
|
}
|
|
|
|
navigationToolbar {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewToggle(true)
|
|
}.closeBrowserMenuToBrowser { }
|
|
}
|
|
|
|
/**
|
|
* Verify that non Reader View capable pages
|
|
*
|
|
* - Do not show a blue notification in the three dot menu
|
|
* - Reader View toggle should not be visible in the three dot menu
|
|
*
|
|
*/
|
|
@Test
|
|
fun verifyNonReaderViewPageMenuNoDetection() {
|
|
var genericPage =
|
|
TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
|
|
|
navigationToolbar {
|
|
}.enterURLAndEnterToBrowser(genericPage.url) {
|
|
mDevice.waitForIdle()
|
|
}
|
|
|
|
readerViewRobot {
|
|
verifyReaderViewDetected(false)
|
|
}
|
|
|
|
navigationToolbar {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewToggle(false)
|
|
verifyReaderViewAppearance(false)
|
|
}.closeBrowserMenuToBrowser { }
|
|
}
|
|
|
|
@Test
|
|
fun verifyReaderViewToggle() {
|
|
val readerViewPage =
|
|
TestAssetHelper.getLoremIpsumAsset(mockWebServer)
|
|
|
|
navigationToolbar {
|
|
}.enterURLAndEnterToBrowser(readerViewPage.url) {
|
|
mDevice.waitForIdle()
|
|
}
|
|
|
|
IdlingRegistry.getInstance().register(readerViewNotificationDot)
|
|
|
|
readerViewRobot {
|
|
verifyReaderViewDetected(true)
|
|
}
|
|
|
|
navigationToolbar {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewToggle(true)
|
|
}.toggleReaderView {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewAppearance(true)
|
|
}.toggleReaderView {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewAppearance(false)
|
|
}.close { }
|
|
|
|
readerViewRobot {
|
|
verifyReaderViewDetected(false)
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun verifyReaderViewAppearanceUI() {
|
|
val readerViewPage =
|
|
TestAssetHelper.getLoremIpsumAsset(mockWebServer)
|
|
|
|
navigationToolbar {
|
|
}.enterURLAndEnterToBrowser(readerViewPage.url) {
|
|
mDevice.waitForIdle()
|
|
}
|
|
|
|
IdlingRegistry.getInstance().register(readerViewNotificationDot)
|
|
|
|
readerViewRobot {
|
|
verifyReaderViewDetected(true)
|
|
}
|
|
|
|
navigationToolbar {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewToggle(true)
|
|
}.toggleReaderView {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewAppearance(true)
|
|
}.openReaderViewAppearance {
|
|
verifyAppearanceFontGroup(true)
|
|
verifyAppearanceFontSansSerif(true)
|
|
verifyAppearanceFontSerif(true)
|
|
verifyAppearanceFontIncrease(true)
|
|
verifyAppearanceFontDecrease(true)
|
|
verifyAppearanceColorGroup(true)
|
|
verifyAppearanceColorDark(true)
|
|
verifyAppearanceColorLight(true)
|
|
verifyAppearanceColorSepia(true)
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun verifyReaderViewAppearanceFontToggle() {
|
|
val readerViewPage =
|
|
TestAssetHelper.getLoremIpsumAsset(mockWebServer)
|
|
|
|
navigationToolbar {
|
|
}.enterURLAndEnterToBrowser(readerViewPage.url) {
|
|
mDevice.waitForIdle()
|
|
}
|
|
|
|
IdlingRegistry.getInstance().register(readerViewNotificationDot)
|
|
|
|
readerViewRobot {
|
|
verifyReaderViewDetected(true)
|
|
}
|
|
|
|
navigationToolbar {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewToggle(true)
|
|
}.toggleReaderView {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewAppearance(true)
|
|
}.openReaderViewAppearance {
|
|
verifyAppearanceFontGroup(true)
|
|
verifyAppearanceFontSansSerif(true)
|
|
verifyAppearanceFontSerif(true)
|
|
verifyAppearanceFontIncrease(true)
|
|
verifyAppearanceFontDecrease(true)
|
|
}.toggleSansSerif {
|
|
verifyAppearanceFontIsActive("SANSSERIF")
|
|
}.toggleSerif {
|
|
verifyAppearanceFontIsActive("SERIF")
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun verifyReaderViewAppearanceFontSizeToggle() {
|
|
val readerViewPage =
|
|
TestAssetHelper.getLoremIpsumAsset(mockWebServer)
|
|
|
|
navigationToolbar {
|
|
}.enterURLAndEnterToBrowser(readerViewPage.url) {
|
|
mDevice.waitForIdle()
|
|
}
|
|
|
|
IdlingRegistry.getInstance().register(readerViewNotificationDot)
|
|
|
|
readerViewRobot {
|
|
verifyReaderViewDetected(true)
|
|
}
|
|
|
|
navigationToolbar {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewToggle(true)
|
|
}.toggleReaderView {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewAppearance(true)
|
|
}.openReaderViewAppearance {
|
|
verifyAppearanceFontIncrease(true)
|
|
verifyAppearanceFontDecrease(true)
|
|
verifyAppearanceFontSize(3)
|
|
}.toggleFontSizeIncrease {
|
|
verifyAppearanceFontSize(4)
|
|
}.toggleFontSizeIncrease {
|
|
verifyAppearanceFontSize(5)
|
|
}.toggleFontSizeIncrease {
|
|
verifyAppearanceFontSize(6)
|
|
}.toggleFontSizeDecrease {
|
|
verifyAppearanceFontSize(5)
|
|
}.toggleFontSizeDecrease {
|
|
verifyAppearanceFontSize(4)
|
|
}.toggleFontSizeDecrease {
|
|
verifyAppearanceFontSize(3)
|
|
}
|
|
}
|
|
|
|
@Test
|
|
fun verifyReaderViewAppearanceColorSchemeChange() {
|
|
val readerViewPage =
|
|
TestAssetHelper.getLoremIpsumAsset(mockWebServer)
|
|
|
|
navigationToolbar {
|
|
}.enterURLAndEnterToBrowser(readerViewPage.url) {
|
|
mDevice.waitForIdle()
|
|
}
|
|
|
|
IdlingRegistry.getInstance().register(readerViewNotificationDot)
|
|
|
|
readerViewRobot {
|
|
verifyReaderViewDetected(true)
|
|
}
|
|
|
|
navigationToolbar {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewToggle(true)
|
|
}.toggleReaderView {
|
|
}.openThreeDotMenu {
|
|
verifyReaderViewAppearance(true)
|
|
}.openReaderViewAppearance {
|
|
verifyAppearanceColorDark(true)
|
|
verifyAppearanceColorLight(true)
|
|
verifyAppearanceColorSepia(true)
|
|
}.toggleColorSchemeChangeDark {
|
|
verifyAppearanceColorSchemeChange("DARK")
|
|
}.toggleColorSchemeChangeSepia {
|
|
verifyAppearanceColorSchemeChange("SEPIA")
|
|
}.toggleColorSchemeChangeLight {
|
|
verifyAppearanceColorSchemeChange("LIGHT")
|
|
}
|
|
}
|
|
}
|