Updated on 2026-08-14
This commit is contained in:
parent
25eddc3771
commit
4ec75d6dcc
7 changed files with 170 additions and 232 deletions
|
|
@ -0,0 +1,124 @@
|
|||
package com.tangem.scenarios
|
||||
|
||||
import com.tangem.common.BaseTestCase
|
||||
import com.tangem.screens.onSendScreen
|
||||
import com.tangem.screens.onStakingConfirmScreen
|
||||
import com.tangem.screens.onStakingDetailsScreen
|
||||
import io.qameta.allure.kotlin.Allure.step
|
||||
|
||||
fun BaseTestCase.checkStakingDetailsScreen(withStaking: Boolean) {
|
||||
step("Assert 'Title' is displayed") {
|
||||
onStakingDetailsScreen { stakingTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Annual percentage rate' is displayed") {
|
||||
onStakingDetailsScreen { annualPercentageRate.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Available' block is displayed") {
|
||||
onStakingDetailsScreen { availableBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Unbonding Period' block is displayed") {
|
||||
onStakingDetailsScreen { unbondingPeriodBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Reward claiming' block is displayed") {
|
||||
onStakingDetailsScreen { rewardClaimingBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Reward schedule' block is displayed") {
|
||||
onStakingDetailsScreen { rewardScheduleBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'ToS' text is displayed") {
|
||||
onStakingDetailsScreen { toSText.assertIsDisplayed() }
|
||||
}
|
||||
if (withStaking) {
|
||||
step("Assert 'Rewards block' is displayed") {
|
||||
onStakingDetailsScreen { rewardsBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Rewards block' title is displayed") {
|
||||
onStakingDetailsScreen { rewardsBlockTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Rewards block' text is displayed") {
|
||||
onStakingDetailsScreen { rewardsBlockText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Active staking block' is displayed") {
|
||||
onStakingDetailsScreen { activeStakingBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Your stakes' title is displayed") {
|
||||
onStakingDetailsScreen { yourStakesTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Stake more' button is displayed") {
|
||||
onStakingDetailsScreen { stakeMoreButton.assertIsDisplayed() }
|
||||
}
|
||||
} else {
|
||||
step("Assert banner image is displayed") {
|
||||
onStakingDetailsScreen { bannerImage.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert banner text is displayed") {
|
||||
onStakingDetailsScreen { bannerText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Stake' button is displayed") {
|
||||
onStakingDetailsScreen { stakeButton.assertIsDisplayed() }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
fun BaseTestCase.checkStakingScreen(stakingAmount: String) {
|
||||
step("Assert 'Staking' screen is displayed") {
|
||||
onSendScreen { screenContainer.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert top app bar 'Close' button is displayed") {
|
||||
onSendScreen { closeButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Send' screen title is displayed") {
|
||||
onSendScreen { title.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert amount container title is displayed") {
|
||||
onSendScreen { amountContainerTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert input text field is displayed") {
|
||||
onSendScreen { amountInputTextField.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert token name is displayed") {
|
||||
onSendScreen { tokenName.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert primary amount is displayed") {
|
||||
onSendScreen { primaryAmount.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert secondary amount is displayed") {
|
||||
onSendScreen { secondaryAmount.assertIsDisplayed() }
|
||||
}
|
||||
step("Type '$stakingAmount' in input text field") {
|
||||
onSendScreen {
|
||||
amountInputTextField.performClick()
|
||||
amountInputTextField.performTextReplacement(stakingAmount)
|
||||
}
|
||||
}
|
||||
step("Assert input text field has value: '$stakingAmount'") {
|
||||
onSendScreen { amountInputTextField.assertTextContains(value = stakingAmount, substring = true) }
|
||||
}
|
||||
step("Assert 'Max' button is displayed") {
|
||||
onSendScreen { maxButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Next' button is displayed") {
|
||||
onSendScreen { nextButton.assertIsDisplayed() }
|
||||
}
|
||||
}
|
||||
|
||||
fun BaseTestCase.checkStakingConfirmScreen() {
|
||||
step("Assert 'Staking confirm' screen title is displayed") {
|
||||
onStakingConfirmScreen { title.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert primary amount is displayed") {
|
||||
onStakingConfirmScreen { primaryAmount.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert secondary amount is displayed") {
|
||||
onStakingConfirmScreen { secondaryAmount.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Validator' block is displayed") {
|
||||
onStakingConfirmScreen { validatorBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Network Fee' block is displayed") {
|
||||
onStakingConfirmScreen { networkFeeBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Stake' button is displayed") {
|
||||
onStakingConfirmScreen { stakeButton.assertIsDisplayed() }
|
||||
}
|
||||
}
|
||||
|
|
@ -10,7 +10,6 @@ import io.github.kakaocup.compose.node.element.ComposeScreen.Companion.onCompose
|
|||
import io.github.kakaocup.compose.node.element.KNode
|
||||
import io.github.kakaocup.kakao.common.utilities.getResourceString
|
||||
import com.tangem.features.send.v2.impl.R as SendR
|
||||
import androidx.compose.ui.test.hasTestTag as withTestTag
|
||||
|
||||
class SendPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||
ComposeScreen<SendPageObject>(semanticsProvider = semanticsProvider) {
|
||||
|
|
@ -19,6 +18,11 @@ class SendPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
|||
hasTestTag(SendScreenTestTags.SCREEN_CONTAINER)
|
||||
}
|
||||
|
||||
val closeButton: KNode = child {
|
||||
hasTestTag(TopAppBarTestTags.CLOSE_BUTTON)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val title: KNode = child {
|
||||
hasTestTag(TopAppBarTestTags.TITLE)
|
||||
useUnmergedTree = true
|
||||
|
|
@ -29,13 +33,18 @@ class SendPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
|||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val amountContainerText: KNode = child {
|
||||
hasTestTag(SendScreenTestTags.AMOUNT_CONTAINER_TEXT)
|
||||
val amountInputTextField: KNode = child {
|
||||
hasTestTag(SendScreenTestTags.INPUT_TEXT_FIELD)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val amountInputTextField: KNode = child {
|
||||
hasTestTag(SendScreenTestTags.INPUT_TEXT_FIELD)
|
||||
val tokenName: KNode = child {
|
||||
hasTestTag(SendScreenTestTags.TOKEN_NAME)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val primaryAmount: KNode = child {
|
||||
hasTestTag(SendScreenTestTags.PRIMARY_AMOUNT)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
|
|
@ -44,28 +53,11 @@ class SendPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
|||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val currencyButton: KNode = child {
|
||||
hasTestTag(SendScreenTestTags.CURRENCY_BUTTON)
|
||||
hasAnyChild(withTestTag(SendScreenTestTags.CURRENCY_ICON))
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val fiatButton: KNode = child {
|
||||
hasTestTag(SendScreenTestTags.CURRENCY_BUTTON)
|
||||
hasAnyChild(withTestTag(SendScreenTestTags.FIAT_ICON))
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val maxButton: KNode = child {
|
||||
hasTestTag(SendScreenTestTags.MAX_BUTTON)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val previousButton: KNode = child {
|
||||
hasTestTag(SendScreenTestTags.PREVIOUS_BUTTON)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val nextButton: KNode = child {
|
||||
hasTestTag(BaseButtonTestTags.TEXT)
|
||||
hasText(getResourceString(SendR.string.common_next))
|
||||
|
|
|
|||
|
|
@ -7,9 +7,8 @@ import com.tangem.common.extensions.clickWithAssertion
|
|||
import com.tangem.common.extensions.swipeVertical
|
||||
import com.tangem.common.utils.resetWireMockScenarioState
|
||||
import com.tangem.common.utils.setWireMockScenarioState
|
||||
import com.tangem.scenarios.*
|
||||
import com.tangem.screens.*
|
||||
import com.tangem.scenarios.openMainScreen
|
||||
import com.tangem.scenarios.synchronizeAddresses
|
||||
import dagger.hilt.android.testing.HiltAndroidTest
|
||||
import io.qameta.allure.kotlin.AllureId
|
||||
import io.qameta.allure.kotlin.junit4.DisplayName
|
||||
|
|
@ -117,116 +116,20 @@ class StakingTest : BaseTestCase() {
|
|||
step("Click on 'Staking block'") {
|
||||
onTokenDetailsScreen { stakingBlock.clickWithAssertion() }
|
||||
}
|
||||
step("Assert 'Title' is displayed") {
|
||||
onStakingDetailsScreen { stakingTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Annual percentage rate' is displayed") {
|
||||
onStakingDetailsScreen { annualPercentageRate.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Available' block is displayed") {
|
||||
onStakingDetailsScreen { availableBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Unbonding Period' block is displayed") {
|
||||
onStakingDetailsScreen { unbondingPeriodBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Reward claiming' block is displayed") {
|
||||
onStakingDetailsScreen { rewardClaimingBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Reward schedule' block is displayed") {
|
||||
onStakingDetailsScreen { rewardScheduleBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Rewards block' is displayed") {
|
||||
onStakingDetailsScreen { rewardsBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Rewards block' title is displayed") {
|
||||
onStakingDetailsScreen { rewardsBlockTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Rewards block' text is displayed") {
|
||||
onStakingDetailsScreen { rewardsBlockText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Active staking block' is displayed") {
|
||||
onStakingDetailsScreen { activeStakingBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Your stakes' title is displayed") {
|
||||
onStakingDetailsScreen { yourStakesTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'ToS' text is displayed") {
|
||||
onStakingDetailsScreen { toSText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Stake more' button is displayed") {
|
||||
onStakingDetailsScreen { stakeMoreButton.assertIsDisplayed() }
|
||||
step("Check 'Staking details' screen") {
|
||||
checkStakingDetailsScreen(withStaking = true)
|
||||
}
|
||||
step("Click 'Stake more' button") {
|
||||
onStakingDetailsScreen { stakeMoreButton.performClick() }
|
||||
}
|
||||
step("Assert 'Send' screen is displayed") {
|
||||
onSendScreen { screenContainer.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Send' screen title is displayed") {
|
||||
onSendScreen { title.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert amount container title is displayed") {
|
||||
onSendScreen { amountContainerTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert amount container text is displayed") {
|
||||
onSendScreen { amountContainerText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert input text field is displayed") {
|
||||
onSendScreen { amountInputTextField.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert secondary amount is displayed") {
|
||||
onSendScreen { secondaryAmount.assertIsDisplayed() }
|
||||
}
|
||||
step("Type '$stakingAmount' in input text field") {
|
||||
onSendScreen {
|
||||
amountInputTextField.performClick()
|
||||
amountInputTextField.performTextReplacement(stakingAmount)
|
||||
}
|
||||
}
|
||||
step("Assert input text field has value: '$stakingAmount'") {
|
||||
onSendScreen { amountInputTextField.assertTextContains(value = stakingAmount, substring = true) }
|
||||
}
|
||||
step("Assert currency button is displayed") {
|
||||
onSendScreen { currencyButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert fiat button is displayed") {
|
||||
onSendScreen { fiatButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert currency button is displayed") {
|
||||
onSendScreen { currencyButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert fiat button is displayed") {
|
||||
onSendScreen { fiatButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Max' button is displayed") {
|
||||
onSendScreen { maxButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert previous button is displayed") {
|
||||
onSendScreen { previousButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Next' button is displayed") {
|
||||
onSendScreen { nextButton.assertIsDisplayed() }
|
||||
step("Check 'Staking' screen") {
|
||||
checkStakingScreen(stakingAmount)
|
||||
}
|
||||
step("Click on 'Next' button") {
|
||||
onSendScreen { nextButton.performClick() }
|
||||
}
|
||||
step("Assert 'Send details' screen title is displayed") {
|
||||
onStakingConfirmScreen { title.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert primary amount is displayed") {
|
||||
onStakingConfirmScreen { primaryAmount.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert secondary amount is displayed") {
|
||||
onStakingConfirmScreen { secondaryAmount.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Validator' block is displayed") {
|
||||
onStakingConfirmScreen { validatorBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Network Fee' block is displayed") {
|
||||
onStakingConfirmScreen { networkFeeBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Stake' button is displayed") {
|
||||
onStakingConfirmScreen { stakeButton.assertIsDisplayed() }
|
||||
step("Check 'Staking confirm' screen") {
|
||||
checkStakingConfirmScreen()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -284,107 +187,20 @@ class StakingTest : BaseTestCase() {
|
|||
step("Click on 'Stake' button") {
|
||||
onTokenDetailsScreen { stakeButton.clickWithAssertion() }
|
||||
}
|
||||
step("Assert 'Title' is displayed") {
|
||||
onStakingDetailsScreen { stakingTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert banner image is displayed") {
|
||||
onStakingDetailsScreen { bannerImage.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert banner text is displayed") {
|
||||
onStakingDetailsScreen { bannerText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Annual percentage rate' is displayed") {
|
||||
onStakingDetailsScreen { annualPercentageRate.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Available' block is displayed") {
|
||||
onStakingDetailsScreen { availableBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Unbonding Period' block is displayed") {
|
||||
onStakingDetailsScreen { unbondingPeriodBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Reward claiming' block is displayed") {
|
||||
onStakingDetailsScreen { rewardClaimingBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Reward schedule' block is displayed") {
|
||||
onStakingDetailsScreen { rewardScheduleBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'ToS' text is displayed") {
|
||||
onStakingDetailsScreen { toSText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Stake' button is displayed") {
|
||||
onStakingDetailsScreen { stakeButton.assertIsDisplayed() }
|
||||
step("Check 'Staking details' screen") {
|
||||
checkStakingDetailsScreen(withStaking = false)
|
||||
}
|
||||
step("Click 'Stake' button") {
|
||||
onStakingDetailsScreen { stakeButton.performClick() }
|
||||
}
|
||||
step("Assert 'Send' screen is displayed") {
|
||||
onSendScreen { screenContainer.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Send' screen title is displayed") {
|
||||
onSendScreen { title.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert amount container title is displayed") {
|
||||
onSendScreen { amountContainerTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert amount container text is displayed") {
|
||||
onSendScreen { amountContainerText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert input text field is displayed") {
|
||||
onSendScreen { amountInputTextField.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert secondary amount is displayed") {
|
||||
onSendScreen { secondaryAmount.assertIsDisplayed() }
|
||||
}
|
||||
step("Type '$stakingAmount' in input text field") {
|
||||
onSendScreen {
|
||||
amountInputTextField.performClick()
|
||||
amountInputTextField.performTextReplacement(stakingAmount)
|
||||
}
|
||||
}
|
||||
step("Assert input text field has value: '$stakingAmount'") {
|
||||
onSendScreen { amountInputTextField.assertTextContains(value = stakingAmount, substring = true) }
|
||||
}
|
||||
step("Assert currency button is displayed") {
|
||||
onSendScreen { currencyButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert fiat button is displayed") {
|
||||
onSendScreen { fiatButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert currency button is displayed") {
|
||||
onSendScreen { currencyButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert fiat button is displayed") {
|
||||
onSendScreen { fiatButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Max' button is displayed") {
|
||||
onSendScreen { maxButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert previous button is displayed") {
|
||||
onSendScreen { previousButton.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Next' button is displayed") {
|
||||
onSendScreen { nextButton.assertIsDisplayed() }
|
||||
step("Check 'Staking' screen") {
|
||||
checkStakingScreen(stakingAmount)
|
||||
}
|
||||
step("Click on 'Next' button") {
|
||||
onSendScreen { nextButton.performClick() }
|
||||
}
|
||||
step("Assert 'Send details' screen title is displayed") {
|
||||
onStakingConfirmScreen { title.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert primary amount is displayed") {
|
||||
onStakingConfirmScreen { primaryAmount.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert secondary amount is displayed") {
|
||||
onStakingConfirmScreen { secondaryAmount.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Validator' block is displayed") {
|
||||
onStakingConfirmScreen { validatorBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Network Fee' block is displayed") {
|
||||
onStakingConfirmScreen { networkFeeBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Stake' button is displayed") {
|
||||
onStakingConfirmScreen { stakeButton.assertIsDisplayed() }
|
||||
step("Check 'Staking confirm' screen") {
|
||||
checkStakingConfirmScreen()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue