Updated on 2026-08-14
This commit is contained in:
parent
47ba4043a3
commit
b89a6690eb
5 changed files with 46 additions and 18 deletions
|
|
@ -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}"
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue