From e424cd7141f40bc4fb469060cfbc13cf18ff99d1 Mon Sep 17 00:00:00 2001 From: DreVla Date: Fri, 23 Feb 2024 15:31:57 +0200 Subject: [PATCH] Bug 1880520 - [Onboarding] Enable "Add Search Widget" card As result of the experiment to add a new card, "Add Search Widget", to onboarding, this new card will be now enabled by default. --- fenix/app/onboarding.fml.yaml | 1 - .../org/mozilla/fenix/ui/OnboardingTest.kt | 10 +-- .../fenix/ui/robots/HomeScreenRobot.kt | 61 ++++++++++++++++--- .../fenix/onboarding/view/OnboardingPage.kt | 13 ++++ 4 files changed, 70 insertions(+), 15 deletions(-) diff --git a/fenix/app/onboarding.fml.yaml b/fenix/app/onboarding.fml.yaml index f4c3f1e12f16..cecb18ef77a9 100644 --- a/fenix/app/onboarding.fml.yaml +++ b/fenix/app/onboarding.fml.yaml @@ -32,7 +32,6 @@ features: add-search-widget: card-type: add-search-widget - enabled: false title: juno_onboarding_add_search_widget_title body: juno_onboarding_add_search_widget_description image-res: ic_onboarding_search_widget diff --git a/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/OnboardingTest.kt b/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/OnboardingTest.kt index 6b305496e468..4eead4f63c98 100644 --- a/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/OnboardingTest.kt +++ b/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/OnboardingTest.kt @@ -33,7 +33,7 @@ class OnboardingTest : TestSetup() { fun verifyFirstOnboardingCardItemsFunctionalityTest() { runWithLauncherIntent(activityTestRule) { homeScreen { - clickNotNowOnboardingButton(activityTestRule) + clickDefaultCardNotNowOnboardingButton(activityTestRule) verifySecondOnboardingCard(activityTestRule) swipeSecondOnboardingCardToRight() }.clickSetAsDefaultBrowserOnboardingButton(activityTestRule) { @@ -49,7 +49,7 @@ class OnboardingTest : TestSetup() { fun verifySecondOnboardingCardItemsTest() { runWithLauncherIntent(activityTestRule) { homeScreen { - clickNotNowOnboardingButton(activityTestRule) + clickDefaultCardNotNowOnboardingButton(activityTestRule) verifySecondOnboardingCard(activityTestRule) } } @@ -58,11 +58,13 @@ class OnboardingTest : TestSetup() { // TestRail link: https://testrail.stage.mozaws.net/index.php?/cases/view/2122344 @SmokeTest @Test - fun verifySecondOnboardingCardSignInFunctionalityTest() { + fun verifyThirdOnboardingCardSignInFunctionalityTest() { runWithLauncherIntent(activityTestRule) { homeScreen { - clickNotNowOnboardingButton(activityTestRule) + clickDefaultCardNotNowOnboardingButton(activityTestRule) verifySecondOnboardingCard(activityTestRule) + clickAddSearchWidgetNotNowOnboardingButton(activityTestRule) + verifyThirdOnboardingCard(activityTestRule) }.clickSignInOnboardingButton(activityTestRule) { verifyTurnOnSyncMenu() } diff --git a/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt b/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt index 38d5a4f848e5..2732ccbcab94 100644 --- a/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt +++ b/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/robots/HomeScreenRobot.kt @@ -201,31 +201,72 @@ class HomeScreenRobot { composeTestRule.also { Log.i(TAG, "verifySecondOnboardingCard: Trying to verify that the second onboarding screen title exists") it.onNodeWithText( - getStringResource(R.string.juno_onboarding_sign_in_title_2), + getStringResource(R.string.juno_onboarding_add_search_widget_title), ).assertExists() Log.i(TAG, "verifySecondOnboardingCard: Verified that the second onboarding screen title exists") Log.i(TAG, "verifySecondOnboardingCard: Trying to verify that the second onboarding screen description exists") it.onNodeWithText( - getStringResource(R.string.juno_onboarding_sign_in_description_2), + getStringResource(R.string.juno_onboarding_add_search_widget_description), ).assertExists() Log.i(TAG, "verifySecondOnboardingCard: Verified that the second onboarding screen description exists") Log.i(TAG, "verifySecondOnboardingCard: Trying to verify that the first onboarding \"Sign in\" button exists") it.onNodeWithText( - getStringResource(R.string.juno_onboarding_sign_in_positive_button), + getStringResource(R.string.juno_onboarding_add_search_widget_positive_button), + ).assertExists() + Log.i(TAG, "verifySecondOnboardingCard: Verified that the first onboarding \"Add Firefox widget\" button exists") + Log.i(TAG, "verifySecondOnboardingCard: Trying to verify that the second onboarding \"Not now\" button exists") + it.onNodeWithTag( + getStringResource(R.string.juno_onboarding_add_search_widget_title) + "onboarding_card.negative_button", + ).assertExists() + Log.i(TAG, "verifySecondOnboardingCard: Verified that the second onboarding \"Not now\" button exists") + } + } + + fun verifyThirdOnboardingCard(composeTestRule: ComposeTestRule) { + composeTestRule.also { + Log.i(TAG, "verifyThirdOnboardingCard: Trying to verify that the third onboarding screen title exists") + it.onNodeWithText( + getStringResource(R.string.juno_onboarding_sign_in_title_2), + ).assertExists() + Log.i(TAG, "verifyThirdOnboardingCard: Verified that the third onboarding screen title exists") + Log.i(TAG, "verifyThirdOnboardingCard: Trying to verify that the third onboarding screen description exists") + it.onNodeWithText( + getStringResource(R.string.juno_onboarding_sign_in_description_2), ).assertExists() - Log.i(TAG, "verifySecondOnboardingCard: Verified that the first onboarding \"Sign in\" button exists") - Log.i(TAG, "verifySecondOnboardingCard: Trying to verify that the first onboarding \"Not now\" button exists") + Log.i(TAG, "verifyThirdOnboardingCard: Verified that the third onboarding screen description exists") + Log.i(TAG, "verifyThirdOnboardingCard: Trying to verify that the first onboarding \"Sign in\" button exists") it.onNodeWithText( - getStringResource(R.string.juno_onboarding_sign_in_negative_button), + getStringResource(R.string.juno_onboarding_sign_in_positive_button), ).assertExists() - Log.i(TAG, "verifySecondOnboardingCard: Verified that the first onboarding \"Not now\" button exists") + Log.i(TAG, "verifyThirdOnboardingCard: Verified that the first onboarding \"Sign in\" button exists") + Log.i(TAG, "verifyThirdOnboardingCard: Trying to verify that the third onboarding \"Not now\" button exists") + it.onNodeWithTag( + getStringResource(R.string.juno_onboarding_sign_in_title_2) + "onboarding_card.negative_button", + ).assertExists() + Log.i(TAG, "verifySecondOnboardingCard: Verified that the third onboarding \"Not now\" button exists") } } - fun clickNotNowOnboardingButton(composeTestRule: ComposeTestRule) { + fun clickDefaultCardNotNowOnboardingButton(composeTestRule: ComposeTestRule) { + Log.i(TAG, "clickNotNowOnboardingButton: Trying to click \"Not now\" onboarding button") + composeTestRule.onNodeWithTag( + getStringResource(R.string.juno_onboarding_default_browser_title_nimbus_2) + "onboarding_card.negative_button", + ).performClick() + Log.i(TAG, "clickNotNowOnboardingButton: Clicked \"Not now\" onboarding button") + } + + fun clickAddSearchWidgetNotNowOnboardingButton(composeTestRule: ComposeTestRule) { + Log.i(TAG, "clickNotNowOnboardingButton: Trying to click \"Not now\" onboarding button") + composeTestRule.onNodeWithTag( + getStringResource(R.string.juno_onboarding_add_search_widget_title) + "onboarding_card.negative_button", + ).performClick() + Log.i(TAG, "clickNotNowOnboardingButton: Clicked \"Not now\" onboarding button") + } + + fun clickSyncSignInWidgetNotNowOnboardingButton(composeTestRule: ComposeTestRule) { Log.i(TAG, "clickNotNowOnboardingButton: Trying to click \"Not now\" onboarding button") - composeTestRule.onNodeWithText( - getStringResource(R.string.juno_onboarding_default_browser_negative_button), + composeTestRule.onNodeWithTag( + getStringResource(R.string.juno_onboarding_sign_in_title_2) + "onboarding_card.negative_button", ).performClick() Log.i(TAG, "clickNotNowOnboardingButton: Clicked \"Not now\" onboarding button") } diff --git a/fenix/app/src/main/java/org/mozilla/fenix/onboarding/view/OnboardingPage.kt b/fenix/app/src/main/java/org/mozilla/fenix/onboarding/view/OnboardingPage.kt index 743beec38899..757b2bce9479 100644 --- a/fenix/app/src/main/java/org/mozilla/fenix/onboarding/view/OnboardingPage.kt +++ b/fenix/app/src/main/java/org/mozilla/fenix/onboarding/view/OnboardingPage.kt @@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.BoxWithConstraintsScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState @@ -25,6 +26,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.testTag import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp @@ -138,6 +141,11 @@ fun OnboardingPage( modifier = Modifier.padding(horizontal = 16.dp), ) { PrimaryButton( + modifier = Modifier + .fillMaxWidth() + .semantics { + testTag = pageState.title + "onboarding_card.positive_button" + }, text = pageState.primaryButton.text, onClick = pageState.primaryButton.onClick, ) @@ -145,6 +153,11 @@ fun OnboardingPage( if (pageState.secondaryButton != null) { Spacer(modifier = Modifier.height(8.dp)) SecondaryButton( + modifier = Modifier + .fillMaxWidth() + .semantics { + testTag = pageState.title + "onboarding_card.negative_button" + }, text = pageState.secondaryButton.text, onClick = pageState.secondaryButton.onClick, )