Bug 1851586 - UI tests: replace external apps links with workarounds

fenix/119.0
oana.horvath 9 months ago committed by mergify[bot]
parent 66afb4e016
commit b0bd47a173

@ -8,19 +8,22 @@
<p>Misc Link Types</p>
<section>
<a href="https://duckduckgo.com/">External link</a>
<a href="mailto://example@example.com">Email link</a>
</section>
<section>
<a href="mailto://example@example.com">Email link</a>
<a href="tel://1234567890">Telephone link</a>
</section>
<section>
<a href="tel://1234567890">Telephone link</a>
<a href="vnd.youtube://@Mozilla">Youtube schema link</a>
</section>
<section>
<a href="https://m.youtube.com/user/mozilla?cbrd=1">Youtube link</a>
<a href="https://m.youtube.com/user/mozilla?cbrd=1">Youtube full link</a>
</section>
<section>
<a href="http://play.google.com/store/apps/details?id=org.mozilla.firefox">Playstore link</a>
</section>
</html>

@ -15,12 +15,13 @@ import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
import org.mozilla.fenix.helpers.Constants
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
import org.mozilla.fenix.helpers.MatcherHelper.itemContainingText
import org.mozilla.fenix.helpers.MatcherHelper.itemWithText
import org.mozilla.fenix.helpers.RetryTestRule
import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.TestHelper.assertYoutubeAppOpens
import org.mozilla.fenix.helpers.TestHelper.assertExternalAppOpens
import org.mozilla.fenix.helpers.TestHelper.clickSnackbarButton
import org.mozilla.fenix.ui.robots.clickContextMenuItem
import org.mozilla.fenix.ui.robots.clickPageObject
@ -291,9 +292,10 @@ class ComposeContextMenusTest {
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
longClickPageObject(itemContainingText("Youtube link"))
longClickPageObject(itemContainingText("Youtube full link"))
verifyContextMenuForLinksToOtherApps("youtube.com")
clickContextMenuItem("Open link in external app")
assertYoutubeAppOpens()
assertExternalAppOpens(Constants.PackageName.YOUTUBE_APP)
}
}
}

@ -15,12 +15,13 @@ import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
import org.mozilla.fenix.helpers.Constants.PackageName.YOUTUBE_APP
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
import org.mozilla.fenix.helpers.MatcherHelper.itemContainingText
import org.mozilla.fenix.helpers.MatcherHelper.itemWithText
import org.mozilla.fenix.helpers.RetryTestRule
import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.TestHelper.assertYoutubeAppOpens
import org.mozilla.fenix.helpers.TestHelper.assertExternalAppOpens
import org.mozilla.fenix.helpers.TestHelper.clickSnackbarButton
import org.mozilla.fenix.ui.robots.clickContextMenuItem
import org.mozilla.fenix.ui.robots.clickPageObject
@ -287,10 +288,10 @@ class ContextMenusTest {
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
longClickPageObject(itemContainingText("Youtube link"))
verifyContextMenuForLinksToOtherApps("youtube.com".toUri())
longClickPageObject(itemContainingText("Youtube full link"))
verifyContextMenuForLinksToOtherApps("youtube.com")
clickContextMenuItem("Open link in external app")
assertYoutubeAppOpens()
assertExternalAppOpens(YOUTUBE_APP)
}
}
}

