commit 53da81d4b770bd70e5780b1d4efdeb8f4ebf7295
parent 4d75a9862ba8e07531fc7170d74da9b98234a8b6
Author: Titouan Thibaud <tthibaud@mozilla.com>
Date: Mon, 3 Nov 2025 15:48:50 +0000
Bug 1994182 - Set Open in App settings from tests instead of navigating to the menu. r=android-reviewers,Roger
This makes the tests more reliable, easier to write and a lot faster.
Differential Revision: https://phabricator.services.mozilla.com/D268541
Diffstat:
1 file changed, 28 insertions(+), 123 deletions(-)
diff --git a/mobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsAdvancedTest.kt b/mobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsAdvancedTest.kt
@@ -5,6 +5,7 @@
package org.mozilla.fenix.ui
import androidx.core.net.toUri
+import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.customannotations.SmokeTest
@@ -13,6 +14,7 @@ import org.mozilla.fenix.helpers.AppAndSystemHelper.assertYoutubeAppOpens
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
import org.mozilla.fenix.helpers.MatcherHelper.itemContainingText
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResIdAndText
+import org.mozilla.fenix.helpers.OpenLinksInApp
import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.TestHelper
import org.mozilla.fenix.helpers.TestHelper.exitMenu
@@ -40,6 +42,14 @@ class SettingsAdvancedTest : TestSetup() {
@get:Rule
val memoryLeaksRule = DetectMemoryLeaksRule()
+ lateinit var externalLinksPage: TestAssetHelper.TestAsset
+
+ @Before
+ override fun setUp() {
+ super.setUp()
+ externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
+ }
+
// TestRail link: https://mozilla.testrail.io/index.php?/cases/view/2092699
// Walks through settings menu and sub-menus to ensure all items are present
@Test
@@ -68,15 +78,8 @@ class SettingsAdvancedTest : TestSetup() {
@SmokeTest
@Test
fun askBeforeOpeningOpenLinkInAppTest() {
- val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
-
- homeScreen {
- }.openThreeDotMenu {
- }.openSettings {
- verifyOpenLinksInAppsButton()
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }.openOpenLinksInAppsMenu {
- verifyOpenLinksInAppsView("Ask before opening")
+ activityIntentTestRule.applySettingsExceptions {
+ it.openLinksInExternalApp = OpenLinksInApp.ASK
}
exitMenu()
@@ -92,22 +95,10 @@ class SettingsAdvancedTest : TestSetup() {
// Assumes Youtube is installed and enabled
@Test
fun privateBrowsingAskBeforeOpeningOpenLinkInAppTest() {
- val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
-
- homeScreen {
- }.togglePrivateBrowsingMode()
-
- homeScreen {
- }.openThreeDotMenu {
- }.openSettings {
- verifyOpenLinksInAppsButton()
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }.openOpenLinksInAppsMenu {
- verifyPrivateOpenLinksInAppsView("Ask before opening")
+ activityIntentTestRule.applySettingsExceptions {
+ it.openLinksInExternalApp = OpenLinksInApp.ASK
}
- exitMenu()
-
navigationToolbar {
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(playStoreLink)
@@ -120,22 +111,10 @@ class SettingsAdvancedTest : TestSetup() {
@SmokeTest
@Test
fun askBeforeOpeningLinkInAppCancelTest() {
- val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
-
- homeScreen {
- }.openThreeDotMenu {
- }.openSettings {
- verifyOpenLinksInAppsButton()
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }.openOpenLinksInAppsMenu {
- verifyOpenLinksInAppsView("Ask before opening")
- verifySelectedOpenLinksInAppOption("Ask before opening")
- }.goBack {
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
+ activityIntentTestRule.applySettingsExceptions {
+ it.openLinksInExternalApp = OpenLinksInApp.ASK
}
- exitMenu()
-
navigationToolbar {
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(youTubeSchemaLink)
@@ -150,22 +129,10 @@ class SettingsAdvancedTest : TestSetup() {
@SmokeTest
@Test
fun askBeforeOpeningLinkInAppOpenTest() {
- val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
-
- homeScreen {
- }.openThreeDotMenu {
- }.openSettings {
- verifyOpenLinksInAppsButton()
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }.openOpenLinksInAppsMenu {
- verifyOpenLinksInAppsView("Ask before opening")
- verifySelectedOpenLinksInAppOption("Ask before opening")
- }.goBack {
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
+ activityIntentTestRule.applySettingsExceptions {
+ it.openLinksInExternalApp = OpenLinksInApp.ASK
}
- exitMenu()
-
navigationToolbar {
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(youTubeSchemaLink)
@@ -182,25 +149,13 @@ class SettingsAdvancedTest : TestSetup() {
@Test
fun privateBrowsingAskBeforeOpeningLinkInAppCancelTest() {
TestHelper.appContext.settings().shouldShowCookieBannersCFR = false
- val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
+ activityIntentTestRule.applySettingsExceptions {
+ it.openLinksInExternalApp = OpenLinksInApp.ASK
+ }
homeScreen {
}.togglePrivateBrowsingMode()
- homeScreen {
- }.openThreeDotMenu {
- }.openSettings {
- verifyOpenLinksInAppsButton()
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }.openOpenLinksInAppsMenu {
- verifyPrivateOpenLinksInAppsView("Ask before opening")
- verifySelectedOpenLinksInAppOption("Ask before opening")
- }.goBack {
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }
-
- exitMenu()
-
navigationToolbar {
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(youTubeSchemaLink)
@@ -218,23 +173,13 @@ class SettingsAdvancedTest : TestSetup() {
// Assumes Youtube is installed and enabled
@Test
fun privateBrowsingAskBeforeOpeningLinkInAppOpenTest() {
- val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
+ activityIntentTestRule.applySettingsExceptions {
+ it.openLinksInExternalApp = OpenLinksInApp.ASK
+ }
homeScreen {
}.togglePrivateBrowsingMode()
- homeScreen {
- }.openThreeDotMenu {
- }.openSettings {
- verifyOpenLinksInAppsButton()
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }.openOpenLinksInAppsMenu {
- verifyPrivateOpenLinksInAppsView("Ask before opening")
- verifySelectedOpenLinksInAppOption("Ask before opening")
- }.goBack {
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }
-
exitMenu()
navigationToolbar {
@@ -256,23 +201,10 @@ class SettingsAdvancedTest : TestSetup() {
// Assumes Youtube is installed and enabled
@Test
fun alwaysOpenLinkInAppTest() {
- val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
-
- homeScreen {
- }.openThreeDotMenu {
- }.openSettings {
- verifyOpenLinksInAppsButton()
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }.openOpenLinksInAppsMenu {
- verifyOpenLinksInAppsView("Ask before opening")
- clickOpenLinkInAppOption("Always")
- verifySelectedOpenLinksInAppOption("Always")
- }.goBack {
- verifySettingsOptionSummary("Open links in apps", "Always")
+ activityIntentTestRule.applySettingsExceptions {
+ it.openLinksInExternalApp = OpenLinksInApp.ALWAYS
}
- exitMenu()
-
navigationToolbar {
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(youTubeSchemaLink)
@@ -286,22 +218,9 @@ class SettingsAdvancedTest : TestSetup() {
fun dismissOpenLinksInAppCFRTest() {
activityIntentTestRule.applySettingsExceptions {
it.isOpenInAppBannerEnabled = true
+ it.openLinksInExternalApp = OpenLinksInApp.NEVER
}
- homeScreen {
- }.openThreeDotMenu {
- }.openSettings {
- verifyOpenLinksInAppsButton()
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }.openOpenLinksInAppsMenu {
- verifyOpenLinksInAppsView("Ask before opening")
- clickOpenLinkInAppOption("Never")
- verifySelectedOpenLinksInAppOption("Never")
- }.goBack {
- verifySettingsOptionSummary("Open links in apps", "Never")
- }
-
- exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser("https://m.youtube.com/".toUri()) {
verifyPageContent("youtube")
@@ -316,23 +235,9 @@ class SettingsAdvancedTest : TestSetup() {
fun goToSettingsFromOpenLinksInAppCFRTest() {
activityIntentTestRule.applySettingsExceptions {
it.isOpenInAppBannerEnabled = true
+ it.openLinksInExternalApp = OpenLinksInApp.NEVER
}
- homeScreen {
- }.openThreeDotMenu {
- }.openSettings {
- verifyOpenLinksInAppsButton()
- verifySettingsOptionSummary("Open links in apps", "Ask before opening")
- }.openOpenLinksInAppsMenu {
- verifyOpenLinksInAppsView("Ask before opening")
- clickOpenLinkInAppOption("Never")
- verifySelectedOpenLinksInAppOption("Never")
- }.goBack {
- verifySettingsOptionSummary("Open links in apps", "Never")
- }
-
- exitMenu()
-
navigationToolbar {
}.enterURLAndEnterToBrowser("https://m.youtube.com/".toUri()) {
verifyPageContent("youtube")