Updated on 2026-08-14
This commit is contained in:
parent
47ba4043a3
commit
b89a6690eb
5 changed files with 46 additions and 18 deletions
|
|
@ -330,6 +330,7 @@ dependencies {
|
|||
androidTestImplementation(deps.test.espresso.intents)
|
||||
androidTestImplementation(deps.test.kaspresso)
|
||||
androidTestImplementation(deps.test.kaspresso.compose)
|
||||
androidTestImplementation(deps.test.kaspresso.allure)
|
||||
androidTestImplementation(deps.test.compose.junit)
|
||||
androidTestImplementation(deps.test.hamcrest)
|
||||
androidTestImplementation(deps.test.hilt)
|
||||
|
|
|
|||
|
|
@ -1,31 +1,37 @@
|
|||
package com.tangem.common
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import androidx.compose.ui.test.junit4.createAndroidComposeRule
|
||||
import androidx.datastore.dataStoreFile
|
||||
import androidx.test.espresso.intent.Intents
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.rule.GrantPermissionRule
|
||||
import com.kaspersky.components.composesupport.config.withComposeSupport
|
||||
import com.kaspersky.components.alluresupport.interceptors.step.ScreenshotStepInterceptor
|
||||
import com.kaspersky.components.alluresupport.withForcedAllureSupport
|
||||
import com.kaspersky.components.composesupport.config.addComposeSupport
|
||||
import com.kaspersky.kaspresso.kaspresso.Kaspresso
|
||||
import com.kaspersky.kaspresso.testcases.api.testcase.TestCase
|
||||
import com.tangem.common.allure.FailedStepScreenshotInterceptor
|
||||
import com.tangem.datasource.local.preferences.AppPreferencesStore
|
||||
import com.tangem.sdk.api.TangemSdkManager
|
||||
import com.tangem.tap.MainActivity
|
||||
import dagger.hilt.android.testing.HiltAndroidRule
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.junit.Rule
|
||||
import org.junit.rules.RuleChain
|
||||
import org.junit.rules.TestRule
|
||||
import org.junit.runner.RunWith
|
||||
import javax.inject.Inject
|
||||
|
||||
abstract class BaseTestCase : TestCase(
|
||||
kaspressoBuilder = Kaspresso.Builder.withComposeSupport()
|
||||
kaspressoBuilder = Kaspresso.Builder.withForcedAllureSupport(
|
||||
shouldRecordVideo = false
|
||||
).apply {
|
||||
stepWatcherInterceptors = stepWatcherInterceptors.filter {
|
||||
it !is ScreenshotStepInterceptor
|
||||
}.toMutableList()
|
||||
stepWatcherInterceptors.addAll(
|
||||
listOf(
|
||||
FailedStepScreenshotInterceptor(screenshots)
|
||||
)
|
||||
)
|
||||
}.addComposeSupport()
|
||||
) {
|
||||
|
||||
@Inject
|
||||
|
|
@ -61,8 +67,4 @@ abstract class BaseTestCase : TestCase(
|
|||
Intents.release()
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val INIT_DELAY = 1000L
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -2,10 +2,10 @@ package com.tangem.common
|
|||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import androidx.test.runner.AndroidJUnitRunner
|
||||
import com.kaspersky.kaspresso.runner.KaspressoRunner
|
||||
import com.tangem.common.di.TangemMockedApplication_Application
|
||||
|
||||
class HiltTestRunner : AndroidJUnitRunner() {
|
||||
class HiltTestRunner : KaspressoRunner() {
|
||||
|
||||
override fun newApplication(
|
||||
cl: ClassLoader?,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
package com.tangem.common.allure
|
||||
|
||||
import com.kaspersky.components.alluresupport.files.attachScreenshotToAllureReport
|
||||
import com.kaspersky.kaspresso.device.screenshots.Screenshots
|
||||
import com.kaspersky.kaspresso.interceptors.watcher.testcase.StepWatcherInterceptor
|
||||
import com.kaspersky.kaspresso.testcases.models.info.StepInfo
|
||||
|
||||
class FailedStepScreenshotInterceptor (
|
||||
private val screenshots: Screenshots
|
||||
) : StepWatcherInterceptor {
|
||||
|
||||
override fun interceptAfterWithSuccess(stepInfo: StepInfo) = Unit
|
||||
|
||||
override fun interceptAfterWithError(stepInfo: StepInfo, error: Throwable) {
|
||||
intercept("${makeTag(stepInfo)}_failure_${error.javaClass.simpleName}")
|
||||
}
|
||||
|
||||
private fun intercept(tag: String) {
|
||||
screenshots.takeAndApply(tag) { attachScreenshotToAllureReport() }
|
||||
}
|
||||
|
||||
private fun makeTag(stepInfo: StepInfo): String = "${stepInfo.testClassName}_step_${stepInfo.ordinal}"
|
||||
}
|
||||
|
|
@ -107,8 +107,9 @@ junitAndroidExt = "1.1.5"
|
|||
mockk = "1.13.4"
|
||||
turbine = "1.2.0"
|
||||
truth = "1.1.3"
|
||||
kaspresso = "1.5.4"
|
||||
kaspresso-compose = "1.5.4"
|
||||
kaspresso = "1.6.0"
|
||||
kaspresso-compose = "1.6.0"
|
||||
kaspresso-allure = "1.6.0"
|
||||
compose-junit = "1.6.2"
|
||||
hamcrest = "2.2"
|
||||
orchestrator = "1.5.1"
|
||||
|
|
@ -209,6 +210,7 @@ test-mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
|
|||
test-turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" }
|
||||
test-kaspresso = { module = "com.kaspersky.android-components:kaspresso", version.ref = "kaspresso" }
|
||||
test-kaspresso-compose = { module = "com.kaspersky.android-components:kaspresso-compose-support", version.ref = "kaspresso-compose" }
|
||||
test-kaspresso-allure = { module = "com.kaspersky.android-components:kaspresso-allure-support", version.ref = "kaspresso-allure" }
|
||||
test-compose-junit = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "compose-junit" }
|
||||
test-hamcrest = { module = "org.hamcrest:hamcrest", version.ref = "hamcrest" }
|
||||
test-hilt = { module = "com.google.dagger:hilt-android-testing", version.ref = "hilt" }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue