Updated on 2026-08-14
This commit is contained in:
parent
27cf6b6532
commit
fa9aad8bb4
29 changed files with 227 additions and 198 deletions
|
|
@ -5,10 +5,7 @@ import com.kaspersky.kaspresso.testcases.api.scenario.Scenario
|
||||||
import com.kaspersky.kaspresso.testcases.core.testcontext.TestContext
|
import com.kaspersky.kaspresso.testcases.core.testcontext.TestContext
|
||||||
import com.tangem.common.extensions.clickWithAssertion
|
import com.tangem.common.extensions.clickWithAssertion
|
||||||
import com.tangem.domain.models.scan.ProductType
|
import com.tangem.domain.models.scan.ProductType
|
||||||
import com.tangem.screens.DisclaimerTestScreen
|
import com.tangem.screens.*
|
||||||
import com.tangem.screens.MainTestScreen
|
|
||||||
import com.tangem.screens.StoriesTestScreen
|
|
||||||
import com.tangem.screens.TestTopBar
|
|
||||||
import com.tangem.tap.domain.sdk.mocks.MockProvider
|
import com.tangem.tap.domain.sdk.mocks.MockProvider
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen
|
import io.github.kakaocup.compose.node.element.ComposeScreen
|
||||||
|
|
||||||
|
|
@ -20,22 +17,22 @@ class OpenMainScreenScenario(
|
||||||
if (productType != null) {
|
if (productType != null) {
|
||||||
MockProvider.setMocks(productType)
|
MockProvider.setMocks(productType)
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<DisclaimerTestScreen>(testRule) {
|
ComposeScreen.onComposeScreen<DisclaimerPageObject>(testRule) {
|
||||||
step("Click on \"Accept\" button") {
|
step("Click on \"Accept\" button") {
|
||||||
acceptButton.clickWithAssertion()
|
acceptButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<StoriesTestScreen>(testRule) {
|
ComposeScreen.onComposeScreen<StoriesPageObject>(testRule) {
|
||||||
step("Click on \"Scan\" button") {
|
step("Click on \"Scan\" button") {
|
||||||
scanButton.clickWithAssertion()
|
scanButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<MainTestScreen>(testRule) {
|
ComposeScreen.onComposeScreen<MainScreenPageObject>(testRule) {
|
||||||
step("Make sure wallet screen is visible") {
|
step("Make sure wallet screen is visible") {
|
||||||
assertIsDisplayed()
|
assertIsDisplayed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<TestTopBar>(testRule) {
|
ComposeScreen.onComposeScreen<TopBarPageObject>(testRule) {
|
||||||
step("Close Markets tooltip"){
|
step("Close Markets tooltip"){
|
||||||
performClick()
|
performClick()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,27 @@
|
||||||
package com.tangem.screens
|
package com.tangem.screens
|
||||||
|
|
||||||
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
||||||
import com.tangem.core.ui.test.TestTags
|
import com.tangem.common.BaseTestCase
|
||||||
|
import com.tangem.core.ui.test.DetailsScreenTestTags
|
||||||
import com.tangem.wallet.R
|
import com.tangem.wallet.R
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen
|
import io.github.kakaocup.compose.node.element.ComposeScreen
|
||||||
|
import io.github.kakaocup.compose.node.element.ComposeScreen.Companion.onComposeScreen
|
||||||
import io.github.kakaocup.compose.node.element.KNode
|
import io.github.kakaocup.compose.node.element.KNode
|
||||||
import io.github.kakaocup.kakao.common.utilities.getResourceString
|
import io.github.kakaocup.kakao.common.utilities.getResourceString
|
||||||
|
|
||||||
class DetailsTestScreen(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
class DetailsPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||||
ComposeScreen<DetailsTestScreen>(
|
ComposeScreen<DetailsPageObject>(
|
||||||
semanticsProvider = semanticsProvider,
|
semanticsProvider = semanticsProvider,
|
||||||
viewBuilderAction = { hasTestTag(TestTags.DETAILS_SCREEN) }
|
viewBuilderAction = { hasTestTag(DetailsScreenTestTags.SCREEN_CONTAINER) }
|
||||||
) {
|
) {
|
||||||
|
|
||||||
val walletConnectButton: KNode = child {
|
val walletConnectButton: KNode = child {
|
||||||
hasTestTag(TestTags.DETAILS_SCREEN_ITEM)
|
hasTestTag(DetailsScreenTestTags.SCREEN_ITEM)
|
||||||
hasText(getResourceString(R.string.wallet_connect_title))
|
hasText(getResourceString(R.string.wallet_connect_title))
|
||||||
}
|
}
|
||||||
|
|
||||||
private val walletBlock: KNode = child {
|
private val walletBlock: KNode = child {
|
||||||
hasTestTag(TestTags.DETAILS_SCREEN_ITEM)
|
hasTestTag(DetailsScreenTestTags.SCREEN_ITEM)
|
||||||
}
|
}
|
||||||
|
|
||||||
val walletNameButton: KNode = walletBlock.child {
|
val walletNameButton: KNode = walletBlock.child {
|
||||||
|
|
@ -32,20 +34,23 @@ class DetailsTestScreen(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||||
}
|
}
|
||||||
|
|
||||||
val buyTangemButton: KNode = child {
|
val buyTangemButton: KNode = child {
|
||||||
hasTestTag(TestTags.DETAILS_SCREEN_ITEM)
|
hasTestTag(DetailsScreenTestTags.SCREEN_ITEM)
|
||||||
hasText(getResourceString(R.string.details_buy_wallet))
|
hasText(getResourceString(R.string.details_buy_wallet))
|
||||||
}
|
}
|
||||||
|
|
||||||
val appSettingsButton: KNode = child {
|
val appSettingsButton: KNode = child {
|
||||||
hasTestTag(TestTags.DETAILS_SCREEN_ITEM)
|
hasTestTag(DetailsScreenTestTags.SCREEN_ITEM)
|
||||||
hasText(getResourceString(R.string.app_settings_title))
|
hasText(getResourceString(R.string.app_settings_title))
|
||||||
}
|
}
|
||||||
val contactSupportButton: KNode = child {
|
val contactSupportButton: KNode = child {
|
||||||
hasTestTag(TestTags.DETAILS_SCREEN_ITEM)
|
hasTestTag(DetailsScreenTestTags.SCREEN_ITEM)
|
||||||
hasText(getResourceString(R.string.details_row_title_contact_to_support))
|
hasText(getResourceString(R.string.details_row_title_contact_to_support))
|
||||||
}
|
}
|
||||||
val toSButton: KNode = child {
|
val toSButton: KNode = child {
|
||||||
hasTestTag(TestTags.DETAILS_SCREEN_ITEM)
|
hasTestTag(DetailsScreenTestTags.SCREEN_ITEM)
|
||||||
hasText(getResourceString(R.string.disclaimer_title))
|
hasText(getResourceString(R.string.disclaimer_title))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun BaseTestCase.onDetailsScreen(function: DetailsPageObject.() -> Unit) =
|
||||||
|
onComposeScreen(composeTestRule, function)
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package com.tangem.screens
|
||||||
|
|
||||||
|
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
||||||
|
import com.tangem.common.BaseTestCase
|
||||||
|
import com.tangem.core.ui.test.DisclaimerScreenTestTags
|
||||||
|
import io.github.kakaocup.compose.node.element.ComposeScreen
|
||||||
|
import io.github.kakaocup.compose.node.element.ComposeScreen.Companion.onComposeScreen
|
||||||
|
import io.github.kakaocup.compose.node.element.KNode
|
||||||
|
|
||||||
|
class DisclaimerPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||||
|
ComposeScreen<DisclaimerPageObject>(
|
||||||
|
semanticsProvider = semanticsProvider,
|
||||||
|
viewBuilderAction = { hasTestTag(DisclaimerScreenTestTags.SCREEN_CONTAINER) }
|
||||||
|
) {
|
||||||
|
|
||||||
|
val acceptButton: KNode = child {
|
||||||
|
hasTestTag(DisclaimerScreenTestTags.ACCEPT_BUTTON)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun BaseTestCase.onDisclaimerScreen(function: DisclaimerPageObject.() -> Unit) =
|
||||||
|
onComposeScreen(composeTestRule, function)
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
package com.tangem.screens
|
|
||||||
|
|
||||||
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
|
||||||
import com.tangem.core.ui.test.TestTags
|
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen
|
|
||||||
import io.github.kakaocup.compose.node.element.KNode
|
|
||||||
|
|
||||||
class DisclaimerTestScreen(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
|
||||||
ComposeScreen<DisclaimerTestScreen>(
|
|
||||||
semanticsProvider = semanticsProvider,
|
|
||||||
viewBuilderAction = { hasTestTag(TestTags.DISCLAIMER_SCREEN_CONTAINER) }
|
|
||||||
) {
|
|
||||||
|
|
||||||
val acceptButton: KNode = child {
|
|
||||||
hasTestTag(TestTags.DISCLAIMER_SCREEN_ACCEPT_BUTTON)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.tangem.screens
|
||||||
|
|
||||||
|
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
||||||
|
import com.tangem.common.BaseTestCase
|
||||||
|
import com.tangem.core.ui.test.MainScreenTestTags
|
||||||
|
import io.github.kakaocup.compose.node.element.ComposeScreen
|
||||||
|
import io.github.kakaocup.compose.node.element.ComposeScreen.Companion.onComposeScreen
|
||||||
|
|
||||||
|
class MainScreenPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||||
|
ComposeScreen<MainScreenPageObject>(
|
||||||
|
semanticsProvider = semanticsProvider,
|
||||||
|
viewBuilderAction = { hasTestTag(MainScreenTestTags.SCREEN_CONTAINER) }
|
||||||
|
)
|
||||||
|
|
||||||
|
internal fun BaseTestCase.onMainScreen(function: MainScreenPageObject.() -> Unit) =
|
||||||
|
onComposeScreen(composeTestRule, function)
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
package com.tangem.screens
|
|
||||||
|
|
||||||
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
|
||||||
import com.tangem.core.ui.test.TestTags
|
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen
|
|
||||||
|
|
||||||
class MainTestScreen(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
|
||||||
ComposeScreen<MainTestScreen>(
|
|
||||||
semanticsProvider = semanticsProvider,
|
|
||||||
viewBuilderAction = { hasTestTag(TestTags.MAIN_SCREEN) }
|
|
||||||
)
|
|
||||||
|
|
@ -1,25 +1,27 @@
|
||||||
package com.tangem.screens
|
package com.tangem.screens
|
||||||
|
|
||||||
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
||||||
import com.tangem.core.ui.test.TestTags
|
import com.tangem.common.BaseTestCase
|
||||||
|
import com.tangem.core.ui.test.StoriesScreenTestTags
|
||||||
import com.tangem.wallet.R
|
import com.tangem.wallet.R
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen
|
import io.github.kakaocup.compose.node.element.ComposeScreen
|
||||||
|
import io.github.kakaocup.compose.node.element.ComposeScreen.Companion.onComposeScreen
|
||||||
import io.github.kakaocup.compose.node.element.KNode
|
import io.github.kakaocup.compose.node.element.KNode
|
||||||
import io.github.kakaocup.kakao.common.views.KView
|
import io.github.kakaocup.kakao.common.views.KView
|
||||||
import io.github.kakaocup.kakao.text.KButton
|
import io.github.kakaocup.kakao.text.KButton
|
||||||
|
|
||||||
class StoriesTestScreen(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
class StoriesPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||||
ComposeScreen<StoriesTestScreen>(
|
ComposeScreen<StoriesPageObject>(
|
||||||
semanticsProvider = semanticsProvider,
|
semanticsProvider = semanticsProvider,
|
||||||
viewBuilderAction = { hasTestTag(TestTags.STORIES_SCREEN) }
|
viewBuilderAction = { hasTestTag(StoriesScreenTestTags.SCREEN_CONTAINER) }
|
||||||
) {
|
) {
|
||||||
|
|
||||||
val scanButton: KNode = child {
|
val scanButton: KNode = child {
|
||||||
hasTestTag(TestTags.STORIES_SCREEN_SCAN_BUTTON)
|
hasTestTag(StoriesScreenTestTags.SCAN_BUTTON)
|
||||||
}
|
}
|
||||||
|
|
||||||
val orderButton: KNode = child {
|
val orderButton: KNode = child {
|
||||||
hasTestTag(TestTags.STORIES_SCREEN_ORDER_BUTTON)
|
hasTestTag(StoriesScreenTestTags.ORDER_BUTTON)
|
||||||
}
|
}
|
||||||
|
|
||||||
val enableNFCAlert: KView = KView {
|
val enableNFCAlert: KView = KView {
|
||||||
|
|
@ -29,4 +31,7 @@ class StoriesTestScreen(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||||
val cancelButton: KButton = KButton {
|
val cancelButton: KButton = KButton {
|
||||||
withId(android.R.id.button2)
|
withId(android.R.id.button2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun BaseTestCase.onStoriesScreen(function: StoriesPageObject.() -> Unit) =
|
||||||
|
onComposeScreen(composeTestRule, function)
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
package com.tangem.screens
|
|
||||||
|
|
||||||
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
|
||||||
import com.tangem.core.ui.test.TestTags
|
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen
|
|
||||||
import io.github.kakaocup.compose.node.element.KNode
|
|
||||||
|
|
||||||
class TestTopBar(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
|
||||||
ComposeScreen<TestTopBar>(
|
|
||||||
semanticsProvider = semanticsProvider,
|
|
||||||
viewBuilderAction = { hasTestTag(TestTags.MAIN_SCREEN_TOP_BAR) }
|
|
||||||
) {
|
|
||||||
val moreButton: KNode = child {
|
|
||||||
hasTestTag(TestTags.MAIN_SCREEN_MORE_BUTTON)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.tangem.screens
|
||||||
|
|
||||||
|
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
||||||
|
import com.tangem.common.BaseTestCase
|
||||||
|
import com.tangem.core.ui.test.MainScreenTestTags
|
||||||
|
import io.github.kakaocup.compose.node.element.ComposeScreen
|
||||||
|
import io.github.kakaocup.compose.node.element.ComposeScreen.Companion.onComposeScreen
|
||||||
|
import io.github.kakaocup.compose.node.element.KNode
|
||||||
|
|
||||||
|
class TopBarPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||||
|
ComposeScreen<TopBarPageObject>(
|
||||||
|
semanticsProvider = semanticsProvider,
|
||||||
|
viewBuilderAction = { hasTestTag(MainScreenTestTags.TOP_BAR) }
|
||||||
|
) {
|
||||||
|
val moreButton: KNode = child {
|
||||||
|
hasTestTag(MainScreenTestTags.MORE_BUTTON)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun BaseTestCase.onTopBar(function: TopBarPageObject.() -> Unit) =
|
||||||
|
onComposeScreen(composeTestRule, function)
|
||||||
|
|
@ -1,19 +1,21 @@
|
||||||
package com.tangem.screens
|
package com.tangem.screens
|
||||||
|
|
||||||
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
||||||
import com.tangem.core.ui.test.TestTags
|
import com.tangem.common.BaseTestCase
|
||||||
|
import com.tangem.core.ui.test.WalletSettingsScreenTestTags
|
||||||
import com.tangem.wallet.R
|
import com.tangem.wallet.R
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen
|
import io.github.kakaocup.compose.node.element.ComposeScreen
|
||||||
|
import io.github.kakaocup.compose.node.element.ComposeScreen.Companion.onComposeScreen
|
||||||
import io.github.kakaocup.compose.node.element.KNode
|
import io.github.kakaocup.compose.node.element.KNode
|
||||||
import io.github.kakaocup.kakao.common.utilities.getResourceString
|
import io.github.kakaocup.kakao.common.utilities.getResourceString
|
||||||
|
|
||||||
class WalletSettingsTestScreen(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
class WalletSettingsPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||||
ComposeScreen<WalletSettingsTestScreen>(
|
ComposeScreen<WalletSettingsPageObject>(
|
||||||
semanticsProvider = semanticsProvider,
|
semanticsProvider = semanticsProvider,
|
||||||
viewBuilderAction = { hasTestTag(TestTags.WALLET_SETTINGS_SCREEN) }
|
viewBuilderAction = { hasTestTag(WalletSettingsScreenTestTags.SCREEN_CONTAINER) }
|
||||||
) {
|
) {
|
||||||
private val walletSettingsItem: KNode = child {
|
private val walletSettingsItem: KNode = child {
|
||||||
hasTestTag(TestTags.WALLET_SETTINGS_SCREEN_ITEM)
|
hasTestTag(WalletSettingsScreenTestTags.SCREEN_ITEM)
|
||||||
}
|
}
|
||||||
|
|
||||||
val linkMoreCardsButton: KNode = walletSettingsItem.child {
|
val linkMoreCardsButton: KNode = walletSettingsItem.child {
|
||||||
|
|
@ -28,4 +30,7 @@ class WalletSettingsTestScreen(semanticsProvider: SemanticsNodeInteractionsProvi
|
||||||
val forgetWalletButton: KNode = walletSettingsItem.child {
|
val forgetWalletButton: KNode = walletSettingsItem.child {
|
||||||
hasText(getResourceString(R.string.settings_forget_wallet))
|
hasText(getResourceString(R.string.settings_forget_wallet))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun BaseTestCase.onWalletSettingsScreen(function: WalletSettingsPageObject.() -> Unit) =
|
||||||
|
onComposeScreen(composeTestRule, function)
|
||||||
|
|
@ -4,152 +4,151 @@ import com.tangem.common.BaseTestCase
|
||||||
import com.tangem.common.extensions.clickWithAssertion
|
import com.tangem.common.extensions.clickWithAssertion
|
||||||
import com.tangem.domain.models.scan.ProductType
|
import com.tangem.domain.models.scan.ProductType
|
||||||
import com.tangem.scenarios.OpenMainScreenScenario
|
import com.tangem.scenarios.OpenMainScreenScenario
|
||||||
import com.tangem.screens.DetailsTestScreen
|
import com.tangem.screens.onDetailsScreen
|
||||||
import com.tangem.screens.TestTopBar
|
import com.tangem.screens.onTopBar
|
||||||
import com.tangem.screens.WalletSettingsTestScreen
|
import com.tangem.screens.onWalletSettingsScreen
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
import dagger.hilt.android.testing.HiltAndroidTest
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
@HiltAndroidTest
|
@HiltAndroidTest
|
||||||
class DetailsScreenTest : BaseTestCase() {
|
class DetailsTest : BaseTestCase() {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun walletWithoutBackupDetails() =
|
fun walletWithoutBackupDetailsTest() =
|
||||||
setupHooks().run {
|
setupHooks().run {
|
||||||
scenario(OpenMainScreenScenario(composeTestRule))
|
scenario(OpenMainScreenScenario(composeTestRule))
|
||||||
ComposeScreen.onComposeScreen<TestTopBar>(composeTestRule) {
|
onTopBar {
|
||||||
step("Open wallet details") {
|
step("Open wallet details") {
|
||||||
moreButton.clickWithAssertion()
|
moreButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<DetailsTestScreen>(composeTestRule) {
|
onDetailsScreen {
|
||||||
step("Assert wallet connect button is visible") {
|
step("Assert 'Wallet connect' button is visible") {
|
||||||
walletConnectButton.assertIsDisplayed()
|
walletConnectButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert scan card button is visible") {
|
step("Assert 'Scan card' button is visible") {
|
||||||
scanCardButton.assertIsDisplayed()
|
scanCardButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert buy Tangem card button is visible") {
|
step("Assert 'Buy Tangem card' button is visible") {
|
||||||
buyTangemButton.assertIsDisplayed()
|
buyTangemButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert app settings button is visible") {
|
step("Assert 'App settings' button is visible") {
|
||||||
appSettingsButton.assertIsDisplayed()
|
appSettingsButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert contact support button is visible") {
|
step("Assert 'Contact support' button is visible") {
|
||||||
contactSupportButton.assertIsDisplayed()
|
contactSupportButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert terms or service button is visible") {
|
step("Assert 'Terms or service' button is visible") {
|
||||||
toSButton.assertIsDisplayed()
|
toSButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Open wallet settings screen") {
|
step("Open 'Wallet settings' screen") {
|
||||||
walletNameButton.clickWithAssertion()
|
walletNameButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<WalletSettingsTestScreen>(composeTestRule) {
|
onWalletSettingsScreen {
|
||||||
step("Assert Link more cards button is visible") {
|
step("Assert 'Link more cards' button is visible") {
|
||||||
linkMoreCardsButton.assertIsDisplayed()
|
linkMoreCardsButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert Card Settings button is visible") {
|
step("Assert 'Card Settings' button is visible") {
|
||||||
cardSettingsButton.assertIsDisplayed()
|
cardSettingsButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert Referral program button is visible") {
|
step("Assert 'Referral program' button is visible") {
|
||||||
referralProgramButton.assertIsDisplayed()
|
referralProgramButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert Forget wallet button is visible") {
|
step("Assert 'Forget wallet' button is visible") {
|
||||||
forgetWalletButton.assertIsDisplayed()
|
forgetWalletButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun wallet2Details() =
|
fun wallet2DetailsTest() =
|
||||||
setupHooks().run {
|
setupHooks().run {
|
||||||
scenario(OpenMainScreenScenario(composeTestRule, ProductType.Wallet2))
|
scenario(OpenMainScreenScenario(composeTestRule, ProductType.Wallet2))
|
||||||
ComposeScreen.onComposeScreen<TestTopBar>(composeTestRule) {
|
onTopBar {
|
||||||
step("Open wallet details") {
|
step("Open wallet details") {
|
||||||
moreButton.clickWithAssertion()
|
moreButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<DetailsTestScreen>(composeTestRule) {
|
onDetailsScreen {
|
||||||
step("Assert wallet connect button is visible") {
|
step("Assert 'Wallet connect' button is visible") {
|
||||||
walletConnectButton.assertIsDisplayed()
|
walletConnectButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert scan card button is visible") {
|
step("Assert 'Scan card' button is visible") {
|
||||||
scanCardButton.assertIsDisplayed()
|
scanCardButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert buy Tangem card button is visible") {
|
step("Assert 'Buy Tangem card' button is visible") {
|
||||||
buyTangemButton.assertIsDisplayed()
|
buyTangemButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert app settings button is visible") {
|
step("Assert 'App settings' button is visible") {
|
||||||
appSettingsButton.assertIsDisplayed()
|
appSettingsButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert contact support button is visible") {
|
step("Assert 'Contact support' button is visible") {
|
||||||
contactSupportButton.assertIsDisplayed()
|
contactSupportButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert terms or service button is visible") {
|
step("Assert 'Terms or service' button is visible") {
|
||||||
toSButton.assertIsDisplayed()
|
toSButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Open wallet settings screen") {
|
step("Open 'Wallet settings' screen") {
|
||||||
walletNameButton.clickWithAssertion()
|
walletNameButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<WalletSettingsTestScreen>(composeTestRule) {
|
onWalletSettingsScreen {
|
||||||
step("Assert Link more cards button does not exist") {
|
step("Assert 'Link more cards' button does not exist") {
|
||||||
linkMoreCardsButton.assertIsNotDisplayed()
|
linkMoreCardsButton.assertIsNotDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert Card Settings button is visible") {
|
step("Assert 'Card Settings' button is visible") {
|
||||||
cardSettingsButton.assertIsDisplayed()
|
cardSettingsButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert Referral program button is visible") {
|
step("Assert 'Referral program' button is visible") {
|
||||||
referralProgramButton.assertIsDisplayed()
|
referralProgramButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert Forget wallet button is visible") {
|
step("Assert 'Forget wallet' button is visible") {
|
||||||
forgetWalletButton.assertIsDisplayed()
|
forgetWalletButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun noteDetails() =
|
fun noteDetailsTest() =
|
||||||
setupHooks().run {
|
setupHooks().run {
|
||||||
scenario(OpenMainScreenScenario(composeTestRule, ProductType.Note))
|
scenario(OpenMainScreenScenario(composeTestRule, ProductType.Note))
|
||||||
ComposeScreen.onComposeScreen<TestTopBar>(composeTestRule) {
|
onTopBar {
|
||||||
step("Open wallet details") {
|
step("Open wallet details") {
|
||||||
moreButton.clickWithAssertion()
|
moreButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<DetailsTestScreen>(composeTestRule) {
|
onDetailsScreen {
|
||||||
step("Assert wallet connect button does not exist") {
|
step("Assert 'Wallet connect' button does not exist") {
|
||||||
walletConnectButton.assertIsNotDisplayed()
|
walletConnectButton.assertIsNotDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert scan card button is visible") {
|
step("Assert 'Scan card' button is visible") {
|
||||||
scanCardButton.assertIsDisplayed()
|
scanCardButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert buy Tangem card button is visible") {
|
step("Assert 'Buy Tangem card' button is visible") {
|
||||||
buyTangemButton.assertIsDisplayed()
|
buyTangemButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert app settings button is visible") {
|
step("Assert 'App settings' button is visible") {
|
||||||
appSettingsButton.assertIsDisplayed()
|
appSettingsButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert contact support button is visible") {
|
step("Assert 'Contact support' button is visible") {
|
||||||
contactSupportButton.assertIsDisplayed()
|
contactSupportButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert terms or service button is visible") {
|
step("Assert 'Terms or service' button is visible") {
|
||||||
toSButton.assertIsDisplayed()
|
toSButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Open wallet settings screen") {
|
step("Open 'Wallet settings' screen") {
|
||||||
walletNameButton.clickWithAssertion()
|
walletNameButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<WalletSettingsTestScreen>(composeTestRule) {
|
onWalletSettingsScreen {
|
||||||
step("Assert Card Settings button is visible") {
|
step("Assert 'Card Settings' button is visible") {
|
||||||
cardSettingsButton.assertIsDisplayed()
|
cardSettingsButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert Referral program button does not exist") {
|
step("Assert 'Referral program' button does not exist") {
|
||||||
referralProgramButton.assertIsNotDisplayed()
|
referralProgramButton.assertIsNotDisplayed()
|
||||||
}
|
}
|
||||||
step("Assert Forget wallet button is visible") {
|
step("Assert 'Forget wallet' button is visible") {
|
||||||
forgetWalletButton.assertIsDisplayed()
|
forgetWalletButton.assertIsDisplayed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,11 +1,8 @@
|
||||||
package com.tangem.tests
|
package com.tangem.tests
|
||||||
|
|
||||||
import androidx.compose.ui.test.junit4.createAndroidComposeRule
|
|
||||||
import com.tangem.common.BaseTestCase
|
import com.tangem.common.BaseTestCase
|
||||||
import com.tangem.scenarios.OpenMainScreenScenario
|
import com.tangem.scenarios.OpenMainScreenScenario
|
||||||
import com.tangem.tap.MainActivity
|
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
import dagger.hilt.android.testing.HiltAndroidTest
|
||||||
import org.junit.Rule
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
@HiltAndroidTest
|
@HiltAndroidTest
|
||||||
|
|
|
||||||
|
|
@ -2,36 +2,35 @@ package com.tangem.tests
|
||||||
|
|
||||||
import com.tangem.common.BaseTestCase
|
import com.tangem.common.BaseTestCase
|
||||||
import com.tangem.common.extensions.clickWithAssertion
|
import com.tangem.common.extensions.clickWithAssertion
|
||||||
import com.tangem.screens.DisclaimerTestScreen
|
import com.tangem.screens.onDisclaimerScreen
|
||||||
import com.tangem.screens.MainTestScreen
|
import com.tangem.screens.onMainScreen
|
||||||
import com.tangem.screens.StoriesTestScreen
|
import com.tangem.screens.onStoriesScreen
|
||||||
import com.tangem.tap.domain.sdk.mocks.MockProvider
|
import com.tangem.tap.domain.sdk.mocks.MockProvider
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
import dagger.hilt.android.testing.HiltAndroidTest
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
@HiltAndroidTest
|
@HiltAndroidTest
|
||||||
class ScanErrorTest : BaseTestCase() {
|
class ScanErrorTest : BaseTestCase() {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun goToMain() =
|
fun goToMainTest() =
|
||||||
setupHooks().run {
|
setupHooks().run {
|
||||||
ComposeScreen.onComposeScreen<DisclaimerTestScreen>(composeTestRule) {
|
onDisclaimerScreen {
|
||||||
step("Click on \"Accept\" button") {
|
step("Click on 'Accept' button") {
|
||||||
acceptButton.clickWithAssertion()
|
acceptButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<StoriesTestScreen>(composeTestRule) {
|
onStoriesScreen {
|
||||||
step("Click on \"Scan\" button emulating scan error") {
|
step("Click on 'Scan' button emulating scan error") {
|
||||||
MockProvider.setEmulateError()
|
MockProvider.setEmulateError()
|
||||||
scanButton.clickWithAssertion()
|
scanButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
step("Click on \"Scan\" button again without emulating error") {
|
step("Click on 'Scan' button again without emulating error") {
|
||||||
MockProvider.resetEmulateError()
|
MockProvider.resetEmulateError()
|
||||||
scanButton.clickWithAssertion()
|
scanButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<MainTestScreen>(composeTestRule) {
|
onMainScreen {
|
||||||
step("Make sure wallet screen is visible") {
|
step("Make sure wallet screen is visible") {
|
||||||
assertIsDisplayed()
|
assertIsDisplayed()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,28 @@
|
||||||
package com.tangem.tests
|
package com.tangem.tests
|
||||||
|
|
||||||
import android.content.Intent.ACTION_VIEW
|
import android.content.Intent.ACTION_VIEW
|
||||||
import androidx.test.espresso.intent.matcher.UriMatchers
|
|
||||||
import com.tangem.common.BaseTestCase
|
import com.tangem.common.BaseTestCase
|
||||||
import com.tangem.common.extensions.clickWithAssertion
|
import com.tangem.common.extensions.clickWithAssertion
|
||||||
import com.tangem.screens.DisclaimerTestScreen
|
import com.tangem.screens.onDisclaimerScreen
|
||||||
import com.tangem.screens.StoriesTestScreen
|
import com.tangem.screens.onStoriesScreen
|
||||||
import com.tangem.tap.features.home.redux.HomeMiddleware.NEW_BUY_WALLET_URL
|
import com.tangem.tap.features.home.redux.HomeMiddleware.NEW_BUY_WALLET_URL
|
||||||
import dagger.hilt.android.testing.HiltAndroidTest
|
import dagger.hilt.android.testing.HiltAndroidTest
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen
|
|
||||||
import io.github.kakaocup.kakao.intent.KIntent
|
import io.github.kakaocup.kakao.intent.KIntent
|
||||||
import org.hamcrest.Matchers
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
@HiltAndroidTest
|
@HiltAndroidTest
|
||||||
class StoriesTest : BaseTestCase() {
|
class StoriesTest : BaseTestCase() {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun clickOnOrderButton() =
|
fun clickOnOrderButtonTest() =
|
||||||
setupHooks().run {
|
setupHooks().run {
|
||||||
ComposeScreen.onComposeScreen<DisclaimerTestScreen>(composeTestRule) {
|
onDisclaimerScreen {
|
||||||
step("Click on \"Accept\" button") {
|
step("Click on 'Accept' button") {
|
||||||
acceptButton.clickWithAssertion()
|
acceptButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ComposeScreen.onComposeScreen<StoriesTestScreen>(composeTestRule) {
|
onStoriesScreen {
|
||||||
step("Click on \"Order\" button") {
|
step("Click on 'Order' button") {
|
||||||
orderButton.clickWithAssertion()
|
orderButton.clickWithAssertion()
|
||||||
}
|
}
|
||||||
step("Assert: browser opened") {
|
step("Assert: browser opened") {
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||||
import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider
|
||||||
import com.tangem.core.ui.res.TangemTheme
|
import com.tangem.core.ui.res.TangemTheme
|
||||||
import com.tangem.core.ui.res.TangemThemePreview
|
import com.tangem.core.ui.res.TangemThemePreview
|
||||||
import com.tangem.core.ui.test.TestTags
|
import com.tangem.core.ui.test.StoriesScreenTestTags
|
||||||
import com.tangem.tap.features.home.compose.content.*
|
import com.tangem.tap.features.home.compose.content.*
|
||||||
import com.tangem.tap.features.home.compose.views.HomeButtons
|
import com.tangem.tap.features.home.compose.views.HomeButtons
|
||||||
import com.tangem.tap.features.home.compose.views.SearchCurrenciesButton
|
import com.tangem.tap.features.home.compose.views.SearchCurrenciesButton
|
||||||
|
|
@ -61,7 +61,7 @@ internal fun StoriesScreen(
|
||||||
StoriesScreenContent(
|
StoriesScreenContent(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.testTag(TestTags.STORIES_SCREEN),
|
.testTag(StoriesScreenTestTags.SCREEN_CONTAINER),
|
||||||
config = StoriesScreenContentConfig(
|
config = StoriesScreenContentConfig(
|
||||||
storiesSize = state.stories.lastIndex,
|
storiesSize = state.stories.lastIndex,
|
||||||
currentStoryIndex = currentStoryIndex,
|
currentStoryIndex = currentStoryIndex,
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||||
import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider
|
||||||
import com.tangem.core.ui.res.TangemTheme
|
import com.tangem.core.ui.res.TangemTheme
|
||||||
import com.tangem.core.ui.res.TangemThemePreview
|
import com.tangem.core.ui.res.TangemThemePreview
|
||||||
import com.tangem.core.ui.test.TestTags
|
import com.tangem.core.ui.test.StoriesScreenTestTags
|
||||||
import com.tangem.tap.features.home.compose.content.*
|
import com.tangem.tap.features.home.compose.content.*
|
||||||
import com.tangem.tap.features.home.compose.views.HomeButtonsV2
|
import com.tangem.tap.features.home.compose.views.HomeButtonsV2
|
||||||
import com.tangem.tap.features.home.compose.views.StoriesProgressBar
|
import com.tangem.tap.features.home.compose.views.StoriesProgressBar
|
||||||
|
|
@ -57,7 +57,7 @@ internal fun StoriesScreenV2(
|
||||||
StoriesScreenContentV2(
|
StoriesScreenContentV2(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.testTag(TestTags.STORIES_SCREEN),
|
.testTag(StoriesScreenTestTags.SCREEN_CONTAINER),
|
||||||
config = StoriesScreenContentV2Config(
|
config = StoriesScreenContentV2Config(
|
||||||
storiesSize = state.stories.lastIndex,
|
storiesSize = state.stories.lastIndex,
|
||||||
currentStoryIndex = currentStoryIndex,
|
currentStoryIndex = currentStoryIndex,
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import com.tangem.core.ui.components.buttons.common.TangemButtonIconPosition
|
||||||
import com.tangem.core.ui.extensions.stringResourceSafe
|
import com.tangem.core.ui.extensions.stringResourceSafe
|
||||||
import com.tangem.core.ui.res.TangemTheme
|
import com.tangem.core.ui.res.TangemTheme
|
||||||
import com.tangem.core.ui.res.TangemThemePreview
|
import com.tangem.core.ui.res.TangemThemePreview
|
||||||
import com.tangem.core.ui.test.TestTags
|
import com.tangem.core.ui.test.StoriesScreenTestTags
|
||||||
import com.tangem.wallet.R
|
import com.tangem.wallet.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -34,7 +34,7 @@ internal fun HomeButtons(
|
||||||
ScanCardButton(
|
ScanCardButton(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.weight(weight = 1f)
|
.weight(weight = 1f)
|
||||||
.testTag(TestTags.STORIES_SCREEN_SCAN_BUTTON),
|
.testTag(StoriesScreenTestTags.SCAN_BUTTON),
|
||||||
showProgress = btnScanStateInProgress,
|
showProgress = btnScanStateInProgress,
|
||||||
onClick = onScanButtonClick,
|
onClick = onScanButtonClick,
|
||||||
)
|
)
|
||||||
|
|
@ -42,7 +42,7 @@ internal fun HomeButtons(
|
||||||
OrderCardButton(
|
OrderCardButton(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.weight(weight = 1f)
|
.weight(weight = 1f)
|
||||||
.testTag(TestTags.STORIES_SCREEN_ORDER_BUTTON),
|
.testTag(StoriesScreenTestTags.ORDER_BUTTON),
|
||||||
onClick = onShopButtonClick,
|
onClick = onShopButtonClick,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import com.tangem.core.ui.components.buttons.common.TangemButtonIconPosition
|
||||||
import com.tangem.core.ui.extensions.stringResourceSafe
|
import com.tangem.core.ui.extensions.stringResourceSafe
|
||||||
import com.tangem.core.ui.res.TangemTheme
|
import com.tangem.core.ui.res.TangemTheme
|
||||||
import com.tangem.core.ui.res.TangemThemePreview
|
import com.tangem.core.ui.res.TangemThemePreview
|
||||||
import com.tangem.core.ui.test.TestTags
|
import com.tangem.core.ui.test.StoriesScreenTestTags
|
||||||
import com.tangem.wallet.R
|
import com.tangem.wallet.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -37,19 +37,19 @@ internal fun HomeButtonsV2(
|
||||||
CreateNewWalletButton(
|
CreateNewWalletButton(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.testTag(TestTags.STORIES_SCREEN_CREATE_NEW_WALLET_BUTTON),
|
.testTag(StoriesScreenTestTags.CREATE_NEW_WALLET_BUTTON),
|
||||||
onClick = onCreateNewWalletButtonClick,
|
onClick = onCreateNewWalletButtonClick,
|
||||||
)
|
)
|
||||||
AddExistingWalletButton(
|
AddExistingWalletButton(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.testTag(TestTags.STORIES_SCREEN_ADD_EXISTING_WALLET_BUTTON),
|
.testTag(StoriesScreenTestTags.ADD_EXISTING_WALLET_BUTTON),
|
||||||
onClick = onAddExistingWalletButtonClick,
|
onClick = onAddExistingWalletButtonClick,
|
||||||
)
|
)
|
||||||
ScanCardButton(
|
ScanCardButton(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.testTag(TestTags.STORIES_SCREEN_SCAN_BUTTON),
|
.testTag(StoriesScreenTestTags.SCAN_BUTTON),
|
||||||
showProgress = btnScanStateInProgress,
|
showProgress = btnScanStateInProgress,
|
||||||
onClick = onScanButtonClick,
|
onClick = onScanButtonClick,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.tangem.core.ui.test
|
||||||
|
|
||||||
|
object DetailsScreenTestTags {
|
||||||
|
const val SCREEN_CONTAINER = "DETAILS_SCREEN_CONTAINER"
|
||||||
|
const val SCREEN_ITEM = "DETAILS_SCREEN_ITEM"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.tangem.core.ui.test
|
||||||
|
|
||||||
|
object DisclaimerScreenTestTags {
|
||||||
|
const val SCREEN_CONTAINER = "DISCLAIMER_SCREEN_CONTAINER"
|
||||||
|
const val ACCEPT_BUTTON = "DISCLAIMER_SCREEN_ACCEPT_BUTTON"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.tangem.core.ui.test
|
||||||
|
|
||||||
|
object MainScreenTestTags {
|
||||||
|
const val SCREEN_CONTAINER = "MAIN_SCREEN_CONTAINER"
|
||||||
|
const val MORE_BUTTON = "MAIN_SCREEN_MORE_BUTTON"
|
||||||
|
const val TOP_BAR = "MAIN_SCREEN_TOP_BAR"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
package com.tangem.core.ui.test
|
||||||
|
|
||||||
|
object StoriesScreenTestTags {
|
||||||
|
const val SCREEN_CONTAINER = "STORIES_SCREEN_CONTAINER"
|
||||||
|
const val SCAN_BUTTON = "STORIES_SCREEN_SCAN_BUTTON"
|
||||||
|
const val ORDER_BUTTON = "STORIES_SCREEN_ORDER_BUTTON"
|
||||||
|
const val CREATE_NEW_WALLET_BUTTON = "STORIES_SCREEN_CREATE_NEW_WALLET_BUTTON"
|
||||||
|
const val ADD_EXISTING_WALLET_BUTTON = "STORIES_SCREEN_ADD_EXISTING_WALLET_BUTTON"
|
||||||
|
}
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
package com.tangem.core.ui.test
|
|
||||||
|
|
||||||
object TestTags {
|
|
||||||
const val STORIES_SCREEN = "STORIES_SCREEN_CONTAINER"
|
|
||||||
const val STORIES_SCREEN_SCAN_BUTTON = "STORIES_SCREEN_SCAN_BUTTON"
|
|
||||||
const val STORIES_SCREEN_ORDER_BUTTON = "STORIES_SCREEN_ORDER_BUTTON"
|
|
||||||
const val STORIES_SCREEN_CREATE_NEW_WALLET_BUTTON = "STORIES_SCREEN_CREATE_NEW_WALLET_BUTTON"
|
|
||||||
const val STORIES_SCREEN_ADD_EXISTING_WALLET_BUTTON = "STORIES_SCREEN_ADD_EXISTING_WALLET_BUTTON"
|
|
||||||
|
|
||||||
const val MAIN_SCREEN = "MAIN_SCREEN_CONTAINER"
|
|
||||||
const val MAIN_SCREEN_MORE_BUTTON = "MAIN_SCREEN_MORE_BUTTON"
|
|
||||||
const val MAIN_SCREEN_TOP_BAR = "MAIN_SCREEN_TOP_BAR"
|
|
||||||
|
|
||||||
const val DETAILS_SCREEN = "DETAILS_SCREEN_CONTAINER"
|
|
||||||
const val DETAILS_SCREEN_ITEM = "DETAILS_SCREEN_ITEM"
|
|
||||||
|
|
||||||
const val WALLET_SETTINGS_SCREEN = "WALLET_SETTINGS_SCREEN"
|
|
||||||
const val WALLET_SETTINGS_SCREEN_ITEM = "WALLET_SETTINGS_SCREEN_ITEM"
|
|
||||||
|
|
||||||
const val DISCLAIMER_SCREEN_CONTAINER = "DISCLAIMER_SCREEN_CONTAINER"
|
|
||||||
const val DISCLAIMER_SCREEN_ACCEPT_BUTTON = "DISCLAIMER_SCREEN_ACCEPT_BUTTON"
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.tangem.core.ui.test
|
||||||
|
|
||||||
|
object WalletSettingsScreenTestTags {
|
||||||
|
const val SCREEN_CONTAINER = "WALLET_SETTINGS_SCREEN_CONTAINER"
|
||||||
|
const val SCREEN_ITEM = "WALLET_SETTINGS_SCREEN_ITEM"
|
||||||
|
}
|
||||||
|
|
@ -25,7 +25,7 @@ import com.tangem.core.ui.decompose.ComposableContentComponent
|
||||||
import com.tangem.core.ui.extensions.stringResourceSafe
|
import com.tangem.core.ui.extensions.stringResourceSafe
|
||||||
import com.tangem.core.ui.res.TangemTheme
|
import com.tangem.core.ui.res.TangemTheme
|
||||||
import com.tangem.core.ui.res.TangemThemePreview
|
import com.tangem.core.ui.res.TangemThemePreview
|
||||||
import com.tangem.core.ui.test.TestTags
|
import com.tangem.core.ui.test.DetailsScreenTestTags
|
||||||
import com.tangem.features.details.component.preview.PreviewDetailsComponent
|
import com.tangem.features.details.component.preview.PreviewDetailsComponent
|
||||||
import com.tangem.features.details.entity.DetailsFooterUM
|
import com.tangem.features.details.entity.DetailsFooterUM
|
||||||
import com.tangem.features.details.entity.DetailsItemUM
|
import com.tangem.features.details.entity.DetailsItemUM
|
||||||
|
|
@ -67,7 +67,7 @@ private fun Content(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
modifier = modifier.testTag(TestTags.DETAILS_SCREEN),
|
modifier = modifier.testTag(DetailsScreenTestTags.SCREEN_CONTAINER),
|
||||||
verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing16),
|
verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing16),
|
||||||
contentPadding = PaddingValues(
|
contentPadding = PaddingValues(
|
||||||
top = TangemTheme.dimens.spacing12,
|
top = TangemTheme.dimens.spacing12,
|
||||||
|
|
@ -120,7 +120,7 @@ private fun Block(
|
||||||
) {
|
) {
|
||||||
val itemModifier = Modifier
|
val itemModifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.testTag(TestTags.DETAILS_SCREEN_ITEM)
|
.testTag(DetailsScreenTestTags.SCREEN_ITEM)
|
||||||
|
|
||||||
when (model) {
|
when (model) {
|
||||||
is DetailsItemUM.Basic -> {
|
is DetailsItemUM.Basic -> {
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,7 @@ import com.tangem.core.ui.extensions.stringResourceSafe
|
||||||
import com.tangem.core.ui.res.TangemColorPalette
|
import com.tangem.core.ui.res.TangemColorPalette
|
||||||
import com.tangem.core.ui.res.TangemTheme
|
import com.tangem.core.ui.res.TangemTheme
|
||||||
import com.tangem.core.ui.res.TangemThemePreview
|
import com.tangem.core.ui.res.TangemThemePreview
|
||||||
import com.tangem.core.ui.test.TestTags.DISCLAIMER_SCREEN_ACCEPT_BUTTON
|
import com.tangem.core.ui.test.DisclaimerScreenTestTags
|
||||||
import com.tangem.core.ui.test.TestTags.DISCLAIMER_SCREEN_CONTAINER
|
|
||||||
import com.tangem.core.ui.webview.applySafeSettings
|
import com.tangem.core.ui.webview.applySafeSettings
|
||||||
import com.tangem.features.disclaimer.impl.R
|
import com.tangem.features.disclaimer.impl.R
|
||||||
import com.tangem.features.disclaimer.impl.entity.DisclaimerUM
|
import com.tangem.features.disclaimer.impl.entity.DisclaimerUM
|
||||||
|
|
@ -58,7 +57,7 @@ internal fun DisclaimerScreen(state: DisclaimerUM) {
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.background(backgroundColor)
|
.background(backgroundColor)
|
||||||
.statusBarsPadding()
|
.statusBarsPadding()
|
||||||
.testTag(DISCLAIMER_SCREEN_CONTAINER),
|
.testTag(DisclaimerScreenTestTags.SCREEN_CONTAINER),
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
|
@ -183,7 +182,7 @@ private fun BoxScope.DisclaimerButton(onAccept: (Boolean) -> Unit) {
|
||||||
disabledContentColor = TangemColorPalette.Dark6,
|
disabledContentColor = TangemColorPalette.Dark6,
|
||||||
),
|
),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.testTag(DISCLAIMER_SCREEN_ACCEPT_BUTTON)
|
.testTag(DisclaimerScreenTestTags.ACCEPT_BUTTON)
|
||||||
.align(Alignment.BottomCenter)
|
.align(Alignment.BottomCenter)
|
||||||
.navigationBarsPadding()
|
.navigationBarsPadding()
|
||||||
.padding(
|
.padding(
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ import com.tangem.core.ui.extensions.resolveReference
|
||||||
import com.tangem.core.ui.extensions.stringResourceSafe
|
import com.tangem.core.ui.extensions.stringResourceSafe
|
||||||
import com.tangem.core.ui.res.TangemTheme
|
import com.tangem.core.ui.res.TangemTheme
|
||||||
import com.tangem.core.ui.res.TangemThemePreview
|
import com.tangem.core.ui.res.TangemThemePreview
|
||||||
import com.tangem.core.ui.test.TestTags
|
import com.tangem.core.ui.test.WalletSettingsScreenTestTags
|
||||||
import com.tangem.core.ui.utils.requestPushPermission
|
import com.tangem.core.ui.utils.requestPushPermission
|
||||||
import com.tangem.feature.walletsettings.component.preview.PreviewWalletSettingsComponent
|
import com.tangem.feature.walletsettings.component.preview.PreviewWalletSettingsComponent
|
||||||
import com.tangem.feature.walletsettings.entity.WalletSettingsItemUM
|
import com.tangem.feature.walletsettings.entity.WalletSettingsItemUM
|
||||||
|
|
@ -56,7 +56,7 @@ internal fun WalletSettingsScreen(
|
||||||
Content(
|
Content(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(paddingValues)
|
.padding(paddingValues)
|
||||||
.testTag(TestTags.WALLET_SETTINGS_SCREEN),
|
.testTag(WalletSettingsScreenTestTags.SCREEN_CONTAINER),
|
||||||
state = state,
|
state = state,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -90,7 +90,7 @@ private fun Content(state: WalletSettingsUM, modifier: Modifier = Modifier) {
|
||||||
val itemModifier = Modifier
|
val itemModifier = Modifier
|
||||||
.padding(horizontal = TangemTheme.dimens.spacing16)
|
.padding(horizontal = TangemTheme.dimens.spacing16)
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.testTag(TestTags.WALLET_SETTINGS_SCREEN_ITEM)
|
.testTag(WalletSettingsScreenTestTags.SCREEN_ITEM)
|
||||||
|
|
||||||
when (item) {
|
when (item) {
|
||||||
is WalletSettingsItemUM.WithItems -> ItemsBlock(
|
is WalletSettingsItemUM.WithItems -> ItemsBlock(
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ import com.tangem.core.ui.res.LocalMainBottomSheetColor
|
||||||
import com.tangem.core.ui.res.LocalWindowSize
|
import com.tangem.core.ui.res.LocalWindowSize
|
||||||
import com.tangem.core.ui.res.TangemTheme
|
import com.tangem.core.ui.res.TangemTheme
|
||||||
import com.tangem.core.ui.res.TangemThemePreview
|
import com.tangem.core.ui.res.TangemThemePreview
|
||||||
import com.tangem.core.ui.test.TestTags
|
import com.tangem.core.ui.test.MainScreenTestTags
|
||||||
import com.tangem.core.ui.utils.lineTo
|
import com.tangem.core.ui.utils.lineTo
|
||||||
import com.tangem.core.ui.utils.moveTo
|
import com.tangem.core.ui.utils.moveTo
|
||||||
import com.tangem.core.ui.utils.toPx
|
import com.tangem.core.ui.utils.toPx
|
||||||
|
|
@ -178,7 +178,7 @@ private fun WalletContent(
|
||||||
} ?: PaddingValues(bottom = TangemTheme.dimens.spacing92 + bottomBarHeight)
|
} ?: PaddingValues(bottom = TangemTheme.dimens.spacing92 + bottomBarHeight)
|
||||||
|
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
modifier = Modifier.testTag(TestTags.MAIN_SCREEN),
|
modifier = Modifier.testTag(MainScreenTestTags.SCREEN_CONTAINER),
|
||||||
state = listState,
|
state = listState,
|
||||||
contentPadding = contentPadding,
|
contentPadding = contentPadding,
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,7 @@ import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import com.tangem.core.ui.res.TangemTheme
|
import com.tangem.core.ui.res.TangemTheme
|
||||||
import com.tangem.core.ui.res.TangemThemePreview
|
import com.tangem.core.ui.res.TangemThemePreview
|
||||||
import com.tangem.core.ui.test.TestTags.MAIN_SCREEN_MORE_BUTTON
|
import com.tangem.core.ui.test.MainScreenTestTags
|
||||||
import com.tangem.core.ui.test.TestTags.MAIN_SCREEN_TOP_BAR
|
|
||||||
import com.tangem.feature.wallet.impl.R
|
import com.tangem.feature.wallet.impl.R
|
||||||
import com.tangem.feature.wallet.presentation.common.WalletPreviewData
|
import com.tangem.feature.wallet.presentation.common.WalletPreviewData
|
||||||
import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTopBarConfig
|
import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTopBarConfig
|
||||||
|
|
@ -28,7 +27,7 @@ internal fun WalletTopBar(config: WalletTopBarConfig) {
|
||||||
Icon(painter = painterResource(id = R.drawable.img_tangem_logo_90_24), contentDescription = null)
|
Icon(painter = painterResource(id = R.drawable.img_tangem_logo_90_24), contentDescription = null)
|
||||||
},
|
},
|
||||||
actions = {
|
actions = {
|
||||||
IconButton(onClick = config.onDetailsClick, modifier = Modifier.testTag(MAIN_SCREEN_MORE_BUTTON)) {
|
IconButton(onClick = config.onDetailsClick, modifier = Modifier.testTag(MainScreenTestTags.MORE_BUTTON)) {
|
||||||
Icon(painter = painterResource(id = R.drawable.ic_more_vertical_24), contentDescription = null)
|
Icon(painter = painterResource(id = R.drawable.ic_more_vertical_24), contentDescription = null)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -38,7 +37,7 @@ internal fun WalletTopBar(config: WalletTopBarConfig) {
|
||||||
actionIconContentColor = TangemTheme.colors.icon.primary1,
|
actionIconContentColor = TangemTheme.colors.icon.primary1,
|
||||||
),
|
),
|
||||||
scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(),
|
scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(),
|
||||||
modifier = Modifier.testTag(MAIN_SCREEN_TOP_BAR),
|
modifier = Modifier.testTag(MainScreenTestTags.TOP_BAR),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue