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.
313 lines
10 KiB
Kotlin
313 lines
10 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/. */
|
|
|
|
@file:Suppress("DEPRECATION")
|
|
|
|
package org.mozilla.fenix.ui
|
|
|
|
import androidx.core.net.toUri
|
|
import androidx.test.rule.ActivityTestRule
|
|
import org.junit.Rule
|
|
import org.junit.Test
|
|
import org.mozilla.fenix.IntentReceiverActivity
|
|
import org.mozilla.fenix.customannotations.SmokeTest
|
|
import org.mozilla.fenix.helpers.AppAndSystemHelper.openAppFromExternalLink
|
|
import org.mozilla.fenix.helpers.DataGenerationHelper.createCustomTabIntent
|
|
import org.mozilla.fenix.helpers.HomeActivityIntentTestRule
|
|
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResIdAndText
|
|
import org.mozilla.fenix.helpers.MatcherHelper.itemWithText
|
|
import org.mozilla.fenix.helpers.TestAssetHelper
|
|
import org.mozilla.fenix.helpers.TestHelper.exitMenu
|
|
import org.mozilla.fenix.helpers.TestHelper.mDevice
|
|
import org.mozilla.fenix.helpers.TestSetup
|
|
import org.mozilla.fenix.ui.robots.browserScreen
|
|
import org.mozilla.fenix.ui.robots.clickPageObject
|
|
import org.mozilla.fenix.ui.robots.customTabScreen
|
|
import org.mozilla.fenix.ui.robots.enhancedTrackingProtection
|
|
import org.mozilla.fenix.ui.robots.homeScreen
|
|
import org.mozilla.fenix.ui.robots.navigationToolbar
|
|
import org.mozilla.fenix.ui.robots.notificationShade
|
|
import org.mozilla.fenix.ui.robots.openEditURLView
|
|
import org.mozilla.fenix.ui.robots.searchScreen
|
|
|
|
class CustomTabsTest : TestSetup() {
|
|
private val customMenuItem = "TestMenuItem"
|
|
private val customTabActionButton = "CustomActionButton"
|
|
|
|
/* Updated externalLinks.html to v2.0,
|
|
changed the hypertext reference to mozilla-mobile.github.io/testapp/downloads for "External link"
|
|
*/
|
|
private val externalLinksPWAPage = "https://mozilla-mobile.github.io/testapp/v2.0/externalLinks.html"
|
|
private val loginPage = "https://mozilla-mobile.github.io/testapp/loginForm"
|
|
|
|
@get:Rule
|
|
val activityTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides()
|
|
|
|
@get: Rule
|
|
val intentReceiverActivityTestRule = ActivityTestRule(
|
|
IntentReceiverActivity::class.java,
|
|
true,
|
|
false,
|
|
)
|
|
|
|
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/249659
|
|
@SmokeTest
|
|
@Test
|
|
fun verifyLoginSaveInCustomTabTest() {
|
|
intentReceiverActivityTestRule.launchActivity(
|
|
createCustomTabIntent(
|
|
loginPage.toUri().toString(),
|
|
customMenuItem,
|
|
),
|
|
)
|
|
|
|
customTabScreen {
|
|
waitForPageToLoad()
|
|
fillAndSubmitLoginCredentials("mozilla", "firefox")
|
|
}
|
|
|
|
browserScreen {
|
|
verifySaveLoginPromptIsDisplayed()
|
|
clickPageObject(itemWithText("Save"))
|
|
}
|
|
|
|
openAppFromExternalLink(loginPage)
|
|
|
|
browserScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
}.openLoginsAndPasswordSubMenu {
|
|
}.openSavedLogins {
|
|
verifySecurityPromptForLogins()
|
|
tapSetupLater()
|
|
verifySavedLoginsSectionUsername("mozilla")
|
|
}
|
|
}
|
|
|
|
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2334762
|
|
@Test
|
|
fun copyCustomTabToolbarUrlTest() {
|
|
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
|
|
|
intentReceiverActivityTestRule.launchActivity(
|
|
createCustomTabIntent(
|
|
customTabPage.url.toString(),
|
|
customMenuItem,
|
|
),
|
|
)
|
|
|
|
customTabScreen {
|
|
longCLickAndCopyToolbarUrl()
|
|
}
|
|
|
|
openAppFromExternalLink(customTabPage.url.toString())
|
|
|
|
navigationToolbar {
|
|
openEditURLView()
|
|
}
|
|
|
|
searchScreen {
|
|
clickClearButton()
|
|
longClickToolbar()
|
|
clickPasteText()
|
|
verifyTypedToolbarText(customTabPage.url.toString())
|
|
}
|
|
}
|
|
|
|
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2334761
|
|
@SmokeTest
|
|
@Test
|
|
fun verifyDownloadInACustomTabTest() {
|
|
val customTabPage = "https://storage.googleapis.com/mobile_test_assets/test_app/downloads.html"
|
|
val downloadFile = "web_icon.png"
|
|
|
|
intentReceiverActivityTestRule.launchActivity(
|
|
createCustomTabIntent(
|
|
customTabPage.toUri().toString(),
|
|
customMenuItem,
|
|
),
|
|
)
|
|
|
|
customTabScreen {
|
|
waitForPageToLoad()
|
|
}
|
|
|
|
browserScreen {
|
|
}.clickDownloadLink(downloadFile) {
|
|
verifyDownloadPrompt(downloadFile)
|
|
}.clickDownload {
|
|
verifyDownloadCompleteNotificationPopup()
|
|
}
|
|
mDevice.openNotification()
|
|
notificationShade {
|
|
verifySystemNotificationExists("Download completed")
|
|
}
|
|
}
|
|
|
|
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/249644
|
|
// Verifies the main menu of a custom tab with a custom menu item
|
|
@SmokeTest
|
|
@Test
|
|
fun verifyCustomTabMenuItemsTest() {
|
|
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
|
|
|
intentReceiverActivityTestRule.launchActivity(
|
|
createCustomTabIntent(
|
|
customTabPage.url.toString(),
|
|
customMenuItem,
|
|
),
|
|
)
|
|
|
|
customTabScreen {
|
|
verifyCustomTabCloseButton()
|
|
}.openMainMenu {
|
|
verifyPoweredByTextIsDisplayed()
|
|
verifyCustomMenuItem(customMenuItem)
|
|
verifyDesktopSiteButtonExists()
|
|
verifyFindInPageButtonExists()
|
|
verifyOpenInBrowserButtonExists()
|
|
verifyBackButtonExists()
|
|
verifyForwardButtonExists()
|
|
verifyRefreshButtonExists()
|
|
}
|
|
}
|
|
|
|
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/249645
|
|
// The test opens a link in a custom tab then sends it to the browser
|
|
@SmokeTest
|
|
@Test
|
|
fun openCustomTabInFirefoxTest() {
|
|
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
|
|
|
intentReceiverActivityTestRule.launchActivity(
|
|
createCustomTabIntent(
|
|
customTabPage.url.toString(),
|
|
),
|
|
)
|
|
|
|
customTabScreen {
|
|
verifyCustomTabCloseButton()
|
|
}.openMainMenu {
|
|
}.clickOpenInBrowserButton {
|
|
verifyTabCounter("1")
|
|
}
|
|
}
|
|
|
|
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2239548
|
|
@Test
|
|
fun shareCustomTabUsingToolbarButtonTest() {
|
|
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
|
|
|
intentReceiverActivityTestRule.launchActivity(
|
|
createCustomTabIntent(
|
|
customTabPage.url.toString(),
|
|
),
|
|
)
|
|
|
|
customTabScreen {
|
|
}.clickShareButton {
|
|
verifyShareTabLayout()
|
|
}
|
|
}
|
|
|
|
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/249643
|
|
@Test
|
|
fun verifyCustomTabViewItemsTest() {
|
|
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
|
|
|
intentReceiverActivityTestRule.launchActivity(
|
|
createCustomTabIntent(
|
|
pageUrl = customTabPage.url.toString(),
|
|
customActionButtonDescription = customTabActionButton,
|
|
),
|
|
)
|
|
|
|
customTabScreen {
|
|
verifyCustomTabCloseButton()
|
|
verifyCustomTabsSiteInfoButton()
|
|
verifyCustomTabToolbarTitle(customTabPage.title)
|
|
verifyCustomTabUrl(customTabPage.url.toString())
|
|
verifyCustomTabActionButton(customTabActionButton)
|
|
verifyCustomTabsShareButton()
|
|
verifyMainMenuButton()
|
|
clickCustomTabCloseButton()
|
|
}
|
|
homeScreen {
|
|
verifyHomeScreenAppBarItems()
|
|
}
|
|
}
|
|
|
|
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2239544
|
|
@Test
|
|
fun verifyPDFViewerInACustomTabTest() {
|
|
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 3)
|
|
val pdfFormResource = TestAssetHelper.getPdfFormAsset(mockWebServer)
|
|
|
|
intentReceiverActivityTestRule.launchActivity(
|
|
createCustomTabIntent(
|
|
customTabPage.url.toString(),
|
|
),
|
|
)
|
|
|
|
customTabScreen {
|
|
clickPageObject(itemWithText("PDF form file"))
|
|
clickPageObject(itemWithResIdAndText("android:id/button2", "CANCEL"))
|
|
waitForPageToLoad()
|
|
verifyPDFReaderToolbarItems()
|
|
verifyCustomTabCloseButton()
|
|
verifyCustomTabsSiteInfoButton()
|
|
verifyCustomTabToolbarTitle("pdfForm.pdf")
|
|
verifyCustomTabUrl(pdfFormResource.url.toString())
|
|
verifyCustomTabsShareButton()
|
|
verifyMainMenuButton()
|
|
clickCustomTabCloseButton()
|
|
}
|
|
homeScreen {
|
|
verifyHomeScreenAppBarItems()
|
|
}
|
|
}
|
|
|
|
// TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2239117
|
|
@Test
|
|
fun verifyCustomTabETPSheetAndToggleTest() {
|
|
val customTabPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
|
|
|
intentReceiverActivityTestRule.launchActivity(
|
|
createCustomTabIntent(
|
|
pageUrl = customTabPage.url.toString(),
|
|
customActionButtonDescription = customTabActionButton,
|
|
),
|
|
)
|
|
|
|
enhancedTrackingProtection {
|
|
}.openEnhancedTrackingProtectionSheet {
|
|
verifyEnhancedTrackingProtectionSheetStatus(status = "ON", state = true)
|
|
}.toggleEnhancedTrackingProtectionFromSheet {
|
|
verifyEnhancedTrackingProtectionSheetStatus(status = "OFF", state = false)
|
|
}.closeEnhancedTrackingProtectionSheet {
|
|
}
|
|
|
|
openAppFromExternalLink(customTabPage.url.toString())
|
|
|
|
browserScreen {
|
|
}.openThreeDotMenu {
|
|
}.openSettings {
|
|
}.openEnhancedTrackingProtectionSubMenu {
|
|
switchEnhancedTrackingProtectionToggle()
|
|
verifyEnhancedTrackingProtectionOptionsEnabled(enabled = false)
|
|
}
|
|
|
|
exitMenu()
|
|
|
|
browserScreen {
|
|
}.goBack {
|
|
// Actually exiting to the previously opened custom tab
|
|
}
|
|
|
|
enhancedTrackingProtection {
|
|
verifyETPSectionIsDisplayedInQuickSettingsSheet(isDisplayed = false)
|
|
}
|
|
}
|
|
}
|