From d3030e143bb1847e9298faaaf9e42c5a9a697773 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 28 Jul 2025 12:18:17 -0300 Subject: [PATCH] Fix E2E happy path tests for backups. --- .../subscription/MessageBackupsCheckoutActivityTest.kt | 5 +++-- .../ui/subscription/MessageBackupsTypeSelectionScreen.kt | 9 +++++++-- .../java/org/thoughtcrime/securesms/util/Environment.kt | 1 + .../java/org/thoughtcrime/securesms/util/RemoteConfig.kt | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsCheckoutActivityTest.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsCheckoutActivityTest.kt index d5b45f82f2..60e7001054 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsCheckoutActivityTest.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsCheckoutActivityTest.kt @@ -4,7 +4,7 @@ import android.content.ClipboardManager import android.content.Context import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.assertIsEnabled -import androidx.compose.ui.test.assertIsNotEnabled +import androidx.compose.ui.test.assertIsSelected import androidx.compose.ui.test.hasText import androidx.compose.ui.test.junit4.createEmptyComposeRule import androidx.compose.ui.test.onNodeWithTag @@ -175,7 +175,8 @@ class MessageBackupsCheckoutActivityTest { // Type selection screen composeTestRule.onNodeWithText(context.getString(R.string.MessagesBackupsTypeSelectionScreen__choose_your_backup_plan)).assertIsDisplayed() - composeTestRule.onNodeWithTag("subscribe-button").assertIsNotEnabled() + composeTestRule.onNodeWithTag("message-backups-type-block-free").assertIsSelected() + composeTestRule.onNodeWithTag("subscribe-button").assertIsEnabled() } private fun launchCheckoutFlow(tier: MessageBackupTier? = null): ActivityScenario { diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsTypeSelectionScreen.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsTypeSelectionScreen.kt index f00ee4f96f..f03c5a866c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsTypeSelectionScreen.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsTypeSelectionScreen.kt @@ -7,7 +7,6 @@ package org.thoughtcrime.securesms.backup.v2.ui.subscription import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize @@ -16,6 +15,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.selection.selectable import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -255,11 +255,16 @@ fun MessageBackupsTypeBlock( Column( modifier = modifier + .selectable( + selected = isSelected, + enabled = enabled, + onClick = onSelected + ) + .testTag("message-backups-type-block-${messageBackupsType.tier.name.lowercase()}") .fillMaxWidth() .background(color = SignalTheme.colors.colorSurface2, shape = RoundedCornerShape(18.dp)) .border(width = 3.5.dp, color = borderColor, shape = RoundedCornerShape(18.dp)) .clip(shape = RoundedCornerShape(18.dp)) - .clickable(onClick = onSelected, enabled = enabled) .padding(vertical = 16.dp, horizontal = 20.dp) ) { if (isCurrent) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/Environment.kt b/app/src/main/java/org/thoughtcrime/securesms/util/Environment.kt index 2c86044294..bf286a3e67 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/Environment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/Environment.kt @@ -11,6 +11,7 @@ object Environment { const val IS_STAGING: Boolean = BuildConfig.BUILD_ENVIRONMENT_TYPE == "Staging" || BuildConfig.BUILD_ENVIRONMENT_TYPE == "Pnp" const val IS_NIGHTLY: Boolean = BuildConfig.BUILD_DISTRIBUTION_TYPE == "nightly" const val IS_WEBSITE: Boolean = BuildConfig.BUILD_DISTRIBUTION_TYPE == "website" + const val IS_INSTRUMENTATION: Boolean = BuildConfig.BUILD_VARIANT_TYPE == "Instrumentation" object Backups { @JvmStatic diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt index 70060bac40..3a2b1ea303 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/RemoteConfig.kt @@ -535,7 +535,7 @@ object RemoteConfig { key = "android.internalUser", hotSwappable = true ) { value -> - value.asBoolean(false) || Environment.IS_NIGHTLY || Environment.IS_STAGING + value.asBoolean(false) || Environment.IS_NIGHTLY || Environment.IS_STAGING || Environment.IS_INSTRUMENTATION } /** The raw client expiration JSON string. */