For #26884: [UI tests] Reset modified settings just before the Activity finishes
This should prevent issues with the cleanup being done earlier (even in @After) and affecting the behavior of the Activity which is still running. With this issue fixed I've re-enabled verifyCustomizeHomepageTest. Because when FeatureSettingsHelper is instantiated it caches the settings values from that instant it's important to only use one instance of it so I've updated all tests that are using HomeActivityTestRule. HomeActivityIntentTestRule may be updated with a similar functionality later.
This commit is contained in:
parent
4e99fe8521
commit
5010aa7d0d
|
@ -6,6 +6,7 @@
|
|||
|
||||
package org.mozilla.fenix.helpers
|
||||
|
||||
import android.app.Activity
|
||||
import android.view.ViewConfiguration.getLongPressTimeout
|
||||
import androidx.test.espresso.intent.rule.IntentsTestRule
|
||||
import androidx.test.rule.ActivityTestRule
|
||||
|
@ -28,6 +29,18 @@ class HomeActivityTestRule(
|
|||
private val skipOnboarding: Boolean = false,
|
||||
) :
|
||||
ActivityTestRule<HomeActivity>(HomeActivity::class.java, initialTouchMode, launchActivity) {
|
||||
|
||||
/**
|
||||
* Helper for updating various app settings that could interfere with the tests.
|
||||
* Tests that use [HomeActivityTestRule] are expected to rely on this [FeatureSettingsHelper]
|
||||
* instead of instantiating their own.
|
||||
*
|
||||
* The main benefit this brings is better ordering of operations with the settings cleanup
|
||||
* automatically happening just before the [Activity] under test finishes which may as opposed to
|
||||
* cleanup happening earlier and modifying the app behavior.
|
||||
*/
|
||||
val featureSettingsHelper = FeatureSettingsHelper()
|
||||
|
||||
private val longTapUserPreference = getLongPressTimeout()
|
||||
|
||||
override fun beforeActivityLaunched() {
|
||||
|
@ -39,6 +52,7 @@ class HomeActivityTestRule(
|
|||
override fun afterActivityFinished() {
|
||||
super.afterActivityFinished()
|
||||
setLongTapTimeout(longTapUserPreference)
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
closeNotificationShade()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,6 @@ import androidx.test.espresso.Espresso.onView
|
|||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.rule.ActivityTestRule
|
||||
import androidx.test.uiautomator.By
|
||||
import androidx.test.uiautomator.UiDevice
|
||||
import androidx.test.uiautomator.Until
|
||||
|
@ -21,10 +20,8 @@ import org.junit.Before
|
|||
import org.junit.Ignore
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||
import org.mozilla.fenix.helpers.FeatureSettingsHelper
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||
import org.mozilla.fenix.helpers.TestHelper.mDevice
|
||||
|
@ -40,14 +37,14 @@ import tools.fastlane.screengrab.locale.LocaleTestRule
|
|||
class MenuScreenShotTest : ScreenshotTest() {
|
||||
private lateinit var mockWebServer: MockWebServer
|
||||
private lateinit var mDevice: UiDevice
|
||||
private val featureSettingsHelper = FeatureSettingsHelper()
|
||||
|
||||
@Rule
|
||||
@JvmField
|
||||
val localeTestRule = LocaleTestRule()
|
||||
|
||||
@get:Rule
|
||||
var mActivityTestRule: ActivityTestRule<HomeActivity> = HomeActivityTestRule()
|
||||
var mActivityTestRule = HomeActivityTestRule()
|
||||
private val featureSettingsHelper = mActivityTestRule.featureSettingsHelper
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
|
@ -62,7 +59,6 @@ class MenuScreenShotTest : ScreenshotTest() {
|
|||
|
||||
@After
|
||||
fun tearDown() {
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
mActivityTestRule.getActivity().finishAndRemoveTask()
|
||||
mockWebServer.shutdown()
|
||||
}
|
||||
|
|
|
@ -5,13 +5,11 @@
|
|||
package org.mozilla.fenix.ui
|
||||
|
||||
import androidx.core.net.toUri
|
||||
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.FeatureSettingsHelper
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.RetryTestRule
|
||||
import org.mozilla.fenix.helpers.TestHelper.getStringResource
|
||||
|
@ -26,10 +24,10 @@ class BrowsingErrorPagesTest {
|
|||
private val unwantedSoftwareWarning =
|
||||
getStringResource(R.string.mozac_browser_errorpages_safe_browsing_unwanted_uri_title)
|
||||
private val harmfulSiteWarning = getStringResource(R.string.mozac_browser_errorpages_safe_harmful_uri_title)
|
||||
private val featureSettingsHelper = FeatureSettingsHelper()
|
||||
|
||||
@get: Rule
|
||||
val mActivityTestRule = HomeActivityTestRule()
|
||||
private val featureSettingsHelper = mActivityTestRule.featureSettingsHelper
|
||||
|
||||
@Rule
|
||||
@JvmField
|
||||
|
@ -42,11 +40,6 @@ class BrowsingErrorPagesTest {
|
|||
featureSettingsHelper.setTCPCFREnabled(false)
|
||||
}
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
}
|
||||
|
||||
@SmokeTest
|
||||
@Test
|
||||
fun blockMalwarePageTest() {
|
||||
|
|
|
@ -21,7 +21,6 @@ import org.mozilla.fenix.R
|
|||
import org.mozilla.fenix.customannotations.SmokeTest
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||
import org.mozilla.fenix.helpers.FeatureSettingsHelper
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.RecyclerViewIdlingResource
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||
|
@ -41,10 +40,10 @@ class HistoryTest {
|
|||
private lateinit var mDevice: UiDevice
|
||||
private var historyListIdlingResource: RecyclerViewIdlingResource? = null
|
||||
private var recentlyClosedTabsListIdlingResource: RecyclerViewIdlingResource? = null
|
||||
private val featureSettingsHelper = FeatureSettingsHelper()
|
||||
|
||||
@get:Rule
|
||||
val activityTestRule = HomeActivityTestRule()
|
||||
private val featureSettingsHelper = activityTestRule.featureSettingsHelper
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
|
@ -63,7 +62,6 @@ class HistoryTest {
|
|||
@After
|
||||
fun tearDown() {
|
||||
mockWebServer.shutdown()
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
// Clearing all history data after each test to avoid overlapping data
|
||||
val applicationContext: Context = activityTestRule.activity.applicationContext
|
||||
val historyStorage = PlacesHistoryStorage(applicationContext)
|
||||
|
|
|
@ -11,11 +11,9 @@ import androidx.test.uiautomator.Until
|
|||
import okhttp3.mockwebserver.MockWebServer
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Ignore
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||
import org.mozilla.fenix.helpers.FeatureSettingsHelper
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.RetryTestRule
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||
|
@ -36,10 +34,10 @@ class HomeScreenTest {
|
|||
|
||||
private lateinit var mDevice: UiDevice
|
||||
private lateinit var mockWebServer: MockWebServer
|
||||
private val featureSettingsHelper = FeatureSettingsHelper()
|
||||
|
||||
@get:Rule
|
||||
val activityTestRule = HomeActivityTestRule()
|
||||
private val featureSettingsHelper = activityTestRule.featureSettingsHelper
|
||||
|
||||
@Rule
|
||||
@JvmField
|
||||
|
@ -60,7 +58,6 @@ class HomeScreenTest {
|
|||
@After
|
||||
fun tearDown() {
|
||||
mockWebServer.shutdown()
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -196,7 +193,6 @@ class HomeScreenTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Ignore("Failing, see: https://github.com/mozilla-mobile/fenix/issues/26932")
|
||||
@Test
|
||||
fun verifyCustomizeHomepageTest() {
|
||||
val defaultWebPage = TestAssetHelper.getGenericAsset(mockWebServer, 1)
|
||||
|
|
|
@ -13,7 +13,6 @@ import org.junit.Before
|
|||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||
import org.mozilla.fenix.helpers.FeatureSettingsHelper
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||
import org.mozilla.fenix.ui.robots.homeScreen
|
||||
|
@ -36,7 +35,7 @@ class NavigationToolbarTest {
|
|||
/* ktlint-disable no-blank-line-before-rbrace */ // This imposes unreadable grouping.
|
||||
@get:Rule
|
||||
val activityTestRule = HomeActivityTestRule()
|
||||
private val featureSettingsHelper = FeatureSettingsHelper()
|
||||
private val featureSettingsHelper = activityTestRule.featureSettingsHelper
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
|
@ -53,7 +52,6 @@ class NavigationToolbarTest {
|
|||
@After
|
||||
fun tearDown() {
|
||||
mockWebServer.shutdown()
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -13,7 +13,6 @@ import org.junit.Rule
|
|||
import org.junit.Test
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.helpers.FeatureSettingsHelper
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.TestHelper.packageName
|
||||
import org.mozilla.fenix.helpers.TestHelper.setNetworkEnabled
|
||||
|
@ -31,8 +30,7 @@ class NoNetworkAccessStartupTests {
|
|||
|
||||
@get:Rule
|
||||
val activityTestRule = HomeActivityTestRule(launchActivity = false)
|
||||
|
||||
private val featureSettingsHelper = FeatureSettingsHelper()
|
||||
private val featureSettingsHelper = activityTestRule.featureSettingsHelper
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
|
@ -44,7 +42,6 @@ class NoNetworkAccessStartupTests {
|
|||
fun tearDown() {
|
||||
// Restoring network connection
|
||||
setNetworkEnabled(true)
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
}
|
||||
|
||||
// Test running on beta/release builds in CI:
|
||||
|
|
|
@ -23,7 +23,6 @@ import org.junit.Rule
|
|||
import org.junit.Test
|
||||
import org.mozilla.fenix.customannotations.SmokeTest
|
||||
import org.mozilla.fenix.helpers.Constants.PackageName.ANDROID_SETTINGS
|
||||
import org.mozilla.fenix.helpers.FeatureSettingsHelper
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.SearchDispatcher
|
||||
import org.mozilla.fenix.helpers.TestHelper.appContext
|
||||
|
@ -48,7 +47,6 @@ import org.mozilla.fenix.ui.robots.multipleSelectionToolbar
|
|||
*/
|
||||
|
||||
class SearchTest {
|
||||
private val featureSettingsHelper = FeatureSettingsHelper()
|
||||
lateinit var searchMockServer: MockWebServer
|
||||
|
||||
@get:Rule
|
||||
|
@ -56,6 +54,7 @@ class SearchTest {
|
|||
HomeActivityTestRule(),
|
||||
{ it.activity },
|
||||
)
|
||||
private val featureSettingsHelper = activityTestRule.activityRule.featureSettingsHelper
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
|
@ -72,7 +71,6 @@ class SearchTest {
|
|||
@After
|
||||
fun tearDown() {
|
||||
searchMockServer.shutdown()
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -12,13 +12,11 @@ import android.os.Build
|
|||
import androidx.core.net.toUri
|
||||
import androidx.test.filters.SdkSuppress
|
||||
import androidx.test.rule.GrantPermissionRule
|
||||
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.FeatureSettingsHelper
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.MockLocationUpdatesRule
|
||||
import org.mozilla.fenix.helpers.RetryTestRule
|
||||
|
@ -34,12 +32,12 @@ class SitePermissionsTest {
|
|||
/* Test page created and handled by the Mozilla mobile test-eng team */
|
||||
private val testPage = "https://mozilla-mobile.github.io/testapp/permissions"
|
||||
private val testPageSubstring = "https://mozilla-mobile.github.io:443"
|
||||
private val featureSettingsHelper = FeatureSettingsHelper()
|
||||
private val cameraManager = appContext.getSystemService(Context.CAMERA_SERVICE) as CameraManager
|
||||
private val micManager = appContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager
|
||||
|
||||
@get:Rule
|
||||
val activityTestRule = HomeActivityTestRule()
|
||||
private val featureSettingsHelper = activityTestRule.featureSettingsHelper
|
||||
|
||||
@get:Rule
|
||||
val grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(
|
||||
|
@ -63,11 +61,6 @@ class SitePermissionsTest {
|
|||
featureSettingsHelper.disablePwaCFR(true)
|
||||
}
|
||||
|
||||
@After
|
||||
fun tearDown() {
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
}
|
||||
|
||||
@SdkSuppress(maxSdkVersion = Build.VERSION_CODES.P, codeName = "P")
|
||||
@SmokeTest
|
||||
@Test
|
||||
|
|
|
@ -12,7 +12,6 @@ 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.FeatureSettingsHelper
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||
import org.mozilla.fenix.ui.robots.enhancedTrackingProtection
|
||||
|
@ -35,10 +34,10 @@ import org.mozilla.fenix.ui.robots.settingsSubMenuEnhancedTrackingProtection
|
|||
|
||||
class StrictEnhancedTrackingProtectionTest {
|
||||
private lateinit var mockWebServer: MockWebServer
|
||||
private val featureSettingsHelper = FeatureSettingsHelper()
|
||||
|
||||
@get:Rule
|
||||
val activityTestRule = HomeActivityTestRule()
|
||||
private val featureSettingsHelper = activityTestRule.featureSettingsHelper
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
|
@ -55,7 +54,6 @@ class StrictEnhancedTrackingProtectionTest {
|
|||
@After
|
||||
fun tearDown() {
|
||||
mockWebServer.shutdown()
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -14,7 +14,6 @@ import org.junit.Ignore
|
|||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||
import org.mozilla.fenix.helpers.FeatureSettingsHelper
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.RetryTestRule
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||
|
@ -43,11 +42,11 @@ import org.mozilla.fenix.ui.robots.notificationShade
|
|||
class TabbedBrowsingTest {
|
||||
private lateinit var mDevice: UiDevice
|
||||
private lateinit var mockWebServer: MockWebServer
|
||||
private val featureSettingsHelper = FeatureSettingsHelper()
|
||||
|
||||
/* ktlint-disable no-blank-line-before-rbrace */ // This imposes unreadable grouping.
|
||||
@get:Rule
|
||||
val activityTestRule = HomeActivityTestRule()
|
||||
private val featureSettingsHelper = activityTestRule.featureSettingsHelper
|
||||
|
||||
@Rule
|
||||
@JvmField
|
||||
|
@ -70,7 +69,6 @@ class TabbedBrowsingTest {
|
|||
@After
|
||||
fun tearDown() {
|
||||
mockWebServer.shutdown()
|
||||
featureSettingsHelper.resetAllFeatureFlags()
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue