diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt index 8d63c5a1bc1..16a08a75d87 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt @@ -127,8 +127,6 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF } private fun useWebpack() { - createAdapterJs() - requiredDependencies.add(versions.karmaWebpack) requiredDependencies.add(versions.webpack) @@ -228,25 +226,26 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF } } - private fun createAdapterJs() { - configurators.add { - val npmProject = compilation.npmProject - val file = it.nodeModulesToLoad - .map { npmProject.require(it) } - .single() + private fun createAdapterJs( + file: String, + debug: Boolean + ): File { + val npmProject = compilation.npmProject - val adapterJs = npmProject.dir.resolve("adapter-browser.js") - adapterJs.printWriter().use { writer -> - val karmaRunner = npmProject.require("kotlin-test-js-runner/kotlin-test-karma-runner.js") - // It is necessary for debugger attaching (--inspect-brk analogue) + val adapterJs = npmProject.dir.resolve("adapter-browser.js") + adapterJs.printWriter().use { writer -> + val karmaRunner = npmProject.require("kotlin-test-js-runner/kotlin-test-karma-runner.js") + // It is necessary for debugger attaching (--inspect-brk analogue) + if (debug) { writer.println("debugger;") - writer.println("require(${karmaRunner.jsQuoted()})") - - writer.println("module.exports = require(${file.jsQuoted()})") } - config.files.add(adapterJs.canonicalPath) + writer.println("require(${karmaRunner.jsQuoted()})") + + writer.println("module.exports = require(${file.jsQuoted()})") } + + return adapterJs } override fun createTestExecutionSpec( @@ -255,6 +254,16 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF nodeJsArgs: MutableList, debug: Boolean ): TCServiceMessagesTestExecutionSpec { + val npmProject = compilation.npmProject + + val file = task.nodeModulesToLoad + .map { npmProject.require(it) } + .single() + + val adapterJs = createAdapterJs(file, debug) + + config.files.add(adapterJs.canonicalPath) + if (debug) { config.singleRun = false @@ -287,8 +296,6 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF ignoreOutOfRootNodes = true ) - val npmProject = compilation.npmProject - config.basePath = npmProject.nodeModulesDir.absolutePath configurators.forEach {