Bug 1856505 - Add unenrollment tests to integration test suite (#3906)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
fenix/120.0
Benjamin Forehand Jr 9 months ago committed by GitHub
parent a923244dfc
commit 814400a287

@ -0,0 +1,74 @@
/* 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/. */
package org.mozilla.fenix.experimentintegration
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.helpers.HomeActivityTestRule
import org.mozilla.fenix.helpers.TestHelper
import org.mozilla.fenix.ui.robots.homeScreen
class GenericExperimentIntegrationTest {
private val experimentName = "Viewpoint"
@get:Rule
val activityTestRule = HomeActivityTestRule(
isJumpBackInCFREnabled = false,
isPWAsPromptEnabled = false,
isTCPCFREnabled = false,
)
@Before
fun setUp() {
TestHelper.appContext.settings().showSecretDebugMenuThisSession = true
}
@After
fun tearDown() {
TestHelper.appContext.settings().showSecretDebugMenuThisSession = false
}
private fun disableStudiesViaStudiesToggle() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openExperimentsMenu {
verifyExperimentEnrolled(experimentName)
}.goBack {
}.openSettingsSubMenuDataCollection {
clickStudiesOption()
verifyStudiesToggle(true)
clickStudiesToggle()
clickStudiesDialogOkButton()
}
}
@Test
fun testExperimentUnenrolled() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openExperimentsMenu {
verifyExperimentExists(experimentName)
verifyExperimentNotEnrolled(experimentName)
}
}
@Test
fun testExperimentUnenrolledViaSecretMenu() {
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openExperimentsMenu {
verifyExperimentExists(experimentName)
verifyExperimentEnrolled(experimentName)
unenrollfromExperiment(experimentName)
verifyExperimentNotEnrolled(experimentName)
}
}
}

@ -0,0 +1,12 @@
import pytest
@pytest.mark.parametrize("load_branches", [("branch")], indirect=True)
def test_experiment_unenrolls_via_studies_toggle(setup_experiment, gradlewbuild, load_branches):
setup_experiment(load_branches)
gradlewbuild.test("GenericExperimentIntegrationTest#disableStudiesViaStudiesToggle")
gradlewbuild.test("GenericExperimentIntegrationTest#testExperimentUnenrolls")
@pytest.mark.parametrize("load_branches", [("branch")], indirect=True)
def test_experiment_unenrolls_via_secret_menu(setup_experiment, gradlewbuild, load_branches):
setup_experiment(load_branches)
gradlewbuild.test("GenericExperimentIntegrationTest#testExperimentUnenrollsViaSecretMenu")

@ -7,7 +7,13 @@ package org.mozilla.fenix.ui.robots
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.matcher.ViewMatchers.withContentDescription
import androidx.test.uiautomator.UiSelector
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.MatcherHelper.itemContainingText
import org.mozilla.fenix.helpers.MatcherHelper.itemWithResId
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeShort
import org.mozilla.fenix.helpers.TestHelper.packageName
import org.mozilla.fenix.helpers.click
/**
@ -41,5 +47,35 @@ class SettingsSubMenuExperimentsRobot {
checkNotNull(experiment)
}
fun verifyExperimentEnrolled(title: String) {
itemContainingText(title).click()
assertTrue(
checkIcon().waitForExists(waitingTimeShort),
)
goBackButton().click()
}
fun verifyExperimentNotEnrolled(title: String) {
itemContainingText(title).click()
assertFalse(
checkIcon().waitForExists(waitingTimeShort),
)
goBackButton().click()
}
fun unenrollfromExperiment(title: String) {
val branch = itemWithResId("$packageName:id/nimbus_branch_name")
itemContainingText(title).click()
assertTrue(
checkIcon().waitForExists(waitingTimeShort),
)
branch.click()
assertFalse(
checkIcon().waitForExists(waitingTimeShort),
)
}
}
private fun goBackButton() = onView(withContentDescription(R.string.action_bar_up_description))
private fun checkIcon() = itemWithResId("$packageName:id/selected_icon")

Loading…
Cancel
Save