Updated on 2026-08-14

This commit is contained in:
Tangem 2026-06-18 12:19:22 +03:00
parent 8db1038e3f
commit ba3e7e4044
3 changed files with 22 additions and 50 deletions

View file

@ -13,7 +13,6 @@ import com.tangem.common.constants.TestConstants.WAIT_UNTIL_TIMEOUT_VERY_LONG
import com.tangem.common.extensions.assertVisibility
import com.tangem.common.extensions.clickWhenEnabled
import com.tangem.common.extensions.clickWithAssertion
import com.tangem.common.extensions.isDisplayedSafely
import com.tangem.core.ui.R as CoreUiR
import com.tangem.core.ui.test.BaseButtonTestTags
import com.tangem.core.ui.test.HotWalletAccessCodeTestTags
@ -169,7 +168,7 @@ fun BaseTestCase.selectFeeType(feeType: FeeType, selectedFeeAmount: String) {
when (feeType) {
FeeType.Market -> {
step("Click on 'Market' item") {
onSwapSelectNetworkFeeBottomSheet { marketSelectorItem.performClick() }
onSwapSelectNetworkFeeBottomSheet { marketSelectorItem.clickWithAssertion() }
}
step("Assert fee amount is equal to 'Market' fee:'$selectedFeeAmount'") {
onSwapTokenScreen { feeAmount.assertTextContains(selectedFeeAmount, substring = true) }
@ -177,7 +176,7 @@ fun BaseTestCase.selectFeeType(feeType: FeeType, selectedFeeAmount: String) {
}
FeeType.Fast -> {
step("Click on 'Fast' item") {
onSwapSelectNetworkFeeBottomSheet { fastSelectorItem.performClick() }
onSwapSelectNetworkFeeBottomSheet { fastSelectorItem.clickWithAssertion() }
}
step("Assert fee amount is equal to 'Fast' fee:'$selectedFeeAmount'") {
onSwapTokenScreen { feeAmount.assertTextContains(selectedFeeAmount, substring = true) }
@ -186,51 +185,6 @@ fun BaseTestCase.selectFeeType(feeType: FeeType, selectedFeeAmount: String) {
}
}
fun BaseTestCase.selectFeeTypeWithGasless(feeType: FeeType, selectedFeeAmount: String) {
step("Click on 'Select fee' icon") {
onSwapTokenScreen { selectFeeIcon.performClick() }
}
when (feeType) {
FeeType.Market -> selectMarketFee(selectedFeeAmount)
FeeType.Fast -> selectFastFee(selectedFeeAmount)
}
}
private fun BaseTestCase.selectMarketFee(selectedFeeAmount: String) {
step("Deselect current fee and select 'Market'") {
onSwapSelectNetworkFeeBottomSheet {
if (fastSelectorItem.isDisplayedSafely()) {
fastSelectorItem.performClick()
}
marketSelectorItem.performClick()
}
}
step("Click on 'Apply' button") {
onSwapSelectNetworkFeeBottomSheet { applyButton.performClick() }
}
step("Assert fee amount is equal to 'Market' fee:'$selectedFeeAmount'") {
onSwapTokenScreen { feeAmount.assertTextContains(selectedFeeAmount, substring = true) }
}
}
private fun BaseTestCase.selectFastFee(selectedFeeAmount: String) {
step("Deselect current fee and select 'Fast'") {
onSwapSelectNetworkFeeBottomSheet {
if (marketSelectorItem.isDisplayedSafely()) {
marketSelectorItem.performClick()
}
fastSelectorItem.performClick()
}
}
step("Click on 'Apply' button") {
onSwapSelectNetworkFeeBottomSheet { applyButton.performClick() }
}
step("Assert fee amount is equal to 'Fast' fee:'$selectedFeeAmount'") {
onSwapTokenScreen { feeAmount.assertTextContains(selectedFeeAmount, substring = true) }
}
}
fun BaseTestCase.chackUnableToCoverFeeNotification(networkName: String, currencySymbol: String) {
step("Assert 'Unable to cover '$networkName' fee notification title is displayed'") {
onSwapTokenScreen { unableToCoverFeeNotificationTitle(networkName).assertIsDisplayed() }

View file

@ -600,18 +600,24 @@ class SwapTokenScreenTest : BaseTestCase() {
val feeAmount = "$"
val scenarioName = "eth_network_balance"
val scenarioState = "LessThanDollar"
val pairsScenarioName = "ethereum_from_pairs"
val pairsScenarioState = "DexProvider"
val networkName = "Ethereum"
val currencySymbol = "ETH"
setupHooks(
additionalAfterSection = {
resetWireMockScenarioState(scenarioName)
resetWireMockScenarioState(pairsScenarioName)
}
).run {
step("Set WireMock scenario: '$scenarioName' to state: '$scenarioState'") {
setWireMockScenarioState(scenarioName = scenarioName, state = scenarioState)
}
step("Set WireMock scenario: '$pairsScenarioName' to state: $pairsScenarioState") {
setWireMockScenarioState(scenarioName = pairsScenarioName, state = pairsScenarioState)
}
step("Open 'Main Screen'") {
openMainScreen()
@ -679,6 +685,8 @@ class SwapTokenScreenTest : BaseTestCase() {
val marketFeeAmount = "$1."
val scenarioName = "eth_fee_history"
val scenarioState = "UnableToCoverFastFee"
val pairsScenarioName = "ethereum_from_pairs"
val pairsScenarioState = "DexProvider"
val networkName = "Ethereum"
val currencySymbol = "ETH"
@ -686,12 +694,16 @@ class SwapTokenScreenTest : BaseTestCase() {
setupHooks(
additionalAfterSection = {
resetWireMockScenarioState(scenarioName)
resetWireMockScenarioState(pairsScenarioName)
}
).run {
step("Set WireMock scenario: '$scenarioName' to state: '$scenarioState'") {
setWireMockScenarioState(scenarioName = scenarioName, state = scenarioState)
}
step("Set WireMock scenario: '$pairsScenarioName' to state: $pairsScenarioState") {
setWireMockScenarioState(scenarioName = pairsScenarioName, state = pairsScenarioState)
}
step("Open 'Main Screen'") {
openMainScreen()
@ -728,7 +740,7 @@ class SwapTokenScreenTest : BaseTestCase() {
}
step("Select '$fastFeeType' fee type") {
flakySafely(WAIT_UNTIL_TIMEOUT_LONG) {
selectFeeTypeWithGasless(feeType = FeeType.Fast, fastFeeAmount)
selectFeeType(feeType = FeeType.Fast, selectedFeeAmount = fastFeeAmount)
}
}
step("Assert fee amount is equal to '$fastFeeType' fee:'$fastFeeAmount'") {
@ -744,7 +756,7 @@ class SwapTokenScreenTest : BaseTestCase() {
}
step("Select '$marketFeeType' fee type") {
flakySafely(WAIT_UNTIL_TIMEOUT_LONG) {
selectFeeTypeWithGasless(feeType = FeeType.Market, marketFeeAmount)
selectFeeType(feeType = FeeType.Market, selectedFeeAmount = marketFeeAmount)
}
}
step("Assert 'Swap' button is enabled") {

View file

@ -86,6 +86,8 @@ class SwapTokenScreenWarningsTest : BaseTestCase() {
val tokensScenarioState = "SolanaUSDC"
val balanceScenarioName = "solana_balance"
val balanceScenarioState = "Empty"
val pairsScenarioName = "solana_from_pairs"
val pairsScenarioState = "DexProvider"
val networkName = "Solana"
val currencySymbol = "SOL"
@ -94,6 +96,7 @@ class SwapTokenScreenWarningsTest : BaseTestCase() {
resetWireMockScenarioState(USER_TOKENS_API_SCENARIO)
resetWireMockScenarioState(QUOTES_API_SCENARIO)
resetWireMockScenarioState(balanceScenarioName)
resetWireMockScenarioState(pairsScenarioName)
}
).run {
@ -106,6 +109,9 @@ class SwapTokenScreenWarningsTest : BaseTestCase() {
step("Set WireMock scenario: '$balanceScenarioName' to state: $balanceScenarioState") {
setWireMockScenarioState(scenarioName = balanceScenarioName, state = balanceScenarioState)
}
step("Set WireMock scenario: '$pairsScenarioName' to state: $pairsScenarioState") {
setWireMockScenarioState(scenarioName = pairsScenarioName, state = pairsScenarioState)
}
step("Open 'Main Screen'") {
openMainScreen()