Updated on 2026-08-14

This commit is contained in:
Tangem 2025-07-02 12:26:25 +03:00
parent 47ba4043a3
commit b89a6690eb
5 changed files with 46 additions and 18 deletions

View file

@ -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
}
}

View file

@ -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?,

View file

@ -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}"
}