From de365d74c6c9efb75ebac7eeacdf5a9d74085ca0 Mon Sep 17 00:00:00 2001 From: "oana.horvath" Date: Mon, 26 Feb 2024 16:54:23 +0200 Subject: [PATCH] Bug 1880820 - Create TestSetup helper: Test classes S-W --- .../mozilla/fenix/ui/SitePermissionsTest.kt | 21 ++---------- .../fenix/ui/SponsoredShortcutsTest.kt | 27 ++------------- .../mozilla/fenix/ui/TabbedBrowsingTest.kt | 34 ++----------------- .../org/mozilla/fenix/ui/TextSelectionTest.kt | 27 ++------------- .../java/org/mozilla/fenix/ui/TopSitesTest.kt | 27 ++------------- .../fenix/ui/TotalCookieProtectionTest.kt | 18 ++++------ .../fenix/ui/UpgradingUsersOnboardingTest.kt | 3 +- .../org/mozilla/fenix/ui/WebControlsTest.kt | 22 ++---------- 8 files changed, 23 insertions(+), 156 deletions(-) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/SitePermissionsTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/SitePermissionsTest.kt index 394638625..629d98f0f 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/SitePermissionsTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/SitePermissionsTest.kt @@ -11,14 +11,10 @@ import android.media.AudioManager import android.os.Build import androidx.core.net.toUri import androidx.test.rule.GrantPermissionRule -import okhttp3.mockwebserver.MockWebServer -import org.junit.After import org.junit.Assume.assumeTrue -import org.junit.Before import org.junit.Rule import org.junit.Test import org.mozilla.fenix.customannotations.SmokeTest -import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.AppAndSystemHelper.assertExternalAppOpens import org.mozilla.fenix.helpers.AppAndSystemHelper.grantSystemPermission import org.mozilla.fenix.helpers.HomeActivityIntentTestRule @@ -27,6 +23,7 @@ import org.mozilla.fenix.helpers.MockLocationUpdatesRule import org.mozilla.fenix.helpers.RetryTestRule import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestHelper.appContext +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.navigationToolbar @@ -35,9 +32,8 @@ import org.mozilla.fenix.ui.robots.navigationToolbar * Tests for verifying site permissions prompts & functionality * */ -class SitePermissionsTest { +class SitePermissionsTest : TestSetup() { /* Test page created and handled by the Mozilla mobile test-eng team */ - private lateinit var mockWebServer: MockWebServer private val testPage = "https://mozilla-mobile.github.io/testapp/permissions" private val testPageSubstring = "https://mozilla-mobile.github.io:443" private val cameraManager = appContext.getSystemService(Context.CAMERA_SERVICE) as CameraManager @@ -64,19 +60,6 @@ class SitePermissionsTest { @get: Rule val retryTestRule = RetryTestRule(3) - @Before - fun setUp() { - mockWebServer = MockWebServer().apply { - dispatcher = AndroidAssetDispatcher() - start() - } - } - - @After - fun tearDown() { - mockWebServer.shutdown() - } - // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2334295 @SmokeTest @Test diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/SponsoredShortcutsTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/SponsoredShortcutsTest.kt index 4faa532a3..47f6aff3f 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/SponsoredShortcutsTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/SponsoredShortcutsTest.kt @@ -4,50 +4,27 @@ package org.mozilla.fenix.ui -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice -import okhttp3.mockwebserver.MockWebServer -import org.junit.After -import org.junit.Before import org.junit.Rule import org.junit.Test import org.mozilla.fenix.customannotations.SmokeTest -import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.Constants.defaultTopSitesList import org.mozilla.fenix.helpers.DataGenerationHelper.getSponsoredShortcutTitle import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.TestAssetHelper +import org.mozilla.fenix.helpers.TestSetup import org.mozilla.fenix.ui.robots.homeScreen /** * Tests Sponsored shortcuts functionality */ -class SponsoredShortcutsTest { - private lateinit var mDevice: UiDevice - private lateinit var mockWebServer: MockWebServer - private val defaultSearchEngine = "Amazon.com" +class SponsoredShortcutsTest : TestSetup() { private lateinit var sponsoredShortcutTitle: String private lateinit var sponsoredShortcutTitle2: String @get:Rule val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides(skipOnboarding = true) - @Before - fun setUp() { - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - - mockWebServer = MockWebServer().apply { - dispatcher = AndroidAssetDispatcher() - start() - } - } - - @After - fun tearDown() { - mockWebServer.shutdown() - } - // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/1729331 // Expected for en-us defaults @SmokeTest diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/TabbedBrowsingTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/TabbedBrowsingTest.kt index 7072d6efa..b108bff01 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/TabbedBrowsingTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/TabbedBrowsingTest.kt @@ -4,26 +4,20 @@ package org.mozilla.fenix.ui -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice import com.google.android.material.bottomsheet.BottomSheetBehavior -import mozilla.components.browser.state.store.BrowserStore import mozilla.components.concept.engine.mediasession.MediaSession -import okhttp3.mockwebserver.MockWebServer -import org.junit.After -import org.junit.Before import org.junit.Rule import org.junit.Test import org.mozilla.fenix.customannotations.SmokeTest -import org.mozilla.fenix.ext.components -import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.MatcherHelper import org.mozilla.fenix.helpers.RetryTestRule import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestHelper.closeApp +import org.mozilla.fenix.helpers.TestHelper.mDevice import org.mozilla.fenix.helpers.TestHelper.restartApp import org.mozilla.fenix.helpers.TestHelper.verifySnackBarText +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.homeScreen @@ -47,11 +41,7 @@ import org.mozilla.fenix.ui.robots.notificationShade * - Shortcut context menu navigation */ -class TabbedBrowsingTest { - private lateinit var mDevice: UiDevice - private lateinit var mockWebServer: MockWebServer - private lateinit var browserStore: BrowserStore - +class TabbedBrowsingTest : TestSetup() { @get:Rule val activityTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides(skipOnboarding = true) @@ -59,24 +49,6 @@ class TabbedBrowsingTest { @JvmField val retryTestRule = RetryTestRule(3) - @Before - fun setUp() { - // Initializing this as part of class construction, below the rule would throw a NPE - // So we are initializing this here instead of in all related tests. - browserStore = activityTestRule.activity.components.core.store - - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - mockWebServer = MockWebServer().apply { - dispatcher = AndroidAssetDispatcher() - start() - } - } - - @After - fun tearDown() { - mockWebServer.shutdown() - } - // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/903599 @Test fun closeAllTabsTest() { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/TextSelectionTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/TextSelectionTest.kt index 4a84b4e26..2cf731d63 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/TextSelectionTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/TextSelectionTest.kt @@ -4,20 +4,16 @@ package org.mozilla.fenix.ui -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice -import okhttp3.mockwebserver.MockWebServer -import org.junit.After -import org.junit.Before import org.junit.Rule import org.junit.Test import org.mozilla.fenix.customannotations.SmokeTest -import org.mozilla.fenix.helpers.AndroidAssetDispatcher 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.mDevice +import org.mozilla.fenix.helpers.TestSetup import org.mozilla.fenix.ui.robots.browserScreen import org.mozilla.fenix.ui.robots.clickContextMenuItem import org.mozilla.fenix.ui.robots.clickPageObject @@ -28,10 +24,7 @@ import org.mozilla.fenix.ui.robots.openEditURLView import org.mozilla.fenix.ui.robots.searchScreen import org.mozilla.fenix.ui.robots.shareOverlay -class TextSelectionTest { - private lateinit var mDevice: UiDevice - private lateinit var mockWebServer: MockWebServer - +class TextSelectionTest : TestSetup() { @get:Rule val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides() @@ -39,20 +32,6 @@ class TextSelectionTest { @JvmField val retryTestRule = RetryTestRule(3) - @Before - fun setUp() { - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - mockWebServer = MockWebServer().apply { - dispatcher = AndroidAssetDispatcher() - start() - } - } - - @After - fun tearDown() { - mockWebServer.shutdown() - } - // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2326832 @SmokeTest @Test diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/TopSitesTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/TopSitesTest.kt index a45320d36..a5426c33e 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/TopSitesTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/TopSitesTest.kt @@ -4,24 +4,20 @@ package org.mozilla.fenix.ui -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice -import okhttp3.mockwebserver.MockWebServer -import org.junit.After -import org.junit.Before import org.junit.Rule import org.junit.Test import org.mozilla.fenix.R import org.mozilla.fenix.customannotations.SmokeTest -import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.Constants.defaultTopSitesList import org.mozilla.fenix.helpers.DataGenerationHelper.generateRandomString import org.mozilla.fenix.helpers.DataGenerationHelper.getStringResource import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.TestAssetHelper.getGenericAsset import org.mozilla.fenix.helpers.TestHelper.clickSnackbarButton +import org.mozilla.fenix.helpers.TestHelper.mDevice import org.mozilla.fenix.helpers.TestHelper.verifySnackBarText import org.mozilla.fenix.helpers.TestHelper.waitUntilSnackbarGone +import org.mozilla.fenix.helpers.TestSetup import org.mozilla.fenix.ui.robots.browserScreen import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.navigationToolbar @@ -35,27 +31,10 @@ import org.mozilla.fenix.ui.robots.navigationToolbar * - Verifies existence of default top sites available on the home-screen */ -class TopSitesTest { - private lateinit var mDevice: UiDevice - private lateinit var mockWebServer: MockWebServer - +class TopSitesTest : TestSetup() { @get:Rule val activityIntentTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides(skipOnboarding = true) - @Before - fun setUp() { - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - mockWebServer = MockWebServer().apply { - dispatcher = AndroidAssetDispatcher() - start() - } - } - - @After - fun tearDown() { - mockWebServer.shutdown() - } - // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/532598 @SmokeTest @Test diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/TotalCookieProtectionTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/TotalCookieProtectionTest.kt index 3eb7068c3..9e708b2de 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/TotalCookieProtectionTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/TotalCookieProtectionTest.kt @@ -5,16 +5,15 @@ package org.mozilla.fenix.ui import androidx.compose.ui.test.junit4.AndroidComposeTestRule -import okhttp3.mockwebserver.MockWebServer import org.junit.After import org.junit.Before import org.junit.Rule import org.junit.Test import org.mozilla.fenix.components.toolbar.CFR_MINIMUM_NUMBER_OPENED_TABS import org.mozilla.fenix.ext.settings -import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.HomeActivityTestRule import org.mozilla.fenix.helpers.TestAssetHelper.getGenericAsset +import org.mozilla.fenix.helpers.TestSetup import org.mozilla.fenix.ui.robots.navigationToolbar /** @@ -22,9 +21,7 @@ import org.mozilla.fenix.ui.robots.navigationToolbar * Note: This involves setting the feature flags On for CFRs which are disabled elsewhere. * */ -class TotalCookieProtectionTest { - private lateinit var mockWebServer: MockWebServer - +class TotalCookieProtectionTest : TestSetup() { @get:Rule val composeTestRule = AndroidComposeTestRule( HomeActivityTestRule( @@ -33,17 +30,14 @@ class TotalCookieProtectionTest { ) { it.activity } @Before - fun setUp() { + override fun setUp() { + super.setUp() CFR_MINIMUM_NUMBER_OPENED_TABS = 0 - mockWebServer = MockWebServer().apply { - dispatcher = AndroidAssetDispatcher() - start() - } } @After - fun tearDown() { - mockWebServer.shutdown() + override fun tearDown() { + super.tearDown() CFR_MINIMUM_NUMBER_OPENED_TABS = 5 } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/UpgradingUsersOnboardingTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/UpgradingUsersOnboardingTest.kt index 98f912bc7..04f435c1c 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/UpgradingUsersOnboardingTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/UpgradingUsersOnboardingTest.kt @@ -10,6 +10,7 @@ import org.junit.Test import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.TestHelper.mDevice import org.mozilla.fenix.helpers.TestHelper.relaunchCleanApp +import org.mozilla.fenix.helpers.TestSetup import org.mozilla.fenix.ui.robots.homeScreen /** @@ -17,7 +18,7 @@ import org.mozilla.fenix.ui.robots.homeScreen * Note: This involves setting the feature flag On for the onboarding cards * */ -class UpgradingUsersOnboardingTest { +class UpgradingUsersOnboardingTest : TestSetup() { @get:Rule val activityTestRule = AndroidComposeTestRule( diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/WebControlsTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/WebControlsTest.kt index 8375b8862..2fea99511 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/WebControlsTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/WebControlsTest.kt @@ -4,12 +4,8 @@ package org.mozilla.fenix.ui -import okhttp3.mockwebserver.MockWebServer -import org.junit.After -import org.junit.Before import org.junit.Rule import org.junit.Test -import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.AppAndSystemHelper.assertNativeAppOpens import org.mozilla.fenix.helpers.Constants import org.mozilla.fenix.helpers.HomeActivityTestRule @@ -19,6 +15,7 @@ import org.mozilla.fenix.helpers.MatcherHelper.itemWithResId import org.mozilla.fenix.helpers.MatcherHelper.itemWithResIdAndText import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestAssetHelper.getHTMLControlsFormAsset +import org.mozilla.fenix.helpers.TestSetup import org.mozilla.fenix.ui.robots.clickPageObject import org.mozilla.fenix.ui.robots.navigationToolbar import java.time.LocalDate @@ -28,9 +25,7 @@ import java.time.LocalDate * */ -class WebControlsTest { - private lateinit var mockWebServer: MockWebServer - +class WebControlsTest : TestSetup() { private val hour = 10 private val minute = 10 private val colorHexValue = "#5b2067" @@ -43,19 +38,6 @@ class WebControlsTest { isTCPCFREnabled = false, ) - @Before - fun setUp() { - mockWebServer = MockWebServer().apply { - dispatcher = AndroidAssetDispatcher() - start() - } - } - - @After - fun tearDown() { - mockWebServer.shutdown() - } - // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2316067 @Test fun verifyCalendarFormInteractionsTest() {