Bug 1807268 - Re-enable verifyShowClipboardSuggestionsToggleTest UI test r=jajohnson
[gecko.git] / mobile / android / fenix / app / src / androidTest / java / org / mozilla / fenix / ui / ReaderViewTest.kt
blob8e138aa8be247c4bd8d33b3ab40d60954a7e098e
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 package org.mozilla.fenix.ui
7 import android.view.View
8 import org.junit.Rule
9 import org.junit.Test
10 import org.mozilla.fenix.R
11 import org.mozilla.fenix.customannotations.SmokeTest
12 import org.mozilla.fenix.helpers.AppAndSystemHelper.registerAndCleanupIdlingResources
13 import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
14 import org.mozilla.fenix.helpers.RetryTestRule
15 import org.mozilla.fenix.helpers.TestAssetHelper
16 import org.mozilla.fenix.helpers.TestHelper.mDevice
17 import org.mozilla.fenix.helpers.TestSetup
18 import org.mozilla.fenix.helpers.ViewVisibilityIdlingResource
19 import org.mozilla.fenix.ui.robots.browserScreen
20 import org.mozilla.fenix.ui.robots.navigationToolbar
22 /**
23  *  Tests for verifying basic functionality of content context menus
24  *
25  *  - Verifies Reader View entry and detection when available UI and functionality
26  *  - Verifies Reader View exit UI and functionality
27  *  - Verifies Reader View appearance controls UI and functionality
28  *
29  */
31 class ReaderViewTest : TestSetup() {
32     private val estimatedReadingTime = "1 - 2 minutes"
34     @get:Rule
35     val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
37     @Rule
38     @JvmField
39     val retryTestRule = RetryTestRule(3)
41     /**
42      *  Verify that Reader View capable pages
43      *
44      *   - Show the toggle button in the navigation bar
45      *
46      */
47     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/250592
48     @Test
49     fun verifyReaderModePageDetectionTest() {
50         val readerViewPage =
51             TestAssetHelper.getLoremIpsumAsset(mockWebServer)
52         val genericPage =
53             TestAssetHelper.getGenericAsset(mockWebServer, 1)
55         navigationToolbar {
56         }.enterURLAndEnterToBrowser(readerViewPage.url) {
57             mDevice.waitForIdle()
58         }
60         registerAndCleanupIdlingResources(
61             ViewVisibilityIdlingResource(
62                 activityIntentTestRule.activity.findViewById(R.id.mozac_browser_toolbar_page_actions),
63                 View.VISIBLE,
64             ),
65         ) {}
67         navigationToolbar {
68             verifyReaderViewDetected(true)
69         }.enterURLAndEnterToBrowser(genericPage.url) {
70         }
71         navigationToolbar {
72             verifyReaderViewDetected(false)
73         }
74     }
76     // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/250585
77     @SmokeTest
78     @Test
79     fun verifyReaderModeControlsTest() {
80         val readerViewPage =
81             TestAssetHelper.getLoremIpsumAsset(mockWebServer)
83         navigationToolbar {
84         }.enterURLAndEnterToBrowser(readerViewPage.url) {
85             mDevice.waitForIdle()
86         }
88         registerAndCleanupIdlingResources(
89             ViewVisibilityIdlingResource(
90                 activityIntentTestRule.activity.findViewById(R.id.mozac_browser_toolbar_page_actions),
91                 View.VISIBLE,
92             ),
93         ) {}
95         navigationToolbar {
96             verifyReaderViewDetected(true)
97             toggleReaderView()
98             mDevice.waitForIdle()
99         }
101         browserScreen {
102             verifyPageContent(estimatedReadingTime)
103         }.openThreeDotMenu {
104             verifyReaderViewAppearance(true)
105         }.openReaderViewAppearance {
106             verifyAppearanceFontGroup(true)
107             verifyAppearanceFontSansSerif(true)
108             verifyAppearanceFontSerif(true)
109             verifyAppearanceFontIncrease(true)
110             verifyAppearanceFontDecrease(true)
111             verifyAppearanceFontSize(3)
112             verifyAppearanceColorGroup(true)
113             verifyAppearanceColorDark(true)
114             verifyAppearanceColorLight(true)
115             verifyAppearanceColorSepia(true)
116         }.toggleSansSerif {
117             verifyAppearanceFontIsActive("SANSSERIF")
118         }.toggleSerif {
119             verifyAppearanceFontIsActive("SERIF")
120         }.toggleFontSizeIncrease {
121             verifyAppearanceFontSize(4)
122         }.toggleFontSizeIncrease {
123             verifyAppearanceFontSize(5)
124         }.toggleFontSizeIncrease {
125             verifyAppearanceFontSize(6)
126         }.toggleFontSizeDecrease {
127             verifyAppearanceFontSize(5)
128         }.toggleFontSizeDecrease {
129             verifyAppearanceFontSize(4)
130         }.toggleFontSizeDecrease {
131             verifyAppearanceFontSize(3)
132         }.toggleColorSchemeChangeDark {
133             verifyAppearanceColorSchemeChange("DARK")
134         }.toggleColorSchemeChangeSepia {
135             verifyAppearanceColorSchemeChange("SEPIA")
136         }.toggleColorSchemeChangeLight {
137             verifyAppearanceColorSchemeChange("LIGHT")
138         }.closeAppearanceMenu {
139         }
140         navigationToolbar {
141             toggleReaderView()
142             mDevice.waitForIdle()
143             verifyReaderViewDetected(true)
144         }.openThreeDotMenu {
145             verifyReaderViewAppearance(false)
146         }
147     }