For #13959: add HomeActivityTestRule.skipOnboarding.

This is more correct, faster, and results in less copy-paste duplication
than the current behavior:
  homeScreen { }.dismissOnboarding()

Which opens settings to dismiss onboarding.
pull/216/head
Michael Comella 4 years ago committed by Michael Comella
parent 4a4edeb184
commit c33aafb024

@ -9,6 +9,8 @@ import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.rule.ActivityTestRule
import androidx.test.uiautomator.UiDevice
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.onboarding.FenixOnboarding
import org.mozilla.fenix.ui.robots.appContext
/**
* A [org.junit.Rule] to handle shared test set up for tests on [HomeActivity].
@ -17,11 +19,16 @@ import org.mozilla.fenix.HomeActivity
* @param launchActivity See [ActivityTestRule]
*/
class HomeActivityTestRule(initialTouchMode: Boolean = false, launchActivity: Boolean = true) :
class HomeActivityTestRule(
initialTouchMode: Boolean = false,
launchActivity: Boolean = true,
private val skipOnboarding: Boolean = false
) :
ActivityTestRule<HomeActivity>(HomeActivity::class.java, initialTouchMode, launchActivity) {
override fun beforeActivityLaunched() {
super.beforeActivityLaunched()
setLongTapTimeout()
if (skipOnboarding) { skipOnboardingBeforeLaunch() }
}
}
@ -35,12 +42,14 @@ class HomeActivityTestRule(initialTouchMode: Boolean = false, launchActivity: Bo
class HomeActivityIntentTestRule(
initialTouchMode: Boolean = false,
launchActivity: Boolean = true
launchActivity: Boolean = true,
private val skipOnboarding: Boolean = false
) :
IntentsTestRule<HomeActivity>(HomeActivity::class.java, initialTouchMode, launchActivity) {
override fun beforeActivityLaunched() {
super.beforeActivityLaunched()
setLongTapTimeout()
if (skipOnboarding) { skipOnboardingBeforeLaunch() }
}
}
@ -49,3 +58,9 @@ fun setLongTapTimeout() {
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
mDevice.executeShellCommand("settings put secure long_press_timeout 3000")
}
private fun skipOnboardingBeforeLaunch() {
// The production code isn't aware that we're using
// this API so it can be fragile.
FenixOnboarding(appContext).finish()
}

Loading…
Cancel
Save