diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/MainMenuTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/MainMenuTest.kt index 24a877737..7302bc9b0 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/MainMenuTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/MainMenuTest.kt @@ -5,17 +5,11 @@ package org.mozilla.fenix.ui import androidx.core.net.toUri -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice import mozilla.components.concept.engine.utils.EngineReleaseChannel -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.AppAndSystemHelper.assertNativeAppOpens import org.mozilla.fenix.helpers.AppAndSystemHelper.assertYoutubeAppOpens import org.mozilla.fenix.helpers.AppAndSystemHelper.runWithCondition @@ -25,6 +19,8 @@ import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.MatcherHelper import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestHelper +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 @@ -32,28 +28,11 @@ import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.longClickPageObject import org.mozilla.fenix.ui.robots.navigationToolbar -class MainMenuTest { - private lateinit var mDevice: UiDevice - private lateinit var mockWebServer: MockWebServer - +class MainMenuTest : TestSetup() { @get:Rule val activityTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides(translationsEnabled = 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/233849 @Test fun verifyTabMainMenuItemsTest() { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/MediaNotificationTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/MediaNotificationTest.kt index eba6aad2e..33304899c 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/MediaNotificationTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/MediaNotificationTest.kt @@ -4,23 +4,17 @@ package org.mozilla.fenix.ui -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice -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.HomeActivityTestRule 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.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 @@ -33,36 +27,14 @@ import org.mozilla.fenix.ui.robots.notificationShade * - a media notification icon is displayed on the homescreen for the tab playing media content * Note: this test only verifies media notifications, not media itself */ -class MediaNotificationTest { - private lateinit var mockWebServer: MockWebServer - private lateinit var mDevice: UiDevice - +class MediaNotificationTest : TestSetup() { @get:Rule val activityTestRule = HomeActivityTestRule.withDefaultSettingsOverrides() - private lateinit var browserStore: BrowserStore @Rule @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 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/1347033 @SmokeTest @Test diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/NavigationToolbarTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/NavigationToolbarTest.kt index 13c8812c5..a486a4e67 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/NavigationToolbarTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/NavigationToolbarTest.kt @@ -5,19 +5,14 @@ package org.mozilla.fenix.ui import androidx.core.net.toUri -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.AppAndSystemHelper import org.mozilla.fenix.helpers.AppAndSystemHelper.runWithSystemLocaleChanged import org.mozilla.fenix.helpers.HomeActivityTestRule 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.homeScreen import org.mozilla.fenix.ui.robots.navigationToolbar import java.util.Locale @@ -32,28 +27,10 @@ import java.util.Locale * - Find in page */ -class NavigationToolbarTest { - private lateinit var mDevice: UiDevice - private lateinit var mockWebServer: MockWebServer - +class NavigationToolbarTest : TestSetup() { @get:Rule val activityTestRule = HomeActivityTestRule.withDefaultSettingsOverrides() - @Before - fun setUp() { - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - mockWebServer = MockWebServer().apply { - dispatcher = AndroidAssetDispatcher() - start() - } - } - - @After - fun tearDown() { - mockWebServer.shutdown() - AppAndSystemHelper.resetSystemLocaleToEnUS() - } - // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/987326 // Swipes the nav bar left/right to switch between tabs @SmokeTest diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusEventTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusEventTest.kt index 0d63197d9..943e0624c 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusEventTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusEventTest.kt @@ -5,28 +5,20 @@ package org.mozilla.fenix.ui import android.content.Intent -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice import io.mockk.mockk import mozilla.components.concept.sync.AuthType import mozilla.components.service.fxa.FirefoxAccount -import okhttp3.mockwebserver.MockWebServer -import org.junit.After import org.junit.Assert.assertTrue -import org.junit.Before import org.junit.Rule import org.junit.Test import org.mozilla.fenix.components.TelemetryAccountObserver -import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.Experimentation import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.RetryTestRule import org.mozilla.fenix.helpers.TestHelper.appContext +import org.mozilla.fenix.helpers.TestSetup -class NimbusEventTest { - private lateinit var mDevice: UiDevice - private lateinit var mockWebServer: MockWebServer - +class NimbusEventTest : TestSetup() { @get:Rule val homeActivityTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides() .withIntent( @@ -39,20 +31,6 @@ class NimbusEventTest { @JvmField val retryTestRule = RetryTestRule(3) - @Before - fun setUp() { - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - mockWebServer = MockWebServer().apply { - dispatcher = AndroidAssetDispatcher() - start() - } - } - - @After - fun tearDown() { - mockWebServer.shutdown() - } - @Test fun homeScreenNimbusEventsTest() { Experimentation.withHelper { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingHomescreenTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingHomescreenTest.kt index f71784acc..22f4dd412 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingHomescreenTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingHomescreenTest.kt @@ -5,22 +5,18 @@ package org.mozilla.fenix.ui import android.content.Intent -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice import mozilla.components.service.nimbus.messaging.FxNimbusMessaging import mozilla.components.service.nimbus.messaging.MessageData import mozilla.components.service.nimbus.messaging.Messaging import mozilla.components.service.nimbus.messaging.StyleData -import okhttp3.mockwebserver.MockWebServer -import org.junit.After import org.junit.Before import org.junit.Rule import org.junit.Test import org.mozilla.experiments.nimbus.Res import org.mozilla.fenix.FenixApplication -import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.RetryTestRule +import org.mozilla.fenix.helpers.TestSetup import org.mozilla.fenix.nimbus.FxNimbus import org.mozilla.fenix.nimbus.HomeScreenSection import org.mozilla.fenix.nimbus.Homescreen @@ -32,10 +28,7 @@ import org.mozilla.fenix.ui.robots.homeScreen * Verifies a message can be displayed with all of the correct components **/ -class NimbusMessagingHomescreenTest { - private lateinit var mDevice: UiDevice - private lateinit var mockWebServer: MockWebServer - +class NimbusMessagingHomescreenTest : TestSetup() { private var messageButtonLabel = "CLICK ME" private var messageText = "Some Nimbus Messaging text" private var messageTitle = "A Nimbus title" @@ -54,7 +47,8 @@ class NimbusMessagingHomescreenTest { val retryTestRule = RetryTestRule(3) @Before - fun setUp() { + override fun setUp() { + super.setUp() // Set up nimbus message FxNimbusMessaging.features.messaging.withInitializer { _, _ -> // FML generated objects. @@ -95,22 +89,11 @@ class NimbusMessagingHomescreenTest { ), ) } - - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) - mockWebServer = MockWebServer().apply { - dispatcher = AndroidAssetDispatcher() - start() - } // refresh message store val application = (homeActivityTestRule.activity.application as FenixApplication) application.restoreMessaging() } - @After - fun tearDown() { - mockWebServer.shutdown() - } - @Test fun testNimbusMessageIsDisplayed() { // Checks the home screen card message is displayed correctly diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingMessageTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingMessageTest.kt index 4cbd0735c..0ca94358e 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingMessageTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingMessageTest.kt @@ -5,8 +5,6 @@ package org.mozilla.fenix.ui import android.content.Context -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice import kotlinx.coroutines.test.runTest import mozilla.components.service.nimbus.messaging.FxNimbusMessaging import mozilla.components.service.nimbus.messaging.Messaging @@ -20,6 +18,7 @@ import org.junit.Test import org.mozilla.fenix.ext.components import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.TestHelper +import org.mozilla.fenix.helpers.TestSetup /** * This test is to test the integrity of messages hardcoded in the FML. @@ -27,10 +26,8 @@ import org.mozilla.fenix.helpers.TestHelper * It tests if the trigger expressions are valid, all the fields are complete * and a simple check if they are localized (don't contain `_`). */ -class NimbusMessagingMessageTest { +class NimbusMessagingMessageTest : TestSetup() { private lateinit var feature: Messaging - private lateinit var mDevice: UiDevice - private lateinit var context: Context private val messaging @@ -41,9 +38,9 @@ class NimbusMessagingMessageTest { HomeActivityIntentTestRule.withDefaultSettingsOverrides(skipOnboarding = true) @Before - fun setUp() { + override fun setUp() { + super.setUp() context = TestHelper.appContext - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) feature = FxNimbusMessaging.features.messaging.value() } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingNotificationTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingNotificationTest.kt index 9f3762a21..1348ff007 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingNotificationTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingNotificationTest.kt @@ -6,10 +6,8 @@ package org.mozilla.fenix.ui import android.content.Context import android.os.Build -import androidx.test.platform.app.InstrumentationRegistry import androidx.test.rule.GrantPermissionRule import androidx.test.rule.GrantPermissionRule.grant -import androidx.test.uiautomator.UiDevice import mozilla.components.service.nimbus.messaging.FxNimbusMessaging import org.json.JSONObject import org.junit.Before @@ -18,15 +16,15 @@ import org.junit.Test import org.mozilla.experiments.nimbus.HardcodedNimbusFeatures import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.TestHelper +import org.mozilla.fenix.helpers.TestHelper.mDevice +import org.mozilla.fenix.helpers.TestSetup import org.mozilla.fenix.nimbus.FxNimbus import org.mozilla.fenix.ui.robots.notificationShade /** * A UI test for testing the notification surface for Nimbus Messaging. */ -class NimbusMessagingNotificationTest { - private lateinit var mDevice: UiDevice - +class NimbusMessagingNotificationTest : TestSetup() { private lateinit var context: Context private lateinit var hardcodedNimbus: HardcodedNimbusFeatures @@ -43,9 +41,9 @@ class NimbusMessagingNotificationTest { } @Before - fun setUp() { + override fun setUp() { + super.setUp() context = TestHelper.appContext - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) } @Test diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingTriggerTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingTriggerTest.kt index e061d6845..31be3ec83 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingTriggerTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/NimbusMessagingTriggerTest.kt @@ -4,8 +4,6 @@ package org.mozilla.fenix.ui -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.uiautomator.UiDevice import mozilla.components.service.nimbus.messaging.FxNimbusMessaging import mozilla.components.service.nimbus.messaging.Messaging import org.junit.Assert @@ -17,6 +15,7 @@ import org.mozilla.experiments.nimbus.internal.NimbusException import org.mozilla.fenix.ext.components import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.TestHelper +import org.mozilla.fenix.helpers.TestSetup import org.mozilla.fenix.messaging.CustomAttributeProvider /** @@ -26,9 +25,7 @@ import org.mozilla.fenix.messaging.CustomAttributeProvider * - as much of the custom targeting and trigger attributes are recorded as possible. * - we can run the Rust JEXL evaluator. */ -class NimbusMessagingTriggerTest { - private lateinit var mDevice: UiDevice - +class NimbusMessagingTriggerTest : TestSetup() { private lateinit var feature: Messaging private lateinit var nimbus: NimbusInterface @@ -36,8 +33,8 @@ class NimbusMessagingTriggerTest { val activityTestRule = HomeActivityIntentTestRule.withDefaultSettingsOverrides(skipOnboarding = true) @Before - fun setUp() { - mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) + override fun setUp() { + super.setUp() nimbus = TestHelper.appContext.components.nimbus.sdk feature = FxNimbusMessaging.features.messaging.value() } diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/NoNetworkAccessStartupTests.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/NoNetworkAccessStartupTests.kt index fd30ae0ad..ce59c9e56 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/NoNetworkAccessStartupTests.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/NoNetworkAccessStartupTests.kt @@ -5,7 +5,6 @@ package org.mozilla.fenix.ui import androidx.core.net.toUri -import org.junit.After import org.junit.Rule import org.junit.Test import org.mozilla.fenix.R @@ -14,6 +13,7 @@ import org.mozilla.fenix.helpers.AppAndSystemHelper.setNetworkEnabled import org.mozilla.fenix.helpers.HomeActivityTestRule import org.mozilla.fenix.helpers.TestHelper.packageName import org.mozilla.fenix.helpers.TestHelper.verifyUrl +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 @@ -23,17 +23,11 @@ import org.mozilla.fenix.ui.robots.navigationToolbar * */ -class NoNetworkAccessStartupTests { +class NoNetworkAccessStartupTests : TestSetup() { @get:Rule val activityTestRule = HomeActivityTestRule.withDefaultSettingsOverrides(launchActivity = false) - @After - fun tearDown() { - // Restoring network connection - setNetworkEnabled(true) - } - // Test running on beta/release builds in CI: // caution when making changes to it, so they don't block the builds // Based on STR from https://github.com/mozilla-mobile/fenix/issues/16886