From 1b42dbec3e1a9d97254f56dee9eca15110a1744d Mon Sep 17 00:00:00 2001 From: Shagen Ogandzhanian Date: Sat, 26 Jun 2021 00:13:53 +0200 Subject: [PATCH] Dispose web drivers after selenium tests --- .../common/BaseIntegrationTests.kt | 30 ++++++++++++------- ...pExtension.kt => IntegrationTestsSetup.kt} | 3 +- 2 files changed, 21 insertions(+), 12 deletions(-) rename web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/{StaticServerSetupExtension.kt => IntegrationTestsSetup.kt} (93%) diff --git a/web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/BaseIntegrationTests.kt b/web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/BaseIntegrationTests.kt index 2be11b0eb6..383514576d 100644 --- a/web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/BaseIntegrationTests.kt +++ b/web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/BaseIntegrationTests.kt @@ -26,7 +26,7 @@ fun WebDriver.waitTextToBe(textId: String = "txt", value: String) { WebDriverWait(this, 1).until(ExpectedConditions.textToBe(By.id(textId), value)) } -object Drivers { +internal object Drivers { val Chrome by lazy { object : ChromeDriver( ChromeOptions().apply { @@ -54,6 +54,22 @@ object Drivers { } } + @OptIn(ExperimentalStdlibApi::class) + val activatedDrivers: Array> = buildList> { + add(arrayOf(Chrome)) + if (System.getProperty("compose.web.tests.integration.withFirefox") == "true") { + add(arrayOf(Firefox)) + } + }.toTypedArray() + + fun dispose() { + activatedDrivers.forEach { + val webDriver = it.first() + println("Closing web driver: ${webDriver}") + webDriver.quit() + } + } + } @Target(AnnotationTarget.FUNCTION) @@ -63,18 +79,10 @@ annotation class ResolveDrivers @DisplayNameGeneration(DisplayNameSimplifier::class) -@ExtendWith(value = [StaticServerSetupExtension::class]) +@ExtendWith(value = [IntegrationTestsSetup::class]) abstract class BaseIntegrationTests() { companion object { - @OptIn(ExperimentalStdlibApi::class) - private val drivers: Array> = buildList> { - add(arrayOf(Drivers.Chrome)) - if (System.getProperty("compose.web.tests.integration.withFirefox") == "true") { - add(arrayOf(Drivers.Firefox)) - } - }.toTypedArray() - @JvmStatic - fun resolveDrivers() = drivers + fun resolveDrivers() = Drivers.activatedDrivers } } diff --git a/web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/StaticServerSetupExtension.kt b/web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/IntegrationTestsSetup.kt similarity index 93% rename from web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/StaticServerSetupExtension.kt rename to web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/IntegrationTestsSetup.kt index b2e595229f..3a41ca5533 100644 --- a/web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/StaticServerSetupExtension.kt +++ b/web/integration-core/src/jvmTest/kotlin/org/jetbrains/compose/web/tests/integration/common/IntegrationTestsSetup.kt @@ -3,7 +3,7 @@ package org.jetbrains.compose.web.tests.integration.common import org.junit.jupiter.api.extension.BeforeAllCallback import org.junit.jupiter.api.extension.ExtensionContext -class StaticServerSetupExtension : +class IntegrationTestsSetup: BeforeAllCallback, ExtensionContext.Store.CloseableResource { @@ -22,5 +22,6 @@ class StaticServerSetupExtension : override fun close() { ServerLauncher.stopServer(this) + Drivers.dispose() } }