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
9 import org.mozilla.fenix.customannotations.SmokeTest
10 import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
11 import org.mozilla.fenix.helpers.MatcherHelper.itemContainingText
12 import org.mozilla.fenix.helpers.MatcherHelper.itemWithText
13 import org.mozilla.fenix.helpers.RetryTestRule
14 import org.mozilla.fenix.helpers.TestAssetHelper
15 import org.mozilla.fenix.helpers.TestHelper.mDevice
16 import org.mozilla.fenix.helpers.TestSetup
17 import org.mozilla.fenix.ui.robots.browserScreen
18 import org.mozilla.fenix.ui.robots.clickContextMenuItem
19 import org.mozilla.fenix.ui.robots.clickPageObject
20 import org.mozilla.fenix.ui.robots.homeScreen
21 import org.mozilla.fenix.ui.robots.longClickPageObject
22 import org.mozilla.fenix.ui.robots.navigationToolbar
23 import org.mozilla.fenix.ui.robots.openEditURLView
24 import org.mozilla.fenix.ui.robots.searchScreen
25 import org.mozilla.fenix.ui.robots.shareOverlay
27 class TextSelectionTest : TestSetup() {
29 val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
33 val retryTestRule = RetryTestRule(3)
35 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326832
38 fun verifySelectAllTextOptionTest() {
39 val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
42 }.enterURLAndEnterToBrowser(genericURL.url) {
43 longClickPageObject(itemContainingText("content"))
44 clickContextMenuItem("Select all")
45 clickContextMenuItem("Copy")
46 }.openNavigationToolbar {
54 // With Select all, white spaces are copied
55 // Potential bug https://bugzilla.mozilla.org/show_bug.cgi?id=1821310
56 verifyTypedToolbarText(" Page content: 1 ")
60 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326828
62 fun verifyCopyTextOptionTest() {
63 val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
66 }.enterURLAndEnterToBrowser(genericURL.url) {
67 longClickPageObject(itemContainingText("content"))
68 clickContextMenuItem("Copy")
69 }.openNavigationToolbar {
77 verifyTypedToolbarText("content")
81 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326829
83 fun verifyShareSelectedTextOptionTest() {
84 val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
87 }.enterURLAndEnterToBrowser(genericURL.url) {
88 longClickPageObject(itemWithText(genericURL.content))
89 }.clickShareSelectedText {
90 verifyAndroidShareLayout()
94 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326830
96 fun verifySearchTextOptionTest() {
97 val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
100 }.enterURLAndEnterToBrowser(genericURL.url) {
101 longClickPageObject(itemContainingText("content"))
102 clickContextMenuItem("Search")
103 mDevice.waitForIdle()
104 verifyTabCounter("2")
109 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326831
112 fun verifyPrivateSearchTextTest() {
113 val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
116 }.togglePrivateBrowsingMode()
119 }.enterURLAndEnterToBrowser(genericURL.url) {
120 longClickPageObject(itemContainingText("content"))
121 clickContextMenuItem("Private Search")
122 mDevice.waitForIdle()
123 verifyTabCounter("2")
128 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326834
130 fun verifySelectAllPDFTextOptionTest() {
132 TestAssetHelper.getGenericAsset(mockWebServer, 3)
135 }.enterURLAndEnterToBrowser(genericURL.url) {
136 clickPageObject(itemWithText("PDF form file"))
137 longClickPageObject(itemContainingText("Crossing"))
138 clickContextMenuItem("Select all")
139 clickContextMenuItem("Copy")
140 }.openNavigationToolbar {
148 verifyTypedToolbarText("Washington Crossing the Delaware Wikipedia linkName: Android")
152 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/243839
155 fun verifyCopyPDFTextOptionTest() {
157 TestAssetHelper.getGenericAsset(mockWebServer, 3)
160 }.enterURLAndEnterToBrowser(genericURL.url) {
161 clickPageObject(itemWithText("PDF form file"))
162 longClickPageObject(itemContainingText("Crossing"))
163 clickContextMenuItem("Copy")
164 }.openNavigationToolbar {
172 verifyTypedToolbarText("Crossing")
176 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326835
178 fun verifyShareSelectedPDFTextOptionTest() {
180 TestAssetHelper.getGenericAsset(mockWebServer, 3)
183 }.enterURLAndEnterToBrowser(genericURL.url) {
184 clickPageObject(itemWithText("PDF form file"))
185 longClickPageObject(itemContainingText("Crossing"))
186 }.clickShareSelectedText {
187 verifyAndroidShareLayout()
191 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326836
194 fun verifySearchPDFTextOptionTest() {
196 TestAssetHelper.getGenericAsset(mockWebServer, 3)
199 }.enterURLAndEnterToBrowser(genericURL.url) {
200 clickPageObject(itemWithText("PDF form file"))
201 longClickPageObject(itemContainingText("Crossing"))
202 clickContextMenuItem("Search")
203 verifyTabCounter("2")
204 verifyUrl("Crossing")
208 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326837
210 fun verifyPrivateSearchPDFTextOptionTest() {
212 TestAssetHelper.getGenericAsset(mockWebServer, 3)
215 }.togglePrivateBrowsingMode()
218 }.enterURLAndEnterToBrowser(genericURL.url) {
219 clickPageObject(itemWithText("PDF form file"))
220 longClickPageObject(itemContainingText("Crossing"))
221 clickContextMenuItem("Private Search")
222 verifyTabCounter("2")
223 verifyUrl("Crossing")
227 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326813
229 fun verifyUrlBarTextSelectionOptionsTest() {
230 val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
233 }.enterURLAndEnterToBrowser(genericURL.url) {
234 }.openNavigationToolbar {
235 longClickEditModeToolbar()
236 verifyTextSelectionOptions("Open", "Cut", "Copy", "Share")
240 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326814
242 fun verifyCopyUrlBarTextSelectionOptionTest() {
243 val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
246 }.enterURLAndEnterToBrowser(genericURL.url) {
247 }.openNavigationToolbar {
248 longClickEditModeToolbar()
249 clickContextMenuItem("Copy")
250 clickClearToolbarButton()
251 verifyToolbarIsEmpty()
252 longClickEditModeToolbar()
253 clickContextMenuItem("Paste")
254 verifyUrl(genericURL.url.toString())
258 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326815
260 fun verifyCutUrlBarTextSelectionOptionTest() {
261 val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
264 }.enterURLAndEnterToBrowser(genericURL.url) {
265 }.openNavigationToolbar {
266 longClickEditModeToolbar()
267 clickContextMenuItem("Cut")
268 verifyToolbarIsEmpty()
269 longClickEditModeToolbar()
270 clickContextMenuItem("Paste")
271 verifyUrl(genericURL.url.toString())
275 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/243845
278 fun verifyShareUrlBarTextSelectionOptionTest() {
279 val genericURL = TestAssetHelper.getGenericAsset(mockWebServer, 1)
282 }.enterURLAndEnterToBrowser(genericURL.url) {
283 }.openNavigationToolbar {
284 longClickEditModeToolbar()
285 clickContextMenuItem("Share")
288 verifyAndroidShareLayout()
292 // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/414316
294 fun urlBarQuickActionsTest() {
295 val firstWebsite = TestAssetHelper.getGenericAsset(mockWebServer, 1)
296 val secondWebsite = TestAssetHelper.getGenericAsset(mockWebServer, 2)
299 }.enterURLAndEnterToBrowser(firstWebsite.url) {
301 clickContextMenuItem("Copy")
304 }.enterURLAndEnterToBrowser(secondWebsite.url) {
306 clickContextMenuItem("Paste")
309 verifyTypedToolbarText(firstWebsite.url.toString())
313 verifyUrl(secondWebsite.url.toString())
315 clickContextMenuItem("Paste & Go")
316 verifyUrl(firstWebsite.url.toString())