From bf27373667f6345f41de5e54361c83def6bd875f Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 10 Jun 2026 20:46:41 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../scenarios/CheckMainScreenScenarios.kt | 7 ++----- .../com/tangem/scenarios/MarketsScenarios.kt | 4 ++-- .../com/tangem/screens/ChooseTokenPageObject.kt | 17 +++++++++++++---- .../com/tangem/screens/MainScreenPageObject.kt | 15 ++++++++------- .../tests/balance/TotalBalanceUpdateTest.kt | 2 +- .../tests/markets/MarketsExchangesTest.kt | 2 +- .../TangemBottomSheetDraggableHeaderLegacy.kt | 3 +++ .../tangem/core/ui/test/MainScreenTestTags.kt | 1 + 8 files changed, 31 insertions(+), 20 deletions(-) diff --git a/app/src/androidTest/kotlin/com/tangem/scenarios/CheckMainScreenScenarios.kt b/app/src/androidTest/kotlin/com/tangem/scenarios/CheckMainScreenScenarios.kt index cdc6c984c2..665515e2cb 100644 --- a/app/src/androidTest/kotlin/com/tangem/scenarios/CheckMainScreenScenarios.kt +++ b/app/src/androidTest/kotlin/com/tangem/scenarios/CheckMainScreenScenarios.kt @@ -10,8 +10,8 @@ fun BaseTestCase.checkSingleCurrencyMainScreen(cardTitle: String) { step("Assert card title equal '$cardTitle'") { onMainScreen { walletNameText.assertTextEquals(cardTitle) } } - step("Assert 'Buy' button is displayed") { - onMainScreen { buyButton.assertIsDisplayed() } + step("Assert 'Add funds' button is displayed") { + onMainScreen { addFundsButton.assertIsDisplayed() } } step("Assert 'Sell' button is displayed") { onMainScreen { sellButton.assertIsDisplayed() } @@ -33,9 +33,6 @@ fun BaseTestCase.checkMultiCurrencyMainScreen( step("Assert card title equal '$cardTitle'") { onMainScreen { walletNameText.assertTextEquals(cardTitle) } } - step("Assert 'Buy' button is displayed") { - onMainScreen { buyButton.assertIsDisplayed() } - } step("Assert 'Add funds' button is displayed") { onMainScreen { addFundsButton.assertIsDisplayed() } } diff --git a/app/src/androidTest/kotlin/com/tangem/scenarios/MarketsScenarios.kt b/app/src/androidTest/kotlin/com/tangem/scenarios/MarketsScenarios.kt index ac596e4ede..df5b36514e 100644 --- a/app/src/androidTest/kotlin/com/tangem/scenarios/MarketsScenarios.kt +++ b/app/src/androidTest/kotlin/com/tangem/scenarios/MarketsScenarios.kt @@ -11,7 +11,7 @@ import io.qameta.allure.kotlin.Allure.step fun BaseTestCase.openTokenDetailsFromMarketsScreen(blockchainName: String, tokenName: String) { step("Open 'Markets' screen") { - onMainScreen { searchThroughMarketPlaceholder.performClick() } + onMainScreen { marketsSheetDragHandle.clickWithAssertion() } waitForIdle() } step("Click on $blockchainName blockchain") { @@ -54,7 +54,7 @@ fun BaseTestCase.openMarketsScreen() { synchronizeAddresses() } step("Open 'Markets' screen") { - onMainScreen { searchThroughMarketPlaceholder.performClick() } + onMainScreen { marketsSheetDragHandle.clickWithAssertion() } waitForIdle() } } diff --git a/app/src/androidTest/kotlin/com/tangem/screens/ChooseTokenPageObject.kt b/app/src/androidTest/kotlin/com/tangem/screens/ChooseTokenPageObject.kt index 28ebe26a4a..c2dd74ddd5 100644 --- a/app/src/androidTest/kotlin/com/tangem/screens/ChooseTokenPageObject.kt +++ b/app/src/androidTest/kotlin/com/tangem/screens/ChooseTokenPageObject.kt @@ -2,29 +2,38 @@ package com.tangem.screens import androidx.compose.ui.test.SemanticsNodeInteractionsProvider import com.tangem.common.BaseTestCase +import com.tangem.core.ui.test.BaseBottomSheetTestTags import com.tangem.core.ui.test.BaseSearchBarTestTags import com.tangem.core.ui.test.BuyTokenScreenTestTags import com.tangem.core.ui.test.TokenElementsTestTags -import com.tangem.core.ui.test.TopAppBarTestTags 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.kakao.common.utilities.getResourceString import androidx.compose.ui.test.hasTestTag as withTestTag import androidx.compose.ui.test.hasText as withText +import com.tangem.core.res.R as CoreResR /** - * "You receive" token chooser opened from the main-screen "Add funds" button. + * Token chooser bottom sheet opened from the main-screen "Add funds" button. + * + * After the onramp redesign this is a [BaseBottomSheetTestTags.CONTAINER] bottom sheet + * (centered title + close icon), not a full screen with a top app bar. */ class ChooseTokenPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) : - ComposeScreen(semanticsProvider = semanticsProvider) { + ComposeScreen( + semanticsProvider = semanticsProvider, + viewBuilderAction = { hasTestTag(BaseBottomSheetTestTags.CONTAINER) }, + ) { val topAppBarTitle: KNode = child { - hasTestTag(TopAppBarTestTags.TITLE) + hasText(getResourceString(CoreResR.string.common_add_funds)) useUnmergedTree = true } val searchBar: KNode = child { hasTestTag(BaseSearchBarTestTags.SEARCH_BAR) + useUnmergedTree = true } fun tokenWithTitle(tokenTitle: String): KNode = child { diff --git a/app/src/androidTest/kotlin/com/tangem/screens/MainScreenPageObject.kt b/app/src/androidTest/kotlin/com/tangem/screens/MainScreenPageObject.kt index 5868e2121f..4faf866ff0 100644 --- a/app/src/androidTest/kotlin/com/tangem/screens/MainScreenPageObject.kt +++ b/app/src/androidTest/kotlin/com/tangem/screens/MainScreenPageObject.kt @@ -1,12 +1,7 @@ package com.tangem.screens import androidx.compose.ui.semantics.SemanticsProperties -import androidx.compose.ui.test.ExperimentalTestApi -import androidx.compose.ui.test.SemanticsMatcher -import androidx.compose.ui.test.SemanticsNodeInteractionsProvider -import androidx.compose.ui.test.assertCountEquals -import androidx.compose.ui.test.hasAnyAncestor -import androidx.compose.ui.test.swipeUp +import androidx.compose.ui.test.* import com.tangem.common.BaseTestCase import com.tangem.common.extensions.getQuantityString import com.tangem.common.extensions.hasLazyListItemPosition @@ -57,7 +52,8 @@ class MainScreenPageObject(private val semanticsProvider: SemanticsNodeInteracti val addFundsButton: KNode = child { hasTestTag(BaseActionButtonsBlockTestTags.ACTION_BUTTON) - hasText(getResourceString(R.string.common_add_funds)) + hasAnyDescendant(withText(getResourceString(R.string.common_add_funds))) + useUnmergedTree = true } val sendButton: KNode = child { @@ -351,6 +347,11 @@ class MainScreenPageObject(private val semanticsProvider: SemanticsNodeInteracti useUnmergedTree = true } + val marketsSheetDragHandle: KNode = child { + hasTestTag(MainScreenTestTags.MARKETS_SHEET_DRAG_HANDLE) + useUnmergedTree = true + } + fun tokenNetworkGroupTitle(tokenNetwork: String): KNode { collapseHeader() return lazyList.child { diff --git a/app/src/androidTest/kotlin/com/tangem/tests/balance/TotalBalanceUpdateTest.kt b/app/src/androidTest/kotlin/com/tangem/tests/balance/TotalBalanceUpdateTest.kt index 61318f6706..efdc72799c 100644 --- a/app/src/androidTest/kotlin/com/tangem/tests/balance/TotalBalanceUpdateTest.kt +++ b/app/src/androidTest/kotlin/com/tangem/tests/balance/TotalBalanceUpdateTest.kt @@ -74,7 +74,7 @@ class TotalBalanceUpdateTest : BaseTestCase() { onMainScreen { totalBalanceText.assertTextContains(TOTAL_BALANCE) } } step("Open 'Markets screen'") { - onMainScreen { searchThroughMarketPlaceholder.performClick() } + onMainScreen { marketsSheetDragHandle.clickWithAssertion() } waitForIdle() } step("Click on $tokenTitle token") { diff --git a/app/src/androidTest/kotlin/com/tangem/tests/markets/MarketsExchangesTest.kt b/app/src/androidTest/kotlin/com/tangem/tests/markets/MarketsExchangesTest.kt index cef6601e65..4cc58d517c 100644 --- a/app/src/androidTest/kotlin/com/tangem/tests/markets/MarketsExchangesTest.kt +++ b/app/src/androidTest/kotlin/com/tangem/tests/markets/MarketsExchangesTest.kt @@ -55,7 +55,7 @@ class MarketsExchangesTest : BaseTestCase() { synchronizeAddresses() } step("Open 'Markets' screen") { - onMainScreen { searchThroughMarketPlaceholder.performClick() } + onMainScreen { marketsSheetDragHandle.clickWithAssertion() } waitForIdle() } step("Click on '$tokenName' token") { diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/sheet/TangemBottomSheetDraggableHeaderLegacy.kt b/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/sheet/TangemBottomSheetDraggableHeaderLegacy.kt index 6a03c12c26..18b34425eb 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/sheet/TangemBottomSheetDraggableHeaderLegacy.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/sheet/TangemBottomSheetDraggableHeaderLegacy.kt @@ -10,7 +10,9 @@ import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.testTag import com.tangem.core.ui.res.TangemTheme +import com.tangem.core.ui.test.MainScreenTestTags @Composable fun TangemBottomSheetDraggableHeaderLegacy(color: Color = TangemTheme.colors.background.primary) { @@ -37,6 +39,7 @@ fun TangemBottomSheetDraggableHeaderLegacy(color: Color = TangemTheme.colors.bac fun TangemBottomSheetDraggableHeader() { Box( modifier = Modifier + .testTag(MainScreenTestTags.MARKETS_SHEET_DRAG_HANDLE) .height(TangemTheme.dimens2.x3) .padding(vertical = TangemTheme.dimens2.x1) .size( diff --git a/core/ui/src/main/java/com/tangem/core/ui/test/MainScreenTestTags.kt b/core/ui/src/main/java/com/tangem/core/ui/test/MainScreenTestTags.kt index bd535e8260..2d9787a059 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/test/MainScreenTestTags.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/test/MainScreenTestTags.kt @@ -15,6 +15,7 @@ object MainScreenTestTags { const val CARD_IMAGE = "MAIN_SCREEN_CARD_IMAGE" const val DEVICES_COUNT = "MAIN_SCREEN_DEVICES_COUNT" const val SYNC_PROGRESS_TEXT = "MAIN_SCREEN_SYNC_PROGRESS_TEXT" + const val MARKETS_SHEET_DRAG_HANDLE = "MAIN_SCREEN_MARKETS_SHEET_DRAG_HANDLE" const val WALLET_BALANCE = "MAIN_SCREEN_WALLET_BALANCE" const val TOTAL_BALANCE_MENU_ITEM = "MAIN_SCREEN_TOTAL_BALANCE_MENU_ITEM"