Reduce comments by using helper functions in subpages tests

As per go/java-practices/comments#what_for
go/unit-testing-practices#helpers

Bug: 265771201
Test: atest SafetyCenterFunctionalTestCases
Change-Id: Iaf00bddc60e0e9734d933be4fc509f717c4231a3
diff --git a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/PrivacySubpageTest.kt b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/PrivacySubpageTest.kt
index e8480b6..67e44f5 100644
--- a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/PrivacySubpageTest.kt
+++ b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/PrivacySubpageTest.kt
@@ -43,6 +43,7 @@
 import com.android.safetycenter.testing.UiTestHelper.waitAllTextDisplayed
 import com.android.safetycenter.testing.UiTestHelper.waitButtonDisplayed
 import com.android.safetycenter.testing.UiTestHelper.waitDisplayed
+import com.android.safetycenter.testing.UiTestHelper.waitPageTitleDisplayed
 import com.android.safetycenter.testing.UiTestHelper.waitSourceIssueDisplayed
 import com.android.safetycenter.testing.UiTestHelper.waitSourceIssueNotDisplayed
 import org.junit.After
@@ -187,7 +188,7 @@
 
         context.launchSafetyCenterActivity(extras) {
             openPageAndExit("Location Settings") {
-                waitDisplayed(By.desc("Location"))
+                waitPageTitleDisplayed("Location")
                 waitAllTextDisplayed("Use location")
             }
 
diff --git a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/SafetyCenterSubpagesTest.kt b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/SafetyCenterSubpagesTest.kt
index bcbde2a..3c456a1 100644
--- a/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/SafetyCenterSubpagesTest.kt
+++ b/tests/functional/safetycenter/singleuser/src/android/safetycenter/functional/ui/SafetyCenterSubpagesTest.kt
@@ -47,14 +47,20 @@
 import com.android.safetycenter.testing.SafetySourceReceiver
 import com.android.safetycenter.testing.SafetySourceTestData
 import com.android.safetycenter.testing.UiTestHelper.MORE_ISSUES_LABEL
+import com.android.safetycenter.testing.UiTestHelper.clickConfirmDismissal
+import com.android.safetycenter.testing.UiTestHelper.clickDismissIssueCard
 import com.android.safetycenter.testing.UiTestHelper.clickMoreIssuesCard
+import com.android.safetycenter.testing.UiTestHelper.clickOpenSubpage
+import com.android.safetycenter.testing.UiTestHelper.clickSubpageBrandChip
 import com.android.safetycenter.testing.UiTestHelper.resetRotation
 import com.android.safetycenter.testing.UiTestHelper.rotate
 import com.android.safetycenter.testing.UiTestHelper.waitAllTextDisplayed
 import com.android.safetycenter.testing.UiTestHelper.waitAllTextNotDisplayed
 import com.android.safetycenter.testing.UiTestHelper.waitButtonDisplayed
 import com.android.safetycenter.testing.UiTestHelper.waitDisplayed
-import com.android.safetycenter.testing.UiTestHelper.waitNotDisplayed
+import com.android.safetycenter.testing.UiTestHelper.waitGroupShownOnHomepage
+import com.android.safetycenter.testing.UiTestHelper.waitPageTitleDisplayed
+import com.android.safetycenter.testing.UiTestHelper.waitPageTitleNotDisplayed
 import com.android.safetycenter.testing.UiTestHelper.waitSourceIssueDisplayed
 import com.android.safetycenter.testing.UiTestHelper.waitSourceIssueNotDisplayed
 import org.junit.After
@@ -108,15 +114,14 @@
     @Test
     fun launchSafetyCenter_withSubpagesIntentExtra_showsSubpageTitle() {
         val config = safetyCenterTestConfigs.multipleSourceGroupsConfig
+        val sourceGroup = config.safetySourcesGroups.first()!!
         safetyCenterTestHelper.setConfig(config)
         val extras = Bundle()
         extras.putString(EXTRA_SAFETY_SOURCES_GROUP_ID, MULTIPLE_SOURCES_GROUP_ID_1)
 
         context.launchSafetyCenterActivity(extras) {
             // CollapsingToolbar title can't be found by text, so using description instead.
-            waitDisplayed(
-                By.desc(context.getString(config.safetySourcesGroups.first()!!.titleResId))
-            )
+            waitPageTitleDisplayed(context.getString(sourceGroup.titleResId))
         }
     }
 
@@ -129,22 +134,21 @@
 
         context.launchSafetyCenterActivity(extras) {
             // CollapsingToolbar title can't be found by text, so using description instead.
-            waitDisplayed(By.desc("Security & privacy"))
+            waitPageTitleDisplayed("Security & privacy")
         }
     }
 
     @Test
     fun launchSafetyCenter_withNonExistingGroupID_opensHomepageAsFallback() {
         val config = safetyCenterTestConfigs.multipleSourceGroupsConfig
+        val sourceGroup = config.safetySourcesGroups.first()!!
         safetyCenterTestHelper.setConfig(config)
         val extras = Bundle()
         extras.putString(EXTRA_SAFETY_SOURCES_GROUP_ID, "non_existing_group_id")
 
         context.launchSafetyCenterActivity(extras) {
-            waitNotDisplayed(
-                By.desc(context.getString(config.safetySourcesGroups.first()!!.titleResId))
-            )
-            waitDisplayed(By.desc("Security & privacy"))
+            waitPageTitleNotDisplayed(context.getString(sourceGroup.titleResId))
+            waitPageTitleDisplayed("Security & privacy")
         }
     }
 
@@ -173,8 +177,7 @@
             )
 
             openPageAndExit(context.getString(lastGroup.titleResId)) {
-                // Verifying that the subpage is opened with collapsing toolbar title
-                waitDisplayed(By.desc(context.getString(lastGroup.titleResId)))
+                waitPageTitleDisplayed(context.getString(lastGroup.titleResId))
                 waitAllTextNotDisplayed(context.getString(lastGroup.summaryResId))
             }
         }
@@ -222,23 +225,14 @@
             safetyCenterTestConfigs.multipleSourceGroupsConfig.safetySourcesGroups.first()
 
         context.launchSafetyCenterActivity {
-            // Verifying that both entry title and summary are displayed on homepage
-            waitAllTextDisplayed(
-                context.getString(firstGroup.titleResId),
-                context.getString(firstGroup.summaryResId)
-            )
+            waitGroupShownOnHomepage(context, firstGroup)
 
             openPageAndExit(context.getString(firstGroup.titleResId)) {
-                // Verifying that only collapsing toolbar title is displayed for subpage
-                waitDisplayed(By.desc(context.getString(firstGroup.titleResId)))
+                waitPageTitleDisplayed(context.getString(firstGroup.titleResId))
                 waitAllTextNotDisplayed(context.getString(firstGroup.summaryResId))
             }
 
-            // Verifying that the homepage is opened again
-            waitAllTextDisplayed(
-                context.getString(firstGroup.titleResId),
-                context.getString(firstGroup.summaryResId)
-            )
+            waitGroupShownOnHomepage(context, firstGroup)
         }
     }
 
