From 7b6fc18a8f438597c190889fd24d327bb25cfea1 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 5 May 2026 18:32:39 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../kotlin/com/tangem/common/BaseTestCase.kt | 7 +++ .../com/tangem/scenarios/BaseScenarios.kt | 4 -- .../com/tangem/scenarios/SwapScenarios.kt | 39 ++++----------- .../tangem/screens/MainScreenPageObject.kt | 6 +-- .../com/tangem/screens/SwapTokenPageObject.kt | 2 +- .../tests/swap/SwapChooseTokenScreenTest.kt | 16 ------- .../com/tangem/tests/swap/SwapStoriesTest.kt | 6 +-- .../tangem/tests/swap/SwapTokenScreenTest.kt | 42 +++++++++------- .../tests/swap/SwapTokenScreenWarningsTest.kt | 48 +++++++++---------- .../tap/data/MockAwareTangemPayStorage.kt | 6 +-- .../stories/inner/StoriesProgressBar.kt | 4 +- .../MockAwareOnboardingRepository.kt | 12 ++--- 12 files changed, 79 insertions(+), 113 deletions(-) diff --git a/app/src/androidTest/kotlin/com/tangem/common/BaseTestCase.kt b/app/src/androidTest/kotlin/com/tangem/common/BaseTestCase.kt index 6acf072e3c..3b22023f6e 100644 --- a/app/src/androidTest/kotlin/com/tangem/common/BaseTestCase.kt +++ b/app/src/androidTest/kotlin/com/tangem/common/BaseTestCase.kt @@ -27,6 +27,7 @@ import com.tangem.datasource.utils.WireMockRedirectInterceptor import com.tangem.domain.promo.PromoRepository import com.tangem.domain.promo.models.PromoId import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase +import com.tangem.features.pushnotifications.api.utils.PUSH_PERMISSION import com.tangem.tap.MainActivity import dagger.hilt.android.testing.HiltAndroidRule import io.qameta.allure.kotlin.Allure @@ -129,6 +130,12 @@ abstract class BaseTestCase : TestCase( value = false ) } + appPreferencesStore.editData { mutablePreferences -> + mutablePreferences.set( + key = PreferencesKeys.getShouldShowInitialPermissionScreen(PUSH_PERMISSION), + value = false + ) + } promoRepository.setNeverToShowWalletPromo(PromoId.Sepa) } apiEnvironmentRule.setup(apiConfigsManager) diff --git a/app/src/androidTest/kotlin/com/tangem/scenarios/BaseScenarios.kt b/app/src/androidTest/kotlin/com/tangem/scenarios/BaseScenarios.kt index 22a818f96c..49e40ea9f1 100644 --- a/app/src/androidTest/kotlin/com/tangem/scenarios/BaseScenarios.kt +++ b/app/src/androidTest/kotlin/com/tangem/scenarios/BaseScenarios.kt @@ -128,10 +128,6 @@ fun BaseTestCase.synchronizeAddresses( onMainScreen { totalBalanceText.assert(!hasText(DASH_SIGN)) } } } - - step("Expand 'Main account' to reveal tokens") { - onMainScreen { mainAccount().performClick() } - } } fun BaseTestCase.openDeviceSettingsScreen() { diff --git a/app/src/androidTest/kotlin/com/tangem/scenarios/SwapScenarios.kt b/app/src/androidTest/kotlin/com/tangem/scenarios/SwapScenarios.kt index 43fdc8264d..748c45459c 100644 --- a/app/src/androidTest/kotlin/com/tangem/scenarios/SwapScenarios.kt +++ b/app/src/androidTest/kotlin/com/tangem/scenarios/SwapScenarios.kt @@ -11,20 +11,17 @@ import io.qameta.allure.kotlin.Allure.step import com.tangem.common.ui.R as CommonUiR private val firstStoryIndex = 0 -private val firstStoryTitle = getResourceString(CommonUiR.string.swap_story_first_title) -private val firstStorySubtitle = getResourceString(CommonUiR.string.swap_story_first_subtitle) +private val firstStoryTitle = getResourceString(CommonUiR.string.swap_story_first_title_v2) +private val firstStorySubtitle = getResourceString(CommonUiR.string.swap_story_first_subtitle_v2) private val secondStoryIndex = 1 -private val secondStoryTitle = getResourceString(CommonUiR.string.swap_story_second_title) -private val secondStorySubtitle = getResourceString(CommonUiR.string.swap_story_second_subtitle) +private val secondStoryTitle = getResourceString(CommonUiR.string.swap_story_second_title_v2) +private val secondStorySubtitle = getResourceString(CommonUiR.string.swap_story_second_subtitle_v2) private val thirdStoryIndex = 2 -private val thirdStoryTitle = getResourceString(CommonUiR.string.swap_story_third_title) -private val thirdStorySubtitle = getResourceString(CommonUiR.string.swap_story_third_subtitle) +private val thirdStoryTitle = getResourceString(CommonUiR.string.swap_story_third_title_v2) +private val thirdStorySubtitle = getResourceString(CommonUiR.string.swap_story_third_subtitle_v2) private val forthStoryIndex = 3 -private val forthStoryTitle = getResourceString(CommonUiR.string.swap_story_forth_title) -private val forthStorySubtitle = getResourceString(CommonUiR.string.swap_story_forth_subtitle) -private val fifthStoryIndex = 4 -private val fifthStoryTitle = getResourceString(CommonUiR.string.swap_story_fifth_title) -private val fifthStorySubtitle = getResourceString(CommonUiR.string.swap_story_fifth_subtitle) +private val forthStoryTitle = getResourceString(CommonUiR.string.swap_story_forth_title_v2) +private val forthStorySubtitle = getResourceString(CommonUiR.string.swap_story_forth_subtitle_v2) fun BaseTestCase.openSwapScreen( from: SwapEntryPoint, @@ -120,26 +117,6 @@ fun BaseTestCase.checkStoriesChanges() { storySubtitle = forthStorySubtitle ) } - step("Click on right side") { - onSwapStoriesScreen { container.performTouchInput { click(centerRight) } } - } - step("Check title and subtitle for story №${fifthStoryIndex + 1}") { - checkStoriesContent( - storyIndex = fifthStoryIndex, - storyTitle = fifthStoryTitle, - storySubtitle = fifthStorySubtitle - ) - } - step("Click on left side") { - onSwapStoriesScreen { container.performTouchInput { click(centerLeft) } } - } - step("Check title and subtitle for story №${forthStoryIndex + 1}") { - checkStoriesContent( - storyIndex = forthStoryIndex, - storyTitle = forthStoryTitle, - storySubtitle = forthStorySubtitle - ) - } step("Click on left side") { onSwapStoriesScreen { container.performTouchInput { click(centerLeft) } } } diff --git a/app/src/androidTest/kotlin/com/tangem/screens/MainScreenPageObject.kt b/app/src/androidTest/kotlin/com/tangem/screens/MainScreenPageObject.kt index abdbaeb2a7..d281e57344 100644 --- a/app/src/androidTest/kotlin/com/tangem/screens/MainScreenPageObject.kt +++ b/app/src/androidTest/kotlin/com/tangem/screens/MainScreenPageObject.kt @@ -244,7 +244,7 @@ class MainScreenPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) fun tokenWithTitleAndAddress(tokenTitle: String): KNode { return lazyList.childWith { hasTestTag(MainScreenTestTags.TOKEN_LIST_ITEM) - hasAnyDescendant(withText(tokenTitle)) + hasText(tokenTitle) useUnmergedTree = true }.child { hasTestTag(TokenElementsTestTags.TOKEN_FIAT_AMOUNT) @@ -256,7 +256,7 @@ class MainScreenPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) fun tokenWithCustomDerivationIcon(tokenTitle: String): KNode { return lazyList.childWith { hasTestTag(MainScreenTestTags.TOKEN_LIST_ITEM) - hasAnyDescendant(withText(tokenTitle)) + hasText(tokenTitle) useUnmergedTree = true }.child { hasTestTag(TokenElementsTestTags.TOKEN_CUSTOM_DERIVATION_ICON) @@ -297,7 +297,7 @@ class MainScreenPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) fun tokenWithTitleAndPosition(tokenTitle: String, index: Int): KNode { return lazyList.childWith { hasTestTag(MainScreenTestTags.TOKEN_LIST_ITEM) - hasAnyDescendant(withText(tokenTitle)) + hasText(tokenTitle) hasLazyListItemPosition(index) useUnmergedTree = true }.child { diff --git a/app/src/androidTest/kotlin/com/tangem/screens/SwapTokenPageObject.kt b/app/src/androidTest/kotlin/com/tangem/screens/SwapTokenPageObject.kt index 73c09bf564..ce2c554f0f 100644 --- a/app/src/androidTest/kotlin/com/tangem/screens/SwapTokenPageObject.kt +++ b/app/src/androidTest/kotlin/com/tangem/screens/SwapTokenPageObject.kt @@ -143,7 +143,7 @@ class SwapTokenPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) val youSwapBlock: KNode = child { hasTestTag(SwapTokenScreenTestTags.SWAP_BLOCK_HEADER) - hasAnyDescendant(withText(getResourceString(R.string.swapping_from_title))) + hasAnyDescendant(withText(getResourceString(R.string.swapping_from_title_v2))) hasAnyDescendant(withTestTag(SwapTokenScreenTestTags.BALANCE)) useUnmergedTree = true } diff --git a/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapChooseTokenScreenTest.kt b/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapChooseTokenScreenTest.kt index def2f12334..426cb52d6e 100644 --- a/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapChooseTokenScreenTest.kt +++ b/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapChooseTokenScreenTest.kt @@ -30,7 +30,6 @@ class SwapChooseTokenScreenTest : BaseTestCase() { @Test fun checkAvailableToSwapTokensListTest() { val tokenTitle = "Polygon" - val inputAmount = "100" val ethereum = "Ethereum" val polExMatic = "POL (ex-MATIC)" val bitcoin = "Bitcoin" @@ -66,13 +65,6 @@ class SwapChooseTokenScreenTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } - step("Input swap amount = '$inputAmount'") { - waitForIdle() - onSwapTokenScreen { - textInput.clickWithAssertion() - textInput.performTextReplacement(inputAmount) - } - } step("Click on 'Select token' icon") { onSwapTokenScreen { swapSelectTokenIcon.performClick() } } @@ -102,7 +94,6 @@ class SwapChooseTokenScreenTest : BaseTestCase() { @Test fun checkSearchOnSwapChooseTokenScreenTest() { val tokenTitle = "Polygon" - val inputAmount = "100" val ethereum = "Ethereum" val polExMatic = "POL (ex-MATIC)" val polExMaticSymbol = "POL" @@ -129,13 +120,6 @@ class SwapChooseTokenScreenTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } - step("Input swap amount = '$inputAmount'") { - waitForIdle() - onSwapTokenScreen { - textInput.clickWithAssertion() - textInput.performTextReplacement(inputAmount) - } - } step("Click on 'Choose token' button") { onSwapTokenScreen { chooseTokenButton.performClick() } } diff --git a/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapStoriesTest.kt b/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapStoriesTest.kt index 9820b6fe9b..13bc7aba06 100644 --- a/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapStoriesTest.kt +++ b/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapStoriesTest.kt @@ -117,7 +117,7 @@ class SwapStoriesTest : BaseTestCase() { @DisplayName("Check unavailable swap stories on 'Main' screen") @Test fun checkUnavailableSwapStoriesOnMainScreen() { - val scenarioName = "stories_first_time_swap" + val scenarioName = "stories_first_time_swap_v2" val scenarioErrorState = "Error" val packageName = getTargetContext().packageName @@ -168,7 +168,7 @@ class SwapStoriesTest : BaseTestCase() { @DisplayName("Check unavailable swap stories on 'Token details' screen") @Test fun checkUnavailableSwapStoriesOnTokenDetailsScreen() { - val scenarioName = "stories_first_time_swap" + val scenarioName = "stories_first_time_swap_v2" val scenarioErrorState = "Error" val packageName = getTargetContext().packageName val tokenName = "Ethereum" @@ -224,7 +224,7 @@ class SwapStoriesTest : BaseTestCase() { @DisplayName("Check unavailable swap stories on 'Markets' token details screen") @Test fun checkUnavailableSwapStoriesOnMarketsTokenDetailsScreen() { - val scenarioName = "stories_first_time_swap" + val scenarioName = "stories_first_time_swap_v2" val scenarioErrorState = "Error" val packageName = getTargetContext().packageName val tokenName = "Ethereum" diff --git a/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapTokenScreenTest.kt b/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapTokenScreenTest.kt index 0336d3895d..94092b1e2f 100644 --- a/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapTokenScreenTest.kt +++ b/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapTokenScreenTest.kt @@ -68,6 +68,9 @@ class SwapTokenScreenTest : BaseTestCase() { } } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -75,9 +78,6 @@ class SwapTokenScreenTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Assert input amount = '$inputAmount'") { onSwapTokenScreen { textInput.assertTextEquals(inputAmount) } } @@ -121,6 +121,7 @@ class SwapTokenScreenTest : BaseTestCase() { @Test fun networkErrorSwapTest() { val tokenTitle = "Polygon" + val receiveTokenName = "Ethereum" setupHooks( additionalAfterSection = { @@ -154,6 +155,9 @@ class SwapTokenScreenTest : BaseTestCase() { step("Assert 'Swap' screen title is displayed") { onSwapTokenScreen { title.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Assert error notification title is displayed") { onSwapTokenScreen { waitForIdle() @@ -212,6 +216,9 @@ class SwapTokenScreenTest : BaseTestCase() { } } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -222,9 +229,6 @@ class SwapTokenScreenTest : BaseTestCase() { step("Assert input amount = '$inputAmount'") { onSwapTokenScreen { textInput.assertTextEquals(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Assert receive amount is displayed") { onSwapTokenScreen { flakySafely(WAIT_UNTIL_TIMEOUT) { @@ -461,8 +465,12 @@ class SwapTokenScreenTest : BaseTestCase() { onSwapTokenScreen { receiveTokenSymbol(receiveTokenSymbol).assertIsDisplayed() } } step("Click on 'Swap tokens on screen' button") { - onSwapTokenScreen { replaceTokensButton.performClick() } - waitForIdle() + flakySafely(WAIT_UNTIL_TIMEOUT_LONG) { + onSwapTokenScreen { + replaceTokensButton.assertIsEnabled() + replaceTokensButton.performClick() + } + } } step("Assert new swap token symbol: '$receiveTokenSymbol' is displayed") { onSwapTokenScreen { swapTokenSymbol(receiveTokenSymbol).assertIsDisplayed() } @@ -557,6 +565,9 @@ class SwapTokenScreenTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -564,9 +575,6 @@ class SwapTokenScreenTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Select '$market' fee type") { flakySafely(WAIT_UNTIL_TIMEOUT_LONG) { selectFeeType(FeeType.Market, selectedFeeAmount = marketFeeAmount) @@ -623,6 +631,9 @@ class SwapTokenScreenTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -630,9 +641,6 @@ class SwapTokenScreenTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Select '$marketFeeType' fee type") { flakySafely(WAIT_UNTIL_TIMEOUT_LONG) { selectFeeType(feeType = FeeType.Market, feeAmount) @@ -703,6 +711,9 @@ class SwapTokenScreenTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -710,9 +721,6 @@ class SwapTokenScreenTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Assert 'Swap' button is enabled") { flakySafely(WAIT_UNTIL_TIMEOUT_LONG) { onSwapTokenScreen { swapButton.assertIsEnabled() } diff --git a/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapTokenScreenWarningsTest.kt b/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapTokenScreenWarningsTest.kt index 3b220ce5d5..51e2368332 100644 --- a/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapTokenScreenWarningsTest.kt +++ b/app/src/androidTest/kotlin/com/tangem/tests/swap/SwapTokenScreenWarningsTest.kt @@ -60,6 +60,9 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenTitle) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -67,9 +70,6 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenTitle) - } step("Assert 'Insufficient funds' error is displayed") { waitForIdle() onSwapTokenScreen { insufficientFundsErrorTitle.assertIsDisplayed() } @@ -125,6 +125,9 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(networkName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -132,9 +135,6 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(networkName) - } step("Check 'Unable to cover '$networkName' fee notification") { flakySafely(WAIT_UNTIL_TIMEOUT_LONG) { chackUnableToCoverFeeNotification(networkName = networkName, currencySymbol = currencySymbol) @@ -204,6 +204,9 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -211,9 +214,6 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Assert fiat amount with warning is displayed") { flakySafely(WAIT_UNTIL_TIMEOUT_LONG) { onSwapTokenScreen { @@ -293,6 +293,9 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -300,9 +303,6 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Assert fiat amount with warning is displayed") { onSwapTokenScreen { receiveFiatAmount.assertTextContains("%", substring = true) } } @@ -381,6 +381,9 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -388,9 +391,6 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Assert 'Invalid amount' warning is not displayed") { flakySafely(WAIT_UNTIL_TIMEOUT_LONG) { checkSwapWarning( @@ -450,6 +450,9 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -457,9 +460,6 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Assert 'Invalid amount' warning is not displayed") { flakySafely(WAIT_UNTIL_TIMEOUT_LONG) { checkSwapWarning( @@ -520,6 +520,9 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -527,9 +530,6 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Assert 'Invalid amount' warning is not displayed") { flakySafely(WAIT_UNTIL_TIMEOUT_LONG) { checkSwapWarning( @@ -589,6 +589,9 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { step("Assert 'You swap' block is displayed") { onSwapTokenScreen { youSwapBlock.assertIsDisplayed() } } + step("Choose receive token") { + chooseReceiveToken(receiveTokenName) + } step("Input swap amount = '$inputAmount'") { waitForIdle() onSwapTokenScreen { @@ -596,9 +599,6 @@ class SwapTokenScreenWarningsTest : BaseTestCase() { textInput.performTextReplacement(inputAmount) } } - step("Choose receive token") { - chooseReceiveToken(receiveTokenName) - } step("Assert 'Invalid amount' warning is displayed") { flakySafely(WAIT_UNTIL_TIMEOUT_LONG) { checkSwapWarning( diff --git a/app/src/mocked/java/com/tangem/tap/data/MockAwareTangemPayStorage.kt b/app/src/mocked/java/com/tangem/tap/data/MockAwareTangemPayStorage.kt index eabe4ccda7..baea0ab1a5 100644 --- a/app/src/mocked/java/com/tangem/tap/data/MockAwareTangemPayStorage.kt +++ b/app/src/mocked/java/com/tangem/tap/data/MockAwareTangemPayStorage.kt @@ -84,10 +84,8 @@ internal class MockAwareTangemPayStorage @Inject constructor( override suspend fun storeCheckCustomerWalletResult(userWalletId: UserWalletId, isPaeraCustomer: Boolean) = real.storeCheckCustomerWalletResult(userWalletId, isPaeraCustomer) - override suspend fun checkCustomerWalletResult(userWalletId: UserWalletId): Boolean? { - if (isMockMode) return true - return real.checkCustomerWalletResult(userWalletId) - } + override suspend fun checkCustomerWalletResult(userWalletId: UserWalletId): Boolean? = + real.checkCustomerWalletResult(userWalletId) override suspend fun storeActiveWithdrawOrderId(userWalletId: UserWalletId, orderId: String) = real.storeActiveWithdrawOrderId(userWalletId, orderId) diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/stories/inner/StoriesProgressBar.kt b/core/ui/src/main/java/com/tangem/core/ui/components/stories/inner/StoriesProgressBar.kt index 00592f5bf2..0ef1136197 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/stories/inner/StoriesProgressBar.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/stories/inner/StoriesProgressBar.kt @@ -96,14 +96,14 @@ fun StoriesProgressBar( .height(2.dp) .weight(1f) .clip(RoundedCornerShape(2.dp)) - .background(TangemColorPalette.White.copy(alpha = .2f)), + .background(TangemColorPalette.White.copy(alpha = .2f)) + .testTag(SwapStoriesScreenTestTags.PROGRESS_BAR_ITEM), ) { Box( modifier = Modifier .clip(RoundedCornerShape(2.dp)) .background(TangemColorPalette.White) .fillMaxHeight() - .testTag(SwapStoriesScreenTestTags.PROGRESS_BAR_ITEM) .let { modifier -> when (index) { currentStep -> modifier.fillMaxWidth(progress.value) diff --git a/data/visa/src/mocked/kotlin/com/tangem/data/pay/repository/MockAwareOnboardingRepository.kt b/data/visa/src/mocked/kotlin/com/tangem/data/pay/repository/MockAwareOnboardingRepository.kt index 9bc64e5bcf..38ccbe554a 100644 --- a/data/visa/src/mocked/kotlin/com/tangem/data/pay/repository/MockAwareOnboardingRepository.kt +++ b/data/visa/src/mocked/kotlin/com/tangem/data/pay/repository/MockAwareOnboardingRepository.kt @@ -71,15 +71,11 @@ internal class MockAwareOnboardingRepository @Inject constructor( override suspend fun hasTangemPayInWallet(userWalletId: UserWalletId): Either = real.hasTangemPayInWallet(userWalletId) - override suspend fun checkCustomerEligibility(): List { - if (isMockMode) return listOf(TangemPayEligibilityType.DETAILS) - return real.checkCustomerEligibility() - } + override suspend fun checkCustomerEligibility(): List = + real.checkCustomerEligibility() - override suspend fun getCustomerEligibility(): List { - if (isMockMode) return listOf(TangemPayEligibilityType.DETAILS) - return real.getCustomerEligibility() - } + override suspend fun getCustomerEligibility(): List = + real.getCustomerEligibility() override fun getSavedCustomerInfo(userWalletId: UserWalletId): CustomerInfo? = real.getSavedCustomerInfo(userWalletId)