Updated on 2026-08-14

This commit is contained in:
Tangem 2025-11-19 09:55:35 +03:00
parent fcd85fba97
commit 2d3e5fdb7a
5 changed files with 78 additions and 3 deletions

View file

@ -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

View file

@ -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() {

View file

@ -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() }
}
}
}
}

View file

@ -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),
)
}
}

View file

@ -0,0 +1,5 @@
package com.tangem.core.ui.test
object FooterTestTags {
const val FOOTER_TEXT = "FOOTER_TEXT"
}