@@ -517,10 +511,10 @@
         context.launchSafetyCenterActivity {
             openPageAndExit(context.getString(sourcesGroup.titleResId)) {
                 waitSourceIssueDisplayed(issue)
-                waitDisplayed(By.desc("Dismiss")) { it.click() }
+                clickDismissIssueCard()
 
                 waitAllTextDisplayed("Dismiss this alert?")
-                waitButtonDisplayed("Dismiss") { it.click() }
+                clickConfirmDismissal()
 
                 waitSourceIssueNotDisplayed(issue)
             }
@@ -538,7 +532,7 @@
         context.launchSafetyCenterActivity {
             openPageAndExit(context.getString(sourcesGroup.titleResId)) {
                 waitSourceIssueDisplayed(issue)
-                waitDisplayed(By.desc("Dismiss")) { it.click() }
+                clickDismissIssueCard()
                 waitAllTextDisplayed("Dismiss this alert?")
 
                 UiAutomatorUtils2.getUiDevice().rotate()
@@ -585,9 +579,9 @@
         context.launchSafetyCenterActivity {
             openPageAndExit(context.getString(sourcesGroup.titleResId)) {
                 waitSourceIssueDisplayed(issue)
-                waitDisplayed(By.desc("Dismiss")) { it.click() }
+                clickDismissIssueCard()
                 waitAllTextDisplayed("Dismiss this alert?")
-                waitButtonDisplayed("Dismiss") { it.click() }
+                clickConfirmDismissal()
                 waitSourceIssueNotDisplayed(issue)
 
                 waitDisplayed(By.text("Dismissed alerts")) { it.click() }
@@ -609,15 +603,15 @@
         context.launchSafetyCenterActivity {
             openPageAndExit(context.getString(sourcesGroup.titleResId)) {
                 waitSourceIssueDisplayed(issue)
-                waitDisplayed(By.desc("Dismiss")) { it.click() }
+                clickDismissIssueCard()
                 waitAllTextDisplayed("Dismiss this alert?")
-                waitButtonDisplayed("Dismiss") { it.click() }
+                clickConfirmDismissal()
                 waitSourceIssueNotDisplayed(issue)
+
                 waitDisplayed(By.text("Dismissed alerts")) { it.click() }
                 waitSourceIssueDisplayed(issue)
 
                 waitDisplayed(By.text("Dismissed alerts")) { it.click() }
-
                 waitSourceIssueNotDisplayed(issue)
             }
         }
@@ -642,9 +636,9 @@
         context.launchSafetyCenterActivity {
             openPageAndExit(context.getString(sourcesGroup.titleResId)) {
                 waitSourceIssueDisplayed(issue)
-                waitDisplayed(By.desc("Dismiss")) { it.click() }
+                clickDismissIssueCard()
                 waitAllTextDisplayed("Dismiss this alert?")
-                waitButtonDisplayed("Dismiss") { it.click() }
+                clickConfirmDismissal()
                 waitSourceIssueNotDisplayed(issue)
 
                 clickMoreIssuesCard()
@@ -675,14 +669,14 @@
         context.launchSafetyCenterActivity {
             openPageAndExit(context.getString(sourcesGroup.titleResId)) {
                 waitSourceIssueDisplayed(issue)
-                waitDisplayed(By.desc("Dismiss")) { it.click() }
-                waitButtonDisplayed("Dismiss") { it.click() }
+                clickDismissIssueCard()
+                clickConfirmDismissal()
                 waitSourceIssueNotDisplayed(issue)
+
                 clickMoreIssuesCard()
                 waitSourceIssueDisplayed(issue)
 
                 clickMoreIssuesCard()
-
                 waitAllTextDisplayed(MORE_ISSUES_LABEL)
                 waitAllTextNotDisplayed("Dismissed alerts")
                 waitSourceIssueNotDisplayed(issue)
@@ -697,23 +691,14 @@
         val sourcesGroup = safetyCenterTestConfigs.singleSourceConfig.safetySourcesGroups.first()
 
         context.launchSafetyCenterActivity {
-            // Verify that the homepage is opened
-            waitAllTextDisplayed(
-                context.getString(sourcesGroup.titleResId),
-                context.getString(sourcesGroup.summaryResId)
-            )
+            waitGroupShownOnHomepage(context, sourcesGroup)
 
-            // Open subpage by clicking on the group title
-            waitDisplayed(By.text(context.getString(sourcesGroup.titleResId))) { it.click() }
-            waitDisplayed(By.desc(context.getString(sourcesGroup.titleResId)))
+            clickOpenSubpage(context, sourcesGroup)
+            waitPageTitleDisplayed(context.getString(sourcesGroup.titleResId))
             waitAllTextNotDisplayed(context.getString(sourcesGroup.summaryResId))
 
-            // Open homepage again by clicking on the brand chip
-            waitButtonDisplayed("Security & privacy") { it.click() }
-            waitAllTextDisplayed(
-                context.getString(sourcesGroup.titleResId),
-                context.getString(sourcesGroup.summaryResId)
-            )
+            clickSubpageBrandChip()
+            waitGroupShownOnHomepage(context, sourcesGroup)
         }
     }
 
@@ -726,16 +711,11 @@
         extras.putString(EXTRA_SAFETY_SOURCES_GROUP_ID, sourcesGroup.id)
 
         context.launchSafetyCenterActivity(extras) {
-            // Verify that the subpage is opened
-            waitDisplayed(By.desc(context.getString(sourcesGroup.titleResId)))
+            waitPageTitleDisplayed(context.getString(sourcesGroup.titleResId))
             waitAllTextNotDisplayed(context.getString(sourcesGroup.summaryResId))
 
-            // Open homepage by clicking on the brand chip
-            waitButtonDisplayed("Security & privacy") { it.click() }
-            waitAllTextDisplayed(
-                context.getString(sourcesGroup.titleResId),
-                context.getString(sourcesGroup.summaryResId)
-            )
+            clickSubpageBrandChip()
+            waitGroupShownOnHomepage(context, sourcesGroup)
         }
     }
 
@@ -750,7 +730,7 @@
         extras.putString(EXTRA_SETTINGS_FRAGMENT_ARGS_KEY, preferenceKey)
 
         context.launchSafetyCenterActivity(extras) {
-            waitDisplayed(By.desc(context.getString(sourcesGroup.titleResId)))
+            waitPageTitleDisplayed(context.getString(sourcesGroup.titleResId))
             waitAllTextDisplayed(
                 context.getString(source.titleResId),
                 context.getString(source.summaryResId)
@@ -767,11 +747,8 @@
         extras.putString(EXTRA_SETTINGS_FRAGMENT_ARGS_KEY, "invalid_preference_key")
 
         context.launchSafetyCenterActivity(extras) {
-            waitDisplayed(By.desc("Security & privacy"))
-            waitAllTextDisplayed(
-                context.getString(sourcesGroup.titleResId),
-                context.getString(sourcesGroup.summaryResId)
-            )
+            waitPageTitleDisplayed("Security & privacy")
+            waitGroupShownOnHomepage(context, sourcesGroup)
         }
     }
 
diff --git a/tests/utils/safetycenter/java/com/android/safetycenter/testing/UiTestHelper.kt b/tests/utils/safetycenter/java/com/android/safetycenter/testing/UiTestHelper.kt
index 81c255c..77584c4 100644
--- a/tests/utils/safetycenter/java/com/android/safetycenter/testing/UiTestHelper.kt
+++ b/tests/utils/safetycenter/java/com/android/safetycenter/testing/UiTestHelper.kt
@@ -16,10 +16,12 @@
 
 package com.android.safetycenter.testing
 
+import android.content.Context
 import android.os.Build.VERSION_CODES.TIRAMISU
 import android.os.SystemClock
 import android.safetycenter.SafetySourceData
 import android.safetycenter.SafetySourceIssue
+import android.safetycenter.config.SafetySourcesGroup
 import android.util.Log
 import androidx.annotation.RequiresApi
 import androidx.test.uiautomator.By
@@ -43,6 +45,7 @@
     /** The title of collapsible card that controls the visibility of additional issue cards. */
     const val MORE_ISSUES_LABEL = "More alerts"
 
+    private const val DISMISS_ISSUE_LABEL = "Dismiss"
     private val WAIT_TIMEOUT = Duration.ofSeconds(25)
     private val NOT_DISPLAYED_TIMEOUT = Duration.ofMillis(500)
 
@@ -121,6 +124,44 @@
         waitAllTextNotDisplayed(sourceIssue.title)
     }
 
+    /** Waits for the specified screen title to be displayed. */
+    fun waitPageTitleDisplayed(title: String) {
+        waitDisplayed(By.desc(title))
+    }
+
+    /** Waits for the specified screen title not to be displayed. */
+    fun waitPageTitleNotDisplayed(title: String) {
+        waitNotDisplayed(By.desc(title))
+    }
+
+    /** Waits for the group title and summary to be displayed on the homepage */
+    fun waitGroupShownOnHomepage(context: Context, group: SafetySourcesGroup) {
+        waitAllTextDisplayed(
+            context.getString(group.titleResId),
+            context.getString(group.summaryResId)
+        )
+    }
+
+    /** Dismisses the issue card by clicking the dismiss button. */
+    fun clickDismissIssueCard() {
+        waitDisplayed(By.desc(DISMISS_ISSUE_LABEL)) { it.click() }
+    }
+
+    /** Confirms the dismiss action by clicking on the dialog that pops up. */
+    fun clickConfirmDismissal() {
+        waitButtonDisplayed(DISMISS_ISSUE_LABEL) { it.click() }
+    }
+
+    /** Clicks the brand chip button on a subpage in Safety Center. */
+    fun clickSubpageBrandChip() {
+        waitButtonDisplayed("Security & privacy") { it.click() }
+    }
+
+    /** Opens the subpage by clicking on the group title. */
+    fun clickOpenSubpage(context: Context, group: SafetySourcesGroup) {
+        waitDisplayed(By.text(context.getString(group.titleResId))) { it.click() }
+    }
+
     /** Clicks the more issues card button to show or hide additional issues. */
     fun clickMoreIssuesCard() {
         waitDisplayed(By.text(MORE_ISSUES_LABEL)) { it.click() }