@ -32,6 +32,11 @@ import org.mozilla.fenix.ui.robots.navigationToolbar
class SettingsAdvancedTest {
private lateinit var mDevice: UiDevice
private lateinit var mockWebServer: MockWebServer
private val youTubeSchemaLink = itemContainingText("Youtube schema link")
private val youTubeFullLink = itemContainingText("Youtube full link")
private val playStoreLink = itemContainingText("Playstore link")
private val playStoreUrl = "play.google.com"
private val youTubePage = "vnd.youtube://".toUri()
@get:Rule
val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
@ -77,7 +82,7 @@ class SettingsAdvancedTest {
@SmokeTest
@Test
fun neverOpenLinkInAppTest() {
val defaultWebPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
homeScreen {
}.openThreeDotMenu {
@ -91,10 +96,10 @@ class SettingsAdvancedTest {
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
clickPageObject(itemContainingText("Youtube link"))
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(playStoreLink)
waitForPageToLoad()
verifyUrl("youtube.com")
verifyUrl(playStoreUrl)
}
}
@ -102,7 +107,7 @@ class SettingsAdvancedTest {
// Assumes Youtube is installed and enabled
@Test
fun privateBrowsingNeverOpenLinkInAppTest() {
val defaultWebPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
homeScreen {
}.togglePrivateBrowsingMode()
@ -119,10 +124,10 @@ class SettingsAdvancedTest {
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
clickPageObject(itemContainingText("Youtube link"))
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(playStoreLink)
waitForPageToLoad()
verifyUrl("youtube.com")
verifyUrl(playStoreUrl)
}
}
@ -131,7 +136,7 @@ class SettingsAdvancedTest {
@SmokeTest
@Test
fun askBeforeOpeningLinkInAppCancelTest() {
val defaultWebPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
homeScreen {
}.openThreeDotMenu {
@ -149,12 +154,12 @@ class SettingsAdvancedTest {
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
clickPageObject(itemContainingText("Youtube link"))
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(youTubeFullLink)
verifyOpenLinkInAnotherAppPrompt()
clickPageObject(itemWithResIdAndText("android:id/button2", "CANCEL"))
waitForPageToLoad()
verifyUrl("youtube.com")
verifyUrl("youtube")
}
}
@ -163,7 +168,7 @@ class SettingsAdvancedTest {
@SmokeTest
@Test
fun askBeforeOpeningLinkInAppOpenTest() {
val defaultWebPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
homeScreen {
}.openThreeDotMenu {
@ -181,8 +186,8 @@ class SettingsAdvancedTest {
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
clickPageObject(itemContainingText("Youtube link"))
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(youTubeSchemaLink)
verifyOpenLinkInAnotherAppPrompt()
clickPageObject(itemWithResIdAndText("android:id/button1", "OPEN"))
mDevice.waitForIdle()
@ -194,7 +199,7 @@ class SettingsAdvancedTest {
// Assumes Youtube is installed and enabled
@Test
fun privateBrowsingAskBeforeOpeningLinkInAppCancelTest() {
val defaultWebPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
homeScreen {
}.togglePrivateBrowsingMode()
@ -215,12 +220,12 @@ class SettingsAdvancedTest {
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
clickPageObject(itemContainingText("Youtube link"))
verifyPrivateBrowsingOpenLinkInAnotherAppPrompt("youtube.com")
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(youTubeFullLink)
verifyPrivateBrowsingOpenLinkInAnotherAppPrompt("youtube")
clickPageObject(itemWithResIdAndText("android:id/button2", "CANCEL"))
waitForPageToLoad()
verifyUrl("youtube.com")
verifyUrl("youtube")
}
}
@ -228,7 +233,7 @@ class SettingsAdvancedTest {
// Assumes Youtube is installed and enabled
@Test
fun privateBrowsingAskBeforeOpeningLinkInAppOpenTest() {
val defaultWebPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
homeScreen {
}.togglePrivateBrowsingMode()
@ -249,9 +254,9 @@ class SettingsAdvancedTest {
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
clickPageObject(itemContainingText("Youtube link"))
verifyPrivateBrowsingOpenLinkInAnotherAppPrompt("youtube.com")
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(youTubeSchemaLink)
verifyPrivateBrowsingOpenLinkInAnotherAppPrompt("youtube")
clickPageObject(itemWithResIdAndText("android:id/button1", "OPEN"))
mDevice.waitForIdle()
assertYoutubeAppOpens()
@ -262,7 +267,7 @@ class SettingsAdvancedTest {
// Assumes Youtube is installed and enabled
@Test
fun alwaysOpenLinkInAppTest() {
val defaultWebPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer)
homeScreen {
}.openThreeDotMenu {
@ -280,8 +285,8 @@ class SettingsAdvancedTest {
exitMenu()
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.url) {
clickPageObject(itemContainingText("Youtube link"))
}.enterURLAndEnterToBrowser(externalLinksPage.url) {
clickPageObject(youTubeSchemaLink)
mDevice.waitForIdle()
assertYoutubeAppOpens()
}
@ -293,10 +298,9 @@ class SettingsAdvancedTest {
activityIntentTestRule.applySettingsExceptions {
it.isOpenInAppBannerEnabled = true
}
val defaultWebPage = "https://m.youtube.com/"
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.toUri()) {
}.enterURLAndEnterToBrowser(youTubePage) {
waitForPageToLoad()
verifyOpenLinksInAppsCFRExists(true)
clickOpenLinksInAppsDismissCFRButton()
@ -310,10 +314,9 @@ class SettingsAdvancedTest {
activityIntentTestRule.applySettingsExceptions {
it.isOpenInAppBannerEnabled = true
}
val defaultWebPage = "https://m.youtube.com/"
navigationToolbar {
}.enterURLAndEnterToBrowser(defaultWebPage.toUri()) {
}.enterURLAndEnterToBrowser(youTubePage) {
waitForPageToLoad()
verifyOpenLinksInAppsCFRExists(true)
}.clickOpenLinksInAppsGoToSettingsCFRButton {

@ -192,11 +192,11 @@ class BrowserRobot {
)
}
fun verifyContextMenuForLinksToOtherApps(containsURL: Uri) {
fun verifyContextMenuForLinksToOtherApps(containsURL: String) {
// If the link is re-directing to an external app the "Open link in external app" option is available
// If the link is not directing to another local asset the "Download link" option is not available
assertItemContainingTextExists(
contextMenuLinkUrl(containsURL.toString()),
contextMenuLinkUrl(containsURL),
contextMenuOpenLinkInNewTab,
contextMenuOpenLinkInPrivateTab,
contextMenuCopyLink,

Loading…
Cancel
Save