diff --git a/convention-plugins/src/main/kotlin/kermit.multiplatform-library.gradle.kts b/convention-plugins/src/main/kotlin/kermit.multiplatform-library.gradle.kts index f947f96b..3b034972 100644 --- a/convention-plugins/src/main/kotlin/kermit.multiplatform-library.gradle.kts +++ b/convention-plugins/src/main/kotlin/kermit.multiplatform-library.gradle.kts @@ -1,3 +1,4 @@ +import kermit.configureTests import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -49,6 +50,8 @@ kotlin { } } } + + configureTests() } project.afterEvaluate { diff --git a/convention-plugins/src/main/kotlin/kermit/tests.kt b/convention-plugins/src/main/kotlin/kermit/tests.kt new file mode 100644 index 00000000..053dbf11 --- /dev/null +++ b/convention-plugins/src/main/kotlin/kermit/tests.kt @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2026 Touchlab + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ + +package kermit + +import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget + +fun KotlinMultiplatformExtension.configureTests() { + configureJSTests() +} + +private fun KotlinMultiplatformExtension.configureJSTests() { + targets.withType().configureEach { + whenBrowserConfigured { + testTask { + useKarma { + useConfigDirectory(project.rootProject.rootDir.resolve("karma.config.d")) + useChromeHeadless() + } + } + } + } +} diff --git a/karma.config.d/config.js b/karma.config.d/config.js new file mode 100644 index 00000000..0e509e89 --- /dev/null +++ b/karma.config.d/config.js @@ -0,0 +1,7 @@ +// Taken from https://github.com/touchlab/kjwt/blob/main/karma.config.d/config.js + +config.client = config.client || {} +config.client.mocha = config.client.mocha || {} +config.client.mocha.timeout = '6000s' +config.browserNoActivityTimeout = 6000000 +config.browserDisconnectTimeout = 6000000