From 323765c3bcc3b33cbd5e0e51a3888be7db425188 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 2 Nov 2023 09:19:16 +0100 Subject: [PATCH 1/4] Fix maestro test. --- .maestro/tests/account/logout.yaml | 3 ++- .../io/element/android/features/logout/impl/LogoutView.kt | 6 +++++- .../io/element/android/libraries/testtags/TestTags.kt | 5 +++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.maestro/tests/account/logout.yaml b/.maestro/tests/account/logout.yaml index c2f75e0977..38f22b34f5 100644 --- a/.maestro/tests/account/logout.yaml +++ b/.maestro/tests/account/logout.yaml @@ -6,7 +6,8 @@ appId: ${APP_ID} - takeScreenshot: build/maestro/900-SignOutScreen - back - tapOn: "Sign out" -- tapOn: "Sign out" +- tapOn: + id: "sign-out-submit" # Ensure cancel cancels - tapOn: "Cancel" - tapOn: "Sign out" diff --git a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutView.kt b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutView.kt index 465eb7eb35..486e3964fa 100644 --- a/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutView.kt +++ b/features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutView.kt @@ -46,6 +46,8 @@ import io.element.android.libraries.designsystem.theme.progressIndicatorTrackCol import io.element.android.libraries.designsystem.utils.CommonDrawables import io.element.android.libraries.matrix.api.encryption.BackupUploadState import io.element.android.libraries.matrix.api.encryption.SteadyStateException +import io.element.android.libraries.testtags.TestTags +import io.element.android.libraries.testtags.testTag import io.element.android.libraries.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings @@ -194,7 +196,9 @@ private fun BottomMenu( text = stringResource(id = signOutSubmitRes), showProgress = logoutAction is Async.Loading, destructive = true, - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .fillMaxWidth() + .testTag(TestTags.signOut), onClick = onLogoutClicked, ) } diff --git a/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt b/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt index d90be0c25c..f28ed77001 100644 --- a/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt +++ b/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt @@ -33,6 +33,11 @@ object TestTags { val loginPassword = TestTag("login-password") val loginContinue = TestTag("login-continue") + /** + * Sign out screen. + */ + val signOut = TestTag("sign-out-submit") + /** * Change server screen. */ From d05f94e5746982c4358f12c9cb3b4ec10f8a0c45 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 2 Nov 2023 11:23:10 +0100 Subject: [PATCH 2/4] Fix maestro test: chat backup is disabled by default. --- .maestro/tests/account/logout.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.maestro/tests/account/logout.yaml b/.maestro/tests/account/logout.yaml index 38f22b34f5..c74f069f00 100644 --- a/.maestro/tests/account/logout.yaml +++ b/.maestro/tests/account/logout.yaml @@ -10,6 +10,7 @@ appId: ${APP_ID} id: "sign-out-submit" # Ensure cancel cancels - tapOn: "Cancel" +- tapOn: + id: "sign-out-submit" - tapOn: "Sign out" -- tapOn: "Sign out anyway" - runFlow: ../assertions/assertInitDisplayed.yaml From 0a298433e01b6583ff6c211bf9fc74936942638c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 2 Nov 2023 11:55:56 +0100 Subject: [PATCH 3/4] Add TestTags to dialog buttons. --- libraries/designsystem/build.gradle.kts | 1 + .../designsystem/theme/components/AlertDialogContent.kt | 7 +++++++ .../io/element/android/libraries/testtags/TestTags.kt | 7 +++++++ 3 files changed, 15 insertions(+) diff --git a/libraries/designsystem/build.gradle.kts b/libraries/designsystem/build.gradle.kts index f6eacf8746..f0d9d0bd53 100644 --- a/libraries/designsystem/build.gradle.kts +++ b/libraries/designsystem/build.gradle.kts @@ -39,6 +39,7 @@ android { // Should not be there, but this is a POC implementation(libs.coil.compose) implementation(libs.vanniktech.blurhash) + implementation(projects.libraries.testtags) implementation(projects.libraries.uiStrings) ksp(libs.showkase.processor) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt index bdeceb2ac8..ad68f1a59b 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/AlertDialogContent.kt @@ -43,6 +43,8 @@ import androidx.compose.ui.unit.dp import io.element.android.libraries.designsystem.preview.ElementThemedPreview import io.element.android.libraries.designsystem.preview.PreviewGroup import io.element.android.libraries.designsystem.utils.CommonDrawables +import io.element.android.libraries.testtags.TestTags +import io.element.android.libraries.testtags.testTag import io.element.android.libraries.theme.ElementTheme import kotlin.math.max @@ -113,18 +115,23 @@ internal fun SimpleAlertDialogContent( // If there is a 3rd item it should be at the end of the dialog // Having this 3rd action is discouraged, see https://m3.material.io/components/dialogs/guidelines#e13b68f5-e367-4275-ad6f-c552ee8e358f TextButton( + modifier = Modifier.testTag(TestTags.dialogNeutral), text = thirdButtonText, size = ButtonSize.Medium, onClick = onThirdButtonClicked, ) } TextButton( + modifier = Modifier.testTag( + if (submitText == null) TestTags.dialogPositive else TestTags.dialogNegative + ), text = cancelText, size = ButtonSize.Medium, onClick = onCancelClicked, ) if (submitText != null) { Button( + modifier = Modifier.testTag(TestTags.dialogPositive), text = submitText, enabled = enabled, size = ButtonSize.Medium, diff --git a/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt b/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt index f28ed77001..6c31db3a9f 100644 --- a/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt +++ b/libraries/testtags/src/main/kotlin/io/element/android/libraries/testtags/TestTags.kt @@ -57,6 +57,13 @@ object TestTags { * RichTextEditor. */ val richTextEditor = TestTag("rich_text_editor") + + /** + * Dialogs. + */ + val dialogPositive = TestTag("dialog-positive") + val dialogNegative = TestTag("dialog-negative") + val dialogNeutral = TestTag("dialog-neutral") } From 806525d4ede0d2eaa0bfe2c0bb6a8377e8b8f11d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 2 Nov 2023 11:57:11 +0100 Subject: [PATCH 4/4] Fix Maestro (do not rely on text) --- .maestro/tests/account/logout.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.maestro/tests/account/logout.yaml b/.maestro/tests/account/logout.yaml index c74f069f00..f10d5ef364 100644 --- a/.maestro/tests/account/logout.yaml +++ b/.maestro/tests/account/logout.yaml @@ -12,5 +12,6 @@ appId: ${APP_ID} - tapOn: "Cancel" - tapOn: id: "sign-out-submit" -- tapOn: "Sign out" +- tapOn: + id: "dialog-positive" - runFlow: ../assertions/assertInitDisplayed.yaml