From 2d3e5fdb7aa5f31a1a1bc55772491a11cd21f6ae Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 19 Nov 2025 09:55:35 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/screens/SendAddressPageObject.kt | 21 ++++++++ .../send/addressScreen/RecentBlockTest.kt | 2 +- .../addressScreen/SendAddressScreenTest.kt | 48 ++++++++++++++++++- .../components/containers/FooterContainer.kt | 5 +- .../com/tangem/core/ui/test/FooterTestTags.kt | 5 ++ 5 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 core/ui/src/main/java/com/tangem/core/ui/test/FooterTestTags.kt diff --git a/app/src/androidTest/kotlin/com/tangem/screens/SendAddressPageObject.kt b/app/src/androidTest/kotlin/com/tangem/screens/SendAddressPageObject.kt index ec4330c3fd..7ed6cddb65 100644 --- a/app/src/androidTest/kotlin/com/tangem/screens/SendAddressPageObject.kt +++ b/app/src/androidTest/kotlin/com/tangem/screens/SendAddressPageObject.kt @@ -3,7 +3,9 @@ package com.tangem.screens import androidx.compose.ui.test.SemanticsNodeInteractionsProvider import com.tangem.common.BaseTestCase import com.tangem.core.ui.test.BaseButtonTestTags +import com.tangem.core.ui.test.FooterTestTags import com.tangem.core.ui.test.SendAddressScreenTestTags +import com.tangem.core.ui.test.TopAppBarTestTags import com.tangem.features.send.v2.impl.R import io.github.kakaocup.compose.node.element.ComposeScreen import io.github.kakaocup.compose.node.element.ComposeScreen.Companion.onComposeScreen @@ -21,6 +23,12 @@ class SendAddressPageObject(semanticsProvider: SemanticsNodeInteractionsProvider useUnmergedTree = true } + val topAppBarTitle: KNode = child { + hasTestTag(TopAppBarTestTags.TITLE) + hasText(getResourceString(CoreUiR.string.common_address)) + useUnmergedTree = true + } + val addressTextFieldTitle: KNode = child { hasTestTag(SendAddressScreenTestTags.ADDRESS_TEXT_FIELD_TITLE) useUnmergedTree = true @@ -31,6 +39,19 @@ class SendAddressPageObject(semanticsProvider: SemanticsNodeInteractionsProvider useUnmergedTree = true } + val addressTextFieldHint: KNode = child { + hasParent(withTestTag(SendAddressScreenTestTags.ADDRESS_TEXT_FIELD)) + useUnmergedTree = true + } + + fun recipientNetworkCaution(network: String): KNode = child { + val expectedText = getResourceString(R.string.send_recipient_address_footer, network) + .replace("**", "") + hasText(expectedText, substring = true) + hasTestTag(FooterTestTags.FOOTER_TEXT) + useUnmergedTree = true + } + val addressPasteButton: KNode = child { hasTestTag(SendAddressScreenTestTags.ADDRESS_PASTE_BUTTON) useUnmergedTree = true diff --git a/app/src/androidTest/kotlin/com/tangem/tests/send/addressScreen/RecentBlockTest.kt b/app/src/androidTest/kotlin/com/tangem/tests/send/addressScreen/RecentBlockTest.kt index 0c0de9d580..74e5dac269 100644 --- a/app/src/androidTest/kotlin/com/tangem/tests/send/addressScreen/RecentBlockTest.kt +++ b/app/src/androidTest/kotlin/com/tangem/tests/send/addressScreen/RecentBlockTest.kt @@ -149,7 +149,7 @@ class RecentBlockTest : BaseTestCase() { } } - @AllureId("4596") + @AllureId("4598") @DisplayName("Send (address screen): check 'Recent' block, transaction history does not load") @Test fun recentBlockTransactionHistoryDoesNotLoadTest() { diff --git a/app/src/androidTest/kotlin/com/tangem/tests/send/addressScreen/SendAddressScreenTest.kt b/app/src/androidTest/kotlin/com/tangem/tests/send/addressScreen/SendAddressScreenTest.kt index 6529446443..572fbce81c 100644 --- a/app/src/androidTest/kotlin/com/tangem/tests/send/addressScreen/SendAddressScreenTest.kt +++ b/app/src/androidTest/kotlin/com/tangem/tests/send/addressScreen/SendAddressScreenTest.kt @@ -178,7 +178,7 @@ class SendAddressScreenTest : BaseTestCase() { } } - @AllureId("4004") + @AllureId("4009") @DisplayName("Send (address screen): check ENS name") @Test fun sendEnsNameTest() { @@ -580,4 +580,50 @@ class SendAddressScreenTest : BaseTestCase() { } } } + + @AllureId("4567") + @DisplayName("Send (address screen): check address field") + @Test + fun checkSendAddressScreenTest() { + val tokenName = "Ethereum" + val sendAmount = "1" + val hint = getResourceString(R.string.send_enter_address_field_ens) + val recipient = getResourceString(R.string.send_recipient) + + setupHooks().run { + step("Open 'Main Screen'") { + openMainScreen() + } + step("Synchronize addresses") { + synchronizeAddresses() + } + step("Open 'Send Address' screen") { + openSendAddressScreen(tokenName, sendAmount) + } + step("Assert 'Address' screen title is displayed") { + onSendAddressScreen { topAppBarTitle.assertIsDisplayed() } + } + step("Assert address text field title is displayed") { + onSendAddressScreen { addressTextFieldTitle.assertTextContains(recipient) } + } + step("Assert address text field is displayed") { + onSendAddressScreen { addressTextField.assertIsDisplayed() } + } + step("Assert address text field hint contains text '$hint'") { + onSendAddressScreen { addressTextFieldHint.assertTextContains(hint) } + } + step("Assert 'QR' button is displayed") { + onSendAddressScreen { qrButton.assertIsDisplayed() } + } + step("Assert 'Paste' button is displayed") { + onSendAddressScreen { addressPasteButton.assertIsDisplayed() } + } + step("Assert recipient network caution is displayed for network '$tokenName'") { + onSendAddressScreen { recipientNetworkCaution(tokenName).assertIsDisplayed() } + } + step("Assert 'Next' button is disabled") { + onSendAddressScreen { nextButton.assertIsNotEnabled() } + } + } + } } \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/containers/FooterContainer.kt b/core/ui/src/main/java/com/tangem/core/ui/components/containers/FooterContainer.kt index 4c44d3992a..d711a1df80 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/containers/FooterContainer.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/containers/FooterContainer.kt @@ -8,10 +8,12 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag import androidx.compose.ui.unit.dp import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.resolveAnnotatedReference import com.tangem.core.ui.res.TangemTheme +import com.tangem.core.ui.test.FooterTestTags /** * Container for footer info below the text field @@ -37,7 +39,8 @@ fun FooterContainer( style = TangemTheme.typography.caption2, color = TangemTheme.colors.text.tertiary, modifier = Modifier - .padding(paddingValues), + .padding(paddingValues) + .testTag(FooterTestTags.FOOTER_TEXT), ) } } diff --git a/core/ui/src/main/java/com/tangem/core/ui/test/FooterTestTags.kt b/core/ui/src/main/java/com/tangem/core/ui/test/FooterTestTags.kt new file mode 100644 index 0000000000..be38de2351 --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/test/FooterTestTags.kt @@ -0,0 +1,5 @@ +package com.tangem.core.ui.test + +object FooterTestTags { + const val FOOTER_TEXT = "FOOTER_TEXT" +} \ No newline at end of file