Updated on 2026-08-14

This commit is contained in:
Tangem 2025-09-10 15:40:08 +03:00
parent 4d5b9b87e6
commit a163569c86
9 changed files with 400 additions and 7 deletions

View file

@ -4,13 +4,25 @@ import com.tangem.common.BaseTestCase
import com.tangem.common.extensions.clickWithAssertion
import com.tangem.domain.models.scan.ProductType
import com.tangem.screens.*
import com.tangem.screens.onDisclaimerScreen
import com.tangem.screens.onMainScreen
import com.tangem.screens.onMarketsTooltipScreen
import com.tangem.screens.onStoriesScreen
import com.tangem.tap.domain.sdk.mocks.MockContent
import com.tangem.tap.domain.sdk.mocks.MockProvider
import io.qameta.allure.kotlin.Allure.step
fun BaseTestCase.openMainScreen(productType: ProductType? = null, alreadyActivatedDialogIsShown : Boolean = false) {
fun BaseTestCase.openMainScreen(
productType: ProductType? = null,
mockContent: MockContent? = null,
alreadyActivatedDialogIsShown : Boolean = false
) {
if (productType != null) {
MockProvider.setMocks(productType)
}
if (mockContent != null) {
MockProvider.setMocks(mockContent)
}
step("Click on 'Accept' button") {
onDisclaimerScreen { acceptButton.clickWithAssertion() }
}

View file

@ -38,7 +38,7 @@ class BuyTokenDetailsPageObject(semanticsProvider: SemanticsNodeInteractionsProv
}
val errorNotificationText: KNode = child {
hasTestTag(NotificationTestTags.TEXT)
hasTestTag(NotificationTestTags.MESSAGE)
hasText(getResourceString(R.string.common_unknown_error))
useUnmergedTree = true
}

View file

@ -0,0 +1,28 @@
package com.tangem.screens
import com.kaspersky.kaspresso.screens.KScreen
import com.tangem.core.ui.R
import io.github.kakaocup.kakao.text.KButton
import io.github.kakaocup.kakao.text.KTextView
object FailedCardVerificationDialogPageObject : KScreen<FailedCardVerificationDialogPageObject>() {
override val layoutId: Int? = null
override val viewClass: Class<*>? = null
val title = KTextView {
withId(R.id.alertTitle)
}
val message = KTextView {
withId(R.id.message)
}
val cancelButton = KButton {
withText(R.string.common_cancel)
}
val understandButton = KButton {
withText(R.string.common_understand)
}
}

View file

@ -8,6 +8,7 @@ import com.tangem.common.extensions.hasLazyListItemPosition
import com.tangem.common.utils.LazyListItemNode
import com.tangem.core.ui.test.TokenElementsTestTags
import com.tangem.core.ui.test.MainScreenTestTags
import com.tangem.core.ui.test.NotificationTestTags
import com.tangem.core.ui.utils.LazyListItemPositionSemantics
import com.tangem.feature.wallet.impl.R
import io.github.kakaocup.compose.node.element.ComposeScreen
@ -48,6 +49,29 @@ class MainScreenPageObject(semanticsProvider: SemanticsNodeInteractionsProvider)
hasText(getResourceString(R.string.common_buy))
}
val notificationContainer: KNode = child {
hasTestTag(NotificationTestTags.CONTAINER)
useUnmergedTree = true
}
val devCardNotificationIcon: KNode = child {
hasAnySibling(withText(getResourceString(R.string.warning_developer_card_title)))
hasTestTag(NotificationTestTags.ICON)
useUnmergedTree = true
}
val devCardNotificationTitle: KNode = child {
hasTestTag(NotificationTestTags.TITLE)
hasText(getResourceString(R.string.warning_developer_card_title))
useUnmergedTree = true
}
val devCardNotificationMessage: KNode = child {
hasTestTag(NotificationTestTags.MESSAGE)
hasText(getResourceString(R.string.warning_developer_card_message))
useUnmergedTree = true
}
/**
* Find token list item with title and address
*/

View file

@ -57,7 +57,7 @@ class SwapTokenPageObject(semanticsProvider: SemanticsNodeInteractionsProvider)
}
val errorNotificationText: KNode = child {
hasTestTag(NotificationTestTags.TEXT)
hasTestTag(NotificationTestTags.MESSAGE)
useUnmergedTree = true
}

View file

@ -0,0 +1,54 @@
package com.tangem.tests
import com.tangem.common.BaseTestCase
import com.tangem.scenarios.openMainScreen
import com.tangem.screens.onMainScreen
import com.tangem.tap.domain.sdk.mocks.content.DevWalletMockContent
import dagger.hilt.android.testing.HiltAndroidTest
import io.qameta.allure.kotlin.AllureId
import io.qameta.allure.kotlin.junit4.DisplayName
import org.junit.Test
@HiltAndroidTest
class WarningTest : BaseTestCase() {
@AllureId("898")
@DisplayName("Warnings: check 'Dev card' warning")
@Test
fun devCardWarningTest() {
setupHooks().run {
step("Open 'Main' screen") {
openMainScreen(mockContent = DevWalletMockContent)
}
step("Assert 'Dev card' notification title is displayed") {
onMainScreen { devCardNotificationTitle.assertIsDisplayed() }
}
step("Assert 'Dev card' notification message is displayed") {
onMainScreen { devCardNotificationMessage.assertIsDisplayed() }
}
step("Assert 'Dev card' notification icon is displayed") {
onMainScreen { devCardNotificationIcon.assertIsDisplayed() }
}
}
}
@AllureId("3991")
@DisplayName("Warnings: check 'Dev card' warning is not displayed for release card")
@Test
fun releaseCardWarningTest() {
setupHooks().run {
step("Open 'Main' screen") {
openMainScreen()
}
step("Assert 'Dev card' notification title is not displayed") {
onMainScreen { devCardNotificationTitle.assertIsNotDisplayed() }
}
step("Assert 'Dev card' notification message is not displayed") {
onMainScreen { devCardNotificationMessage.assertIsNotDisplayed() }
}
step("Assert 'Dev card' notification icon is not displayed") {
onMainScreen { devCardNotificationIcon.assertIsNotDisplayed() }
}
}
}
}