Updated on 2026-08-14
This commit is contained in:
parent
5fddb62d4e
commit
bf27373667
8 changed files with 31 additions and 20 deletions
|
|
@ -10,8 +10,8 @@ fun BaseTestCase.checkSingleCurrencyMainScreen(cardTitle: String) {
|
||||||
step("Assert card title equal '$cardTitle'") {
|
step("Assert card title equal '$cardTitle'") {
|
||||||
onMainScreen { walletNameText.assertTextEquals(cardTitle) }
|
onMainScreen { walletNameText.assertTextEquals(cardTitle) }
|
||||||
}
|
}
|
||||||
step("Assert 'Buy' button is displayed") {
|
step("Assert 'Add funds' button is displayed") {
|
||||||
onMainScreen { buyButton.assertIsDisplayed() }
|
onMainScreen { addFundsButton.assertIsDisplayed() }
|
||||||
}
|
}
|
||||||
step("Assert 'Sell' button is displayed") {
|
step("Assert 'Sell' button is displayed") {
|
||||||
onMainScreen { sellButton.assertIsDisplayed() }
|
onMainScreen { sellButton.assertIsDisplayed() }
|
||||||
|
|
@ -33,9 +33,6 @@ fun BaseTestCase.checkMultiCurrencyMainScreen(
|
||||||
step("Assert card title equal '$cardTitle'") {
|
step("Assert card title equal '$cardTitle'") {
|
||||||
onMainScreen { walletNameText.assertTextEquals(cardTitle) }
|
onMainScreen { walletNameText.assertTextEquals(cardTitle) }
|
||||||
}
|
}
|
||||||
step("Assert 'Buy' button is displayed") {
|
|
||||||
onMainScreen { buyButton.assertIsDisplayed() }
|
|
||||||
}
|
|
||||||
step("Assert 'Add funds' button is displayed") {
|
step("Assert 'Add funds' button is displayed") {
|
||||||
onMainScreen { addFundsButton.assertIsDisplayed() }
|
onMainScreen { addFundsButton.assertIsDisplayed() }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import io.qameta.allure.kotlin.Allure.step
|
||||||
|
|
||||||
fun BaseTestCase.openTokenDetailsFromMarketsScreen(blockchainName: String, tokenName: String) {
|
fun BaseTestCase.openTokenDetailsFromMarketsScreen(blockchainName: String, tokenName: String) {
|
||||||
step("Open 'Markets' screen") {
|
step("Open 'Markets' screen") {
|
||||||
onMainScreen { searchThroughMarketPlaceholder.performClick() }
|
onMainScreen { marketsSheetDragHandle.clickWithAssertion() }
|
||||||
waitForIdle()
|
waitForIdle()
|
||||||
}
|
}
|
||||||
step("Click on $blockchainName blockchain") {
|
step("Click on $blockchainName blockchain") {
|
||||||
|
|
@ -54,7 +54,7 @@ fun BaseTestCase.openMarketsScreen() {
|
||||||
synchronizeAddresses()
|
synchronizeAddresses()
|
||||||
}
|
}
|
||||||
step("Open 'Markets' screen") {
|
step("Open 'Markets' screen") {
|
||||||
onMainScreen { searchThroughMarketPlaceholder.performClick() }
|
onMainScreen { marketsSheetDragHandle.clickWithAssertion() }
|
||||||
waitForIdle()
|
waitForIdle()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,29 +2,38 @@ package com.tangem.screens
|
||||||
|
|
||||||
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
||||||
import com.tangem.common.BaseTestCase
|
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.BaseSearchBarTestTags
|
||||||
import com.tangem.core.ui.test.BuyTokenScreenTestTags
|
import com.tangem.core.ui.test.BuyTokenScreenTestTags
|
||||||
import com.tangem.core.ui.test.TokenElementsTestTags
|
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
|
||||||
import io.github.kakaocup.compose.node.element.ComposeScreen.Companion.onComposeScreen
|
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 androidx.compose.ui.test.hasTestTag as withTestTag
|
import androidx.compose.ui.test.hasTestTag as withTestTag
|
||||||
import androidx.compose.ui.test.hasText as withText
|
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) :
|
class ChooseTokenPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||||
ComposeScreen<ChooseTokenPageObject>(semanticsProvider = semanticsProvider) {
|
ComposeScreen<ChooseTokenPageObject>(
|
||||||
|
semanticsProvider = semanticsProvider,
|
||||||
|
viewBuilderAction = { hasTestTag(BaseBottomSheetTestTags.CONTAINER) },
|
||||||
|
) {
|
||||||
|
|
||||||
val topAppBarTitle: KNode = child {
|
val topAppBarTitle: KNode = child {
|
||||||
hasTestTag(TopAppBarTestTags.TITLE)
|
hasText(getResourceString(CoreResR.string.common_add_funds))
|
||||||
useUnmergedTree = true
|
useUnmergedTree = true
|
||||||
}
|
}
|
||||||
|
|
||||||
val searchBar: KNode = child {
|
val searchBar: KNode = child {
|
||||||
hasTestTag(BaseSearchBarTestTags.SEARCH_BAR)
|
hasTestTag(BaseSearchBarTestTags.SEARCH_BAR)
|
||||||
|
useUnmergedTree = true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun tokenWithTitle(tokenTitle: String): KNode = child {
|
fun tokenWithTitle(tokenTitle: String): KNode = child {
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,7 @@
|
||||||
package com.tangem.screens
|
package com.tangem.screens
|
||||||
|
|
||||||
import androidx.compose.ui.semantics.SemanticsProperties
|
import androidx.compose.ui.semantics.SemanticsProperties
|
||||||
import androidx.compose.ui.test.ExperimentalTestApi
|
import androidx.compose.ui.test.*
|
||||||
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 com.tangem.common.BaseTestCase
|
import com.tangem.common.BaseTestCase
|
||||||
import com.tangem.common.extensions.getQuantityString
|
import com.tangem.common.extensions.getQuantityString
|
||||||
import com.tangem.common.extensions.hasLazyListItemPosition
|
import com.tangem.common.extensions.hasLazyListItemPosition
|
||||||
|
|
@ -57,7 +52,8 @@ class MainScreenPageObject(private val semanticsProvider: SemanticsNodeInteracti
|
||||||
|
|
||||||
val addFundsButton: KNode = child {
|
val addFundsButton: KNode = child {
|
||||||
hasTestTag(BaseActionButtonsBlockTestTags.ACTION_BUTTON)
|
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 {
|
val sendButton: KNode = child {
|
||||||
|
|
@ -351,6 +347,11 @@ class MainScreenPageObject(private val semanticsProvider: SemanticsNodeInteracti
|
||||||
useUnmergedTree = true
|
useUnmergedTree = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val marketsSheetDragHandle: KNode = child {
|
||||||
|
hasTestTag(MainScreenTestTags.MARKETS_SHEET_DRAG_HANDLE)
|
||||||
|
useUnmergedTree = true
|
||||||
|
}
|
||||||
|
|
||||||
fun tokenNetworkGroupTitle(tokenNetwork: String): KNode {
|
fun tokenNetworkGroupTitle(tokenNetwork: String): KNode {
|
||||||
collapseHeader()
|
collapseHeader()
|
||||||
return lazyList.child {
|
return lazyList.child {
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ class TotalBalanceUpdateTest : BaseTestCase() {
|
||||||
onMainScreen { totalBalanceText.assertTextContains(TOTAL_BALANCE) }
|
onMainScreen { totalBalanceText.assertTextContains(TOTAL_BALANCE) }
|
||||||
}
|
}
|
||||||
step("Open 'Markets screen'") {
|
step("Open 'Markets screen'") {
|
||||||
onMainScreen { searchThroughMarketPlaceholder.performClick() }
|
onMainScreen { marketsSheetDragHandle.clickWithAssertion() }
|
||||||
waitForIdle()
|
waitForIdle()
|
||||||
}
|
}
|
||||||
step("Click on $tokenTitle token") {
|
step("Click on $tokenTitle token") {
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ class MarketsExchangesTest : BaseTestCase() {
|
||||||
synchronizeAddresses()
|
synchronizeAddresses()
|
||||||
}
|
}
|
||||||
step("Open 'Markets' screen") {
|
step("Open 'Markets' screen") {
|
||||||
onMainScreen { searchThroughMarketPlaceholder.performClick() }
|
onMainScreen { marketsSheetDragHandle.clickWithAssertion() }
|
||||||
waitForIdle()
|
waitForIdle()
|
||||||
}
|
}
|
||||||
step("Click on '$tokenName' token") {
|
step("Click on '$tokenName' token") {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,9 @@ import androidx.compose.material3.Surface
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.platform.testTag
|
||||||
import com.tangem.core.ui.res.TangemTheme
|
import com.tangem.core.ui.res.TangemTheme
|
||||||
|
import com.tangem.core.ui.test.MainScreenTestTags
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun TangemBottomSheetDraggableHeaderLegacy(color: Color = TangemTheme.colors.background.primary) {
|
fun TangemBottomSheetDraggableHeaderLegacy(color: Color = TangemTheme.colors.background.primary) {
|
||||||
|
|
@ -37,6 +39,7 @@ fun TangemBottomSheetDraggableHeaderLegacy(color: Color = TangemTheme.colors.bac
|
||||||
fun TangemBottomSheetDraggableHeader() {
|
fun TangemBottomSheetDraggableHeader() {
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
.testTag(MainScreenTestTags.MARKETS_SHEET_DRAG_HANDLE)
|
||||||
.height(TangemTheme.dimens2.x3)
|
.height(TangemTheme.dimens2.x3)
|
||||||
.padding(vertical = TangemTheme.dimens2.x1)
|
.padding(vertical = TangemTheme.dimens2.x1)
|
||||||
.size(
|
.size(
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ object MainScreenTestTags {
|
||||||
const val CARD_IMAGE = "MAIN_SCREEN_CARD_IMAGE"
|
const val CARD_IMAGE = "MAIN_SCREEN_CARD_IMAGE"
|
||||||
const val DEVICES_COUNT = "MAIN_SCREEN_DEVICES_COUNT"
|
const val DEVICES_COUNT = "MAIN_SCREEN_DEVICES_COUNT"
|
||||||
const val SYNC_PROGRESS_TEXT = "MAIN_SCREEN_SYNC_PROGRESS_TEXT"
|
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 WALLET_BALANCE = "MAIN_SCREEN_WALLET_BALANCE"
|
||||||
const val TOTAL_BALANCE_MENU_ITEM = "MAIN_SCREEN_TOTAL_BALANCE_MENU_ITEM"
|
const val TOTAL_BALANCE_MENU_ITEM = "MAIN_SCREEN_TOTAL_BALANCE_MENU_ITEM"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue