[JS][Gradle] Add an option to configure nodeJs arguments
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-custom-node-module/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-custom-node-module/build.gradle
index f3131da..c96daaf 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-custom-node-module/build.gradle
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-custom-node-module/build.gradle
@@ -20,6 +20,7 @@
             testTask {
                 environment("hello", "hello")
                 environment("NODE_PATH", projectDir.absolutePath)
+                nodeJsArgs.add("--title=KGP_CUSTOM_NODEJS_TITLE")
             }
         }
     }
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-custom-node-module/src/test/kotlin/Tests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-custom-node-module/src/test/kotlin/Tests.kt
index a4a1f53..fd3be4f 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-custom-node-module/src/test/kotlin/Tests.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-custom-node-module/src/test/kotlin/Tests.kt
@@ -16,6 +16,11 @@
     fun test2() {
         assertEquals("foo", foo.foo())
     }
+
+    @Test
+    fun test3() {
+        assertEquals(process.title, "KGP_CUSTOM_NODEJS_TITLE")
+    }
 }
 
 external val process: dynamic
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt
index 4c7601c..a006f7c 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt
@@ -106,6 +106,10 @@
         }
     }
 
+    @Input
+    val nodeJsArgs: MutableList<String> =
+        mutableListOf()
+
     override val nodeModulesRequired: Boolean
         @Internal get() = testFramework!!.nodeModulesRequired
 
@@ -174,8 +178,6 @@
             forkOptions.environment(key, value)
         }
 
-        val nodeJsArgs = mutableListOf<String>()
-
         return testFramework!!.createTestExecutionSpec(
             task = this,
             forkOptions = forkOptions,
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 237eb16..70bdbde 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
@@ -50,6 +50,7 @@
 
         val args = mutableListOf<String>()
         with(args) {
+            addAll(nodeJsArgs)
             addWasmExperimentalArguments()
             add(testRunnerFile.absolutePath)
             addAll(cliArgs.toList())
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 abb20c1..bc26b00 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
@@ -444,7 +444,7 @@
 
         val karmaConfigAbsolutePath = karmaConfJs.absolutePath
         val args = if (debug) {
-            listOf(
+            nodeJsArgs + listOf(
                 npmProject.require("kotlin-test-js-runner/karma-debug-runner.js"),
                 karmaConfigAbsolutePath
             )
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt
index de35305..84ae86d 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt
@@ -70,7 +70,7 @@
 
         val file = task.inputFileProperty.get().asFile.toString()
 
-        val args = mutableListOf(
+        val args = nodeJsArgs + mutableListOf(
             "--require",
             npmProject.require("source-map-support/register.js")
         ).apply {
@@ -95,7 +95,7 @@
         val dryRunArgs = if (platformType == KotlinPlatformType.wasm)
             null
         else {
-            mutableListOf(
+            nodeJsArgs + mutableListOf(
                 "--require",
                 npmProject.require("source-map-support/register.js")
             ).apply {