diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinWasmGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinWasmGradlePluginIT.kt index a833638cc59..31102a7e47b 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinWasmGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinWasmGradlePluginIT.kt @@ -7,8 +7,10 @@ package org.jetbrains.kotlin.gradle import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.testbase.* +import org.jetbrains.kotlin.gradle.util.modify import org.junit.jupiter.api.DisplayName import java.nio.file.Files +import kotlin.io.path.writeText import kotlin.test.assertTrue @MppGradlePluginTests @@ -26,6 +28,10 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() { assertTasksExecuted(":wasmWasiNodeTest") } + build(":wasmWasiTest") { + assertTasksUpToDate(":kotlinNodeJsSetup", ":compileKotlinWasmWasi", ":wasmWasiNodeTest") + } + projectPath.resolve("src/wasmWasiTest/kotlin/Test.kt").modify { it.replace( "fun test2() = assertEquals(foo(), 2)", @@ -44,6 +50,46 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() { } } + @DisplayName("Check js target") + @GradleTest + fun jsTarget(gradleVersion: GradleVersion) { + project("new-mpp-wasm-test", gradleVersion) { + buildGradleKts.modify { + transformBuildScriptWithPluginsDsl(it) + .replace("", "nodejs") + .replace("", "") + } + + kotlinSourcesDir("wasmJsTest").resolve("Test.kt").writeText( + """ + package my.pack.name + + import kotlin.test.Test + import kotlin.test.assertEquals + + class WasmTest { + @Test + fun test1() = assertEquals(foo(), 2) + } + """.trimIndent() + ) + + projectPath.resolve(".yarnrc").toFile().writeText( + "--ignore-engines true" + ) + + build("build") { + assertTasksExecuted(":kotlinNodeJsSetup") + assertTasksExecuted(":compileKotlinWasmJs") + assertTasksExecuted(":wasmJsNodeTest") + } + + build(":wasmJsTest") { + assertTasksUpToDate(":kotlinNodeJsSetup", ":compileKotlinWasmJs", ":wasmJsNodeTest") + } + } + } + @DisplayName("Check wasi target run") @GradleTest fun wasiRun(gradleVersion: GradleVersion) { @@ -72,7 +118,7 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() { } } - @DisplayName("Check wasi target") + @DisplayName("Check wasi target with binaryen") @GradleTest fun wasiTargetWithBinaryen(gradleVersion: GradleVersion) { project("new-mpp-wasm-wasi-test", gradleVersion) { @@ -96,7 +142,7 @@ class KotlinWasmGradlePluginIT : KGPBaseTest() { } } - @DisplayName("Check js target") + @DisplayName("Check js target with binaryen") @GradleTest fun jsTargetWithBinaryen(gradleVersion: GradleVersion) { project("new-mpp-wasm-js", gradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt index 0eed1f8b3a1..a9a65f60efe 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt @@ -61,11 +61,7 @@ abstract class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : override fun configureDefaultTestFramework(test: KotlinJsTest) { if (test.testFramework == null) { test.useKarma { - if (compilation.platformType == KotlinPlatformType.wasm) { - useChromeHeadlessWasmGc() - } else { - useChromeHeadless() - } + useChromeHeadless() } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmD8.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmD8.kt index 30342c70028..2c4cfeaac5a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmD8.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmD8.kt @@ -17,7 +17,6 @@ import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJv import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner -import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat import org.jetbrains.kotlin.gradle.utils.getValue import java.nio.file.Path @@ -36,10 +35,6 @@ internal class KotlinWasmD8(private val kotlinJsTest: KotlinJsTest) : KotlinJsTe override val workingDir: Path get() = npmProjectDir.toPath() - init { - kotlinJsTest.doNotTrackStateCompat("Should always re-run for WASM") - } - override fun createTestExecutionSpec( task: KotlinJsTest, forkOptions: ProcessForkOptions, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmNode.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmNode.kt index 33233bfc2dd..1dbbf784d2c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmNode.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinWasmNode.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.writeWasmUnitTestRunner -import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat import org.jetbrains.kotlin.gradle.utils.getValue import java.nio.file.Path @@ -45,10 +44,6 @@ internal class KotlinWasmNode(private val kotlinJsTest: KotlinJsTest) : KotlinJs kotlinJsTest.inputFileProperty.get().asFile.toPath().parent } - init { - kotlinJsTest.doNotTrackStateCompat("Should always re-run for WASM") - } - override fun createTestExecutionSpec( task: KotlinJsTest, forkOptions: ProcessForkOptions, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KarmaConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KarmaConfig.kt index 66b8f76c3e0..cd0e7f410e1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KarmaConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KarmaConfig.kt @@ -37,7 +37,7 @@ data class KarmaClient( val args: MutableList = mutableListOf() ) -class CustomLauncher(var base: String) { +data class CustomLauncher(var base: String) { val flags = mutableListOf() var debug: Boolean? = null } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt index aaa897c6c7f..86a3d08c25a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt @@ -201,6 +201,7 @@ class KotlinKarma( fun useChromeCanaryHeadless() = useChromeLike("ChromeCanaryHeadless") + @Deprecated("Chrome supports wasm GC by default, so you can use useChromeHeadless", replaceWith = ReplaceWith("useChromHeadless")) fun useChromeHeadlessWasmGc() { val chromeCanaryHeadlessWasmGc = "ChromeHeadlessWasmGc"