diff --git a/src/main/java/ru/samsung/test/core/core/BaseTest.kt b/src/main/java/ru/samsung/test/core/core/BaseTest.kt index 3493045..5860a48 100644 --- a/src/main/java/ru/samsung/test/core/core/BaseTest.kt +++ b/src/main/java/ru/samsung/test/core/core/BaseTest.kt @@ -13,6 +13,8 @@ import com.kaspersky.components.composesupport.config.addComposeSupport import com.kaspersky.kaspresso.idlewaiting.KautomatorWaitForIdleSettings import com.kaspersky.kaspresso.kaspresso.Kaspresso import com.kaspersky.kaspresso.testcases.api.testcase.TestCase +import com.kaspersky.kaspresso.testcases.core.sections.AfterTestSection +import com.kaspersky.kaspresso.testcases.core.testcontext.BaseTestContext import com.kaspersky.kaspresso.testcases.core.testcontext.TestContext import java.util.Locale import org.junit.After @@ -30,6 +32,7 @@ open class BaseTest( ) : TestCase(kaspressoBuilder = Kaspresso.Builder.simple { kautomatorWaitForIdleSettings = KautomatorWaitForIdleSettings.boost() }.apply { + testRunWatcherInterceptors.add(ResultTestRunWatcherInterceptor()) if (isEnabledCompose) addComposeSupport() }) { @get:Rule @@ -84,4 +87,14 @@ open class BaseTest( } ResultTestsData.putResult(instrumentation, uiDevice) } + + fun runWithGrade(grade: Int, testName: String, steps: TestContext.() -> Unit) { + ResultTestsData.testGrade[testName] = grade + run(testName, steps) + } + + fun beforeWithGrade(grade: Int, testName: String, actions: BaseTestContext.() -> Unit): AfterTestSection { + ResultTestsData.testGrade[testName] = grade + return before(testName, actions) + } } diff --git a/src/main/java/ru/samsung/test/core/core/MainTestSectionExt.kt b/src/main/java/ru/samsung/test/core/core/MainTestSectionExt.kt new file mode 100644 index 0000000..20d6f91 --- /dev/null +++ b/src/main/java/ru/samsung/test/core/core/MainTestSectionExt.kt @@ -0,0 +1,9 @@ +package ru.samsung.test.core.core + +import com.kaspersky.kaspresso.testcases.core.sections.MainTestSection +import com.kaspersky.kaspresso.testcases.core.testcontext.TestContext + +fun MainTestSection.runWithInit(grade: Int, steps: TestContext.() -> Unit, testName: String) { + + this.run(steps) +} \ No newline at end of file diff --git a/src/main/java/ru/samsung/test/core/core/ResultTestRunWatcherInterceptor.kt b/src/main/java/ru/samsung/test/core/core/ResultTestRunWatcherInterceptor.kt new file mode 100644 index 0000000..88d3538 --- /dev/null +++ b/src/main/java/ru/samsung/test/core/core/ResultTestRunWatcherInterceptor.kt @@ -0,0 +1,27 @@ +package ru.samsung.test.core.core + +import android.app.Instrumentation +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.UiDevice +import com.kaspersky.kaspresso.interceptors.watcher.testcase.TestRunWatcherInterceptor +import com.kaspersky.kaspresso.testcases.models.info.TestInfo +import ru.samsung.test.core.utils.ResultTestsData + +class ResultTestRunWatcherInterceptor: TestRunWatcherInterceptor { + override fun onTestStarted(testInfo: TestInfo) { + val grade: Int = ResultTestsData.testGrade[testInfo.testName] ?: 0 + ResultTestsData.setupTest(grade) + super.onTestStarted(testInfo) + } + + override fun onMainSectionFinishedSuccess(testInfo: TestInfo) { + val grade: Int = ResultTestsData.testGrade[testInfo.testName] ?: 0 + ResultTestsData.successTest(grade) + super.onMainSectionFinishedSuccess(testInfo) + } + + override fun onTestFinished(testInfo: TestInfo, success: Boolean) { + ResultTestsData.putResult(InstrumentationRegistry.getInstrumentation(), UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())) + super.onTestFinished(testInfo, success) + } +} \ No newline at end of file diff --git a/src/main/java/ru/samsung/test/core/utils/ResultTestsData.kt b/src/main/java/ru/samsung/test/core/utils/ResultTestsData.kt index dcdcf9b..e87c482 100644 --- a/src/main/java/ru/samsung/test/core/utils/ResultTestsData.kt +++ b/src/main/java/ru/samsung/test/core/utils/ResultTestsData.kt @@ -12,6 +12,7 @@ object ResultTestsData { private var totalTests = 0 private var maxGrade = 0 private var passTests = 0 + val testGrade: MutableMap = mutableMapOf() fun setupTest(grade: Int) { totalTests++