Updated on 2026-08-14
This commit is contained in:
parent
6178034e71
commit
a30eeb4f5d
7 changed files with 161 additions and 8 deletions
|
|
@ -80,9 +80,12 @@ abstract class BaseTestCase : TestCase(
|
|||
) = before {
|
||||
hiltRule.inject()
|
||||
runBlocking {
|
||||
appPreferencesStore.editData { mutablePreferences -> mutablePreferences.set(
|
||||
key = PreferencesKeys.NOTIFICATIONS_USER_ALLOW_SEND_ADDRESSES_KEY, value = false
|
||||
) }
|
||||
appPreferencesStore.editData { mutablePreferences ->
|
||||
mutablePreferences.set(
|
||||
key = PreferencesKeys.NOTIFICATIONS_USER_ALLOW_SEND_ADDRESSES_KEY,
|
||||
value = false
|
||||
)
|
||||
}
|
||||
}
|
||||
apiEnvironmentRule.setup(apiConfigsManager)
|
||||
ActivityScenario.launch(MainActivity::class.java)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,84 @@
|
|||
package com.tangem.screens
|
||||
|
||||
import androidx.compose.ui.test.SemanticsNodeInteractionsProvider
|
||||
import com.tangem.common.BaseTestCase
|
||||
import com.tangem.core.ui.test.BaseButtonTestTags
|
||||
import com.tangem.core.ui.test.ReferralProgramScreenTestTags
|
||||
import com.tangem.core.ui.test.TopAppBarTestTags
|
||||
import com.tangem.wallet.R
|
||||
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 com.tangem.feature.referral.presentation.R as ReferralPresentationR
|
||||
import androidx.compose.ui.test.hasText as withText
|
||||
|
||||
class ReferralProgramPageObject(semanticsProvider: SemanticsNodeInteractionsProvider) :
|
||||
ComposeScreen<ReferralProgramPageObject>(semanticsProvider = semanticsProvider) {
|
||||
|
||||
val title: KNode = child {
|
||||
hasTestTag(TopAppBarTestTags.TITLE)
|
||||
hasText(getResourceString(R.string.details_referral_title))
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val referTitle: KNode = child {
|
||||
hasText(getResourceString(R.string.referral_title))
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val image: KNode = child {
|
||||
hasTestTag(ReferralProgramScreenTestTags.IMAGE)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val infoForYouText: KNode = child {
|
||||
hasTestTag(ReferralProgramScreenTestTags.INFO_FOR_YOU_TEXT)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val infoForYouBlock: KNode = child {
|
||||
hasTestTag(ReferralProgramScreenTestTags.CONDITION_BLOCK)
|
||||
hasAnyDescendant(
|
||||
withText(
|
||||
getResourceString(ReferralPresentationR.string.referral_point_currencies_title),
|
||||
substring = true
|
||||
)
|
||||
)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val infoForYourFriendText: KNode = child {
|
||||
hasTestTag(ReferralProgramScreenTestTags.INFO_FOR_YOUR_FRIEND_TEXT)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val infoForYourFriendBlock: KNode = child {
|
||||
hasTestTag(ReferralProgramScreenTestTags.CONDITION_BLOCK)
|
||||
hasAnyDescendant(
|
||||
withText(
|
||||
getResourceString(ReferralPresentationR.string.referral_point_discount_title),
|
||||
substring = true
|
||||
)
|
||||
)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val agreementText: KNode = child {
|
||||
hasText(getResourceString(
|
||||
ReferralPresentationR.string.referral_tos_not_enroled_prefix) + " " +
|
||||
getResourceString(ReferralPresentationR.string.common_terms_and_conditions ) + " " +
|
||||
getResourceString(ReferralPresentationR.string.referral_tos_suffix),
|
||||
substring = true
|
||||
)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
|
||||
val participateButton: KNode = child {
|
||||
hasTestTag(BaseButtonTestTags.TEXT)
|
||||
useUnmergedTree = true
|
||||
}
|
||||
}
|
||||
|
||||
internal fun BaseTestCase.onReferralProgramScreen(function: ReferralProgramPageObject.() -> Unit) =
|
||||
onComposeScreen(composeTestRule, function)
|
||||
|
|
@ -5,9 +5,12 @@ import com.tangem.common.extensions.clickWithAssertion
|
|||
import com.tangem.domain.models.scan.ProductType
|
||||
import com.tangem.scenarios.OpenMainScreenScenario
|
||||
import com.tangem.screens.onDetailsScreen
|
||||
import com.tangem.screens.onReferralProgramScreen
|
||||
import com.tangem.screens.onTopBar
|
||||
import com.tangem.screens.onWalletSettingsScreen
|
||||
import dagger.hilt.android.testing.HiltAndroidTest
|
||||
import io.qameta.allure.kotlin.AllureId
|
||||
import io.qameta.allure.kotlin.junit4.DisplayName
|
||||
import org.junit.Test
|
||||
|
||||
@HiltAndroidTest
|
||||
|
|
@ -153,4 +156,48 @@ class DetailsTest : BaseTestCase() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@AllureId("3647")
|
||||
@DisplayName("Referral program: validate screen")
|
||||
@Test
|
||||
fun validateReferralProgramScreenTest() =
|
||||
setupHooks().run {
|
||||
scenario(OpenMainScreenScenario(composeTestRule))
|
||||
step("Open wallet details") {
|
||||
onTopBar { moreButton.clickWithAssertion() }
|
||||
}
|
||||
step("Open 'Wallet settings' screen") {
|
||||
onDetailsScreen { walletNameButton.clickWithAssertion() }
|
||||
}
|
||||
step("Click on 'Referral program' button ") {
|
||||
onWalletSettingsScreen { referralProgramButton.clickWithAssertion() }
|
||||
}
|
||||
step("Assert 'Referral program' screen title is displayed") {
|
||||
onReferralProgramScreen { title.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Referral program' screen image is displayed") {
|
||||
onReferralProgramScreen { image.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Referral program' screen refer title is displayed") {
|
||||
onReferralProgramScreen { referTitle.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert info for you title is displayed") {
|
||||
onReferralProgramScreen { infoForYouText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert info for you text is displayed") {
|
||||
onReferralProgramScreen { infoForYouBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert info for your friend title is displayed") {
|
||||
onReferralProgramScreen { infoForYourFriendText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert info for your friend text is displayed") {
|
||||
onReferralProgramScreen { infoForYourFriendBlock.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert agreement text is displayed") {
|
||||
onReferralProgramScreen { agreementText.assertIsDisplayed() }
|
||||
}
|
||||
step("Assert 'Participate' button is displayed") {
|
||||
onReferralProgramScreen { participateButton.assertIsDisplayed() }
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue