JS tests: split fir, ir, and legacy tests

Also split write FIR output to separate folders
diff --git a/js/js.tests/build.gradle.kts b/js/js.tests/build.gradle.kts
index 16bc974..fecf8e0 100644
--- a/js/js.tests/build.gradle.kts
+++ b/js/js.tests/build.gradle.kts
@@ -273,7 +273,7 @@
     }
 }
 
-fun Test.setUpJsBoxTests(jsEnabled: Boolean, jsIrEnabled: Boolean) {
+fun Test.setUpJsBoxTests(jsEnabled: Boolean, jsIrEnabled: Boolean, firEnabled: Boolean) {
     setupV8()
     if (jsIrEnabled)
         setupNodeJs()
@@ -307,8 +307,20 @@
 
     exclude("org/jetbrains/kotlin/js/testOld/wasm/semantics/*")
 
-    if (jsEnabled && !jsIrEnabled) exclude("org/jetbrains/kotlin/js/test/ir/*")
-    if (!jsEnabled && jsIrEnabled) include("org/jetbrains/kotlin/js/test/ir/*")
+    if (jsEnabled && !jsIrEnabled) {
+        include("org/jetbrains/kotlin/integration/AntTaskJsTest.class")
+        include("org/jetbrains/kotlin/js/testOld/*")
+        include("org/jetbrains/kotlin/js/testOld/ast/*")
+        include("org/jetbrains/kotlin/js/testOld/optimizer/*")
+        include("org/jetbrains/kotlin/js/test/*")
+    }
+    if (!jsEnabled) {
+        if (firEnabled) {
+            include("org/jetbrains/kotlin/js/test/fir/*")
+        } else {
+            include("org/jetbrains/kotlin/js/test/ir/*")
+        }
+    }
 
     jvmArgs("-da:jdk.nashorn.internal.runtime.RecompilableScriptFunctionData") // Disable assertion which fails due to a bug in nashorn (KT-23637)
     setUpBoxTests()
@@ -345,7 +357,7 @@
 }
 
 projectTest(parallel = true, jUnitMode = JUnitMode.JUnit5, maxHeapSizeMb = 4096) {
-    setUpJsBoxTests(jsEnabled = true, jsIrEnabled = true)
+    setUpJsBoxTests(jsEnabled = true, jsIrEnabled = true, firEnabled = true)
 
     inputs.dir(rootDir.resolve("compiler/cli/cli-common/resources")) // compiler.xml
 
@@ -364,17 +376,22 @@
 }
 
 projectTest("jsTest", parallel = true, jUnitMode = JUnitMode.JUnit5, maxHeapSizeMb = 4096) {
-    setUpJsBoxTests(jsEnabled = true, jsIrEnabled = false)
+    setUpJsBoxTests(jsEnabled = true, jsIrEnabled = false, firEnabled = false)
     useJUnitPlatform()
 }
 
 projectTest("jsIrTest", true, jUnitMode = JUnitMode.JUnit5, maxHeapSizeMb = 4096) {
-    setUpJsBoxTests(jsEnabled = false, jsIrEnabled = true)
+    setUpJsBoxTests(jsEnabled = false, jsIrEnabled = true, firEnabled = false)
+    useJUnitPlatform()
+}
+
+projectTest("jsFirTest", true, jUnitMode = JUnitMode.JUnit5, maxHeapSizeMb = 4096) {
+    setUpJsBoxTests(jsEnabled = false, jsIrEnabled = true, firEnabled = true)
     useJUnitPlatform()
 }
 
 projectTest("quickTest", parallel = true, jUnitMode = JUnitMode.JUnit5, maxHeapSizeMb = 4096) {
-    setUpJsBoxTests(jsEnabled = true, jsIrEnabled = false)
+    setUpJsBoxTests(jsEnabled = true, jsIrEnabled = false, firEnabled = false)
     systemProperty("kotlin.js.skipMinificationTest", "true")
     useJUnitPlatform()
 }
diff --git a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt
index 6b9d490..c5f4b96 100644
--- a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt
+++ b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt
@@ -9,6 +9,7 @@
 import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite
 import org.jetbrains.kotlin.incremental.AbstractInvalidationTest
 import org.jetbrains.kotlin.js.test.*
+import org.jetbrains.kotlin.js.test.fir.*
 import org.jetbrains.kotlin.js.test.ir.*
 import org.jetbrains.kotlin.js.testOld.AbstractDceTest
 import org.jetbrains.kotlin.js.testOld.compatibility.binary.AbstractJsKlibBinaryCompatibilityTest
diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsTest.kt
index 9ae17ca..55d8df0 100644
--- a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsTest.kt
+++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsTest.kt
@@ -8,6 +8,7 @@
 import org.jetbrains.kotlin.js.test.converters.ClassicJsBackendFacade
 import org.jetbrains.kotlin.js.test.converters.incremental.RecompileModuleJsBackendFacade
 import org.jetbrains.kotlin.js.test.handlers.*
+import org.jetbrains.kotlin.js.test.ir.AbstractJsBlackBoxCodegenTestBase
 import org.jetbrains.kotlin.js.test.utils.JsIncrementalEnvironmentConfigurator
 import org.jetbrains.kotlin.test.Constructor
 import org.jetbrains.kotlin.test.TargetBackend
diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/fir/AbstractJsFirTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/fir/AbstractJsFirTest.kt
new file mode 100644
index 0000000..eb70a24
--- /dev/null
+++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/fir/AbstractJsFirTest.kt
@@ -0,0 +1,153 @@
+package org.jetbrains.kotlin.js.test.fir
+
+import org.jetbrains.kotlin.js.test.ir.AbstractJsBlackBoxCodegenTestBase
+import org.jetbrains.kotlin.js.test.converters.FirJsKlibBackendFacade
+import org.jetbrains.kotlin.js.test.converters.JsIrBackendFacade
+import org.jetbrains.kotlin.js.test.converters.incremental.RecompileModuleJsIrBackendFacade
+import org.jetbrains.kotlin.js.test.handlers.JsIrRecompiledArtifactsIdentityHandler
+import org.jetbrains.kotlin.parsing.parseBoolean
+import org.jetbrains.kotlin.test.Constructor
+import org.jetbrains.kotlin.test.TargetBackend
+import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
+import org.jetbrains.kotlin.test.builders.*
+import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
+import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
+import org.jetbrains.kotlin.test.frontend.fir.Fir2IrJsResultsConverter
+import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
+import org.jetbrains.kotlin.test.frontend.fir.FirMetaInfoDiffSuppressor
+import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
+import org.jetbrains.kotlin.test.frontend.fir.handlers.*
+import org.jetbrains.kotlin.test.model.*
+import org.jetbrains.kotlin.test.runners.codegen.commonFirHandlersForCodegenTest
+import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
+import java.lang.Boolean.getBoolean
+
+
+open class AbstractFirJsTest(
+    pathToTestDir: String = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/box/",
+    testGroupOutputDirPrefix: String,
+) : AbstractJsBlackBoxCodegenTestBase<FirOutputArtifact, IrBackendInput, BinaryArtifacts.KLib>(
+    FrontendKinds.FIR, TargetBackend.JS_IR, pathToTestDir, testGroupOutputDirPrefix, skipMinification = true
+) {
+    override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>>
+        get() = ::FirFrontendFacade
+
+    override val frontendToBackendConverter: Constructor<Frontend2BackendConverter<FirOutputArtifact, IrBackendInput>>
+        get() = ::Fir2IrJsResultsConverter
+
+    override val backendFacade: Constructor<BackendFacade<IrBackendInput, BinaryArtifacts.KLib>>
+        get() = ::FirJsKlibBackendFacade
+
+    override val afterBackendFacade: Constructor<AbstractTestFacade<BinaryArtifacts.KLib, BinaryArtifacts.Js>>?
+        get() = ::JsIrBackendFacade
+
+    override val recompileFacade: Constructor<AbstractTestFacade<BinaryArtifacts.Js, BinaryArtifacts.Js>>
+        get() = { RecompileModuleJsIrBackendFacade(it) }
+
+    private fun getBoolean(s: String, default: Boolean) = System.getProperty(s)?.let { parseBoolean(it) } ?: default
+
+    override fun configure(builder: TestConfigurationBuilder) {
+        super.configure(builder)
+        with (builder) {
+            defaultDirectives {
+                val runIc = getBoolean("kotlin.js.ir.icMode")
+                if (runIc) +JsEnvironmentConfigurationDirectives.RUN_IC
+                if (getBoolean("kotlin.js.ir.klibMainModule")) +JsEnvironmentConfigurationDirectives.KLIB_MAIN_MODULE
+                if (getBoolean("kotlin.js.ir.perModule", true)) +JsEnvironmentConfigurationDirectives.PER_MODULE
+                if (getBoolean("kotlin.js.ir.dce", true)) +JsEnvironmentConfigurationDirectives.RUN_IR_DCE
+                +LanguageSettingsDirectives.ALLOW_KOTLIN_PACKAGE
+                -JsEnvironmentConfigurationDirectives.GENERATE_NODE_JS_RUNNER
+            }
+
+        firHandlersStep {
+            useHandlers(
+                ::FirDumpHandler,
+                ::FirCfgDumpHandler,
+                ::FirCfgConsistencyHandler,
+                ::FirResolvedTypesVerifier,
+            )
+        }
+
+            configureJsArtifactsHandlersStep {
+                useHandlers(
+                    ::JsIrRecompiledArtifactsIdentityHandler,
+                )
+            }
+
+            forTestsMatching("${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/box/closure/inlineAnonymousFunctions/*") {
+                defaultDirectives {
+                    +JsEnvironmentConfigurationDirectives.GENERATE_INLINE_ANONYMOUS_FUNCTIONS
+                }
+            }
+        }
+    }
+}
+
+open class AbstractFirJsBoxTest : AbstractFirJsTest(
+    pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/box/",
+    testGroupOutputDirPrefix = "firBox/"
+)
+
+open class AbstractFirJsCodegenBoxTest : AbstractFirJsTest(
+    pathToTestDir = "compiler/testData/codegen/box/",
+    testGroupOutputDirPrefix = "codegen/firBox/"
+) {
+    override fun configure(builder: TestConfigurationBuilder) {
+        super.configure(builder)
+        builder.configureFirHandlersStep {
+            commonFirHandlersForCodegenTest()
+        }
+
+        builder.useAfterAnalysisCheckers(
+            ::FirMetaInfoDiffSuppressor
+        )
+    }
+}
+
+open class AbstractFirJsCodegenBoxErrorTest : AbstractFirJsTest(
+    pathToTestDir = "compiler/testData/codegen/boxError/",
+    testGroupOutputDirPrefix = "codegen/firBoxError/"
+)
+
+open class AbstractFirJsCodegenInlineTest : AbstractFirJsTest(
+    pathToTestDir = "compiler/testData/codegen/boxInline/",
+    testGroupOutputDirPrefix = "codegen/firBoxInline/"
+)
+
+// TODO: implement method order independent comparison to reuse testdata, disabled for now
+//open class AbstractFirJsTypeScriptExportTest : AbstractFirJsTest(
+//    pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/typescript-export/",
+//    testGroupOutputDirPrefix = "typescript-export/"
+//) {
+//    override fun configure(builder: TestConfigurationBuilder) {
+//        super.configure(builder)
+//        configureIrJsTypeScriptExportTest(builder)
+//    }
+//}
+
+// TODO: implement separate expectations for FIR/JS to reuse testdata, disabled for now
+//open class AbstractJsFirLineNumberTest : AbstractFirJsTest(
+//    pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/lineNumbers/",
+//    testGroupOutputDirPrefix = "irLineNumbers/"
+//) {
+//    override fun configure(builder: TestConfigurationBuilder) {
+//        super.configure(builder)
+//        configureJsIrLineNumberTest(builder)
+//    }
+//}
+
+// TODO: implement separate expectations for FIR/JS to reuse testdata, disabled for now
+//open class AbstractFirJsSteppingTest : AbstractFirJsTest(
+//    pathToTestDir = "compiler/testData/debug/stepping/",
+//    testGroupOutputDirPrefix = "debug/stepping/"
+//) {
+//    override fun TestConfigurationBuilder.configuration() {
+//        commonConfigurationForJsBlackBoxCodegenTest()
+//        configurationForIrJsSteppingTest()
+//    }
+//}
+
+open class AbstractFirJsCodegenWasmJsInteropTest : AbstractFirJsTest(
+    pathToTestDir = "compiler/testData/codegen/wasmJsInterop",
+    testGroupOutputDirPrefix = "codegen/wasmJsInteropJs"
+)
diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsBlackBoxCodegenTestBase.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsBlackBoxCodegenTestBase.kt
similarity index 95%
rename from js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsBlackBoxCodegenTestBase.kt
rename to js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsBlackBoxCodegenTestBase.kt
index e931eaa..252bf07 100644
--- a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsBlackBoxCodegenTestBase.kt
+++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsBlackBoxCodegenTestBase.kt
@@ -1,10 +1,12 @@
 /*
- * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
-package org.jetbrains.kotlin.js.test
+package org.jetbrains.kotlin.js.test.ir
 
+import org.jetbrains.kotlin.js.test.JsAdditionalSourceProvider
+import org.jetbrains.kotlin.js.test.JsFailingTestSuppressor
 import org.jetbrains.kotlin.js.test.handlers.*
 import org.jetbrains.kotlin.platform.js.JsPlatforms
 import org.jetbrains.kotlin.test.Constructor
diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt
index 70c3f8a..db7940e 100644
--- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt
+++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt
@@ -5,8 +5,6 @@
 
 package org.jetbrains.kotlin.js.test.ir
 
-import org.jetbrains.kotlin.js.test.AbstractJsBlackBoxCodegenTestBase
-import org.jetbrains.kotlin.js.test.converters.FirJsKlibBackendFacade
 import org.jetbrains.kotlin.js.test.JsSteppingTestAdditionalSourceProvider
 import org.jetbrains.kotlin.js.test.converters.JsIrBackendFacade
 import org.jetbrains.kotlin.js.test.converters.JsKlibBackendFacade
@@ -21,17 +19,10 @@
 import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
 import org.jetbrains.kotlin.test.builders.*
 import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
-import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
 import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
 import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
 import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
-import org.jetbrains.kotlin.test.frontend.fir.Fir2IrJsResultsConverter
-import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
-import org.jetbrains.kotlin.test.frontend.fir.FirMetaInfoDiffSuppressor
-import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
-import org.jetbrains.kotlin.test.frontend.fir.handlers.*
 import org.jetbrains.kotlin.test.model.*
-import org.jetbrains.kotlin.test.runners.codegen.commonFirHandlersForCodegenTest
 import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
 import java.lang.Boolean.getBoolean
 
@@ -189,133 +180,4 @@
 open class AbstractIrCodegenWasmJsInteropJsTest : AbstractJsIrTest(
     pathToTestDir = "compiler/testData/codegen/wasmJsInterop",
     testGroupOutputDirPrefix = "codegen/wasmJsInteropJs"
-)
-
-open class AbstractFirJsBlackBoxCodegenTest(
-    pathToTestDir: String = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/box/",
-    testGroupOutputDirPrefix: String = "firBox/",
-) : AbstractJsBlackBoxCodegenTestBase<FirOutputArtifact, IrBackendInput, BinaryArtifacts.KLib>(
-    FrontendKinds.FIR, TargetBackend.JS_IR, pathToTestDir, testGroupOutputDirPrefix, skipMinification = true
-) {
-    override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>>
-        get() = ::FirFrontendFacade
-
-    override val frontendToBackendConverter: Constructor<Frontend2BackendConverter<FirOutputArtifact, IrBackendInput>>
-        get() = ::Fir2IrJsResultsConverter
-
-    override val backendFacade: Constructor<BackendFacade<IrBackendInput, BinaryArtifacts.KLib>>
-        get() = ::FirJsKlibBackendFacade
-
-    override val afterBackendFacade: Constructor<AbstractTestFacade<BinaryArtifacts.KLib, BinaryArtifacts.Js>>?
-        get() = ::JsIrBackendFacade
-
-    override val recompileFacade: Constructor<AbstractTestFacade<BinaryArtifacts.Js, BinaryArtifacts.Js>>
-        get() = { RecompileModuleJsIrBackendFacade(it) }
-
-    private fun getBoolean(s: String, default: Boolean) = System.getProperty(s)?.let { parseBoolean(it) } ?: default
-
-    override fun configure(builder: TestConfigurationBuilder) {
-        super.configure(builder)
-        with (builder) {
-            defaultDirectives {
-                val runIc = getBoolean("kotlin.js.ir.icMode")
-                if (runIc) +JsEnvironmentConfigurationDirectives.RUN_IC
-                if (getBoolean("kotlin.js.ir.klibMainModule")) +JsEnvironmentConfigurationDirectives.KLIB_MAIN_MODULE
-                if (getBoolean("kotlin.js.ir.perModule", true)) +JsEnvironmentConfigurationDirectives.PER_MODULE
-                if (getBoolean("kotlin.js.ir.dce", true)) +JsEnvironmentConfigurationDirectives.RUN_IR_DCE
-                +LanguageSettingsDirectives.ALLOW_KOTLIN_PACKAGE
-                -JsEnvironmentConfigurationDirectives.GENERATE_NODE_JS_RUNNER
-            }
-
-        firHandlersStep {
-            useHandlers(
-                ::FirDumpHandler,
-                ::FirCfgDumpHandler,
-                ::FirCfgConsistencyHandler,
-                ::FirResolvedTypesVerifier,
-            )
-        }
-
-            configureJsArtifactsHandlersStep {
-                useHandlers(
-                    ::JsIrRecompiledArtifactsIdentityHandler,
-                )
-            }
-
-            forTestsMatching("${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/box/closure/inlineAnonymousFunctions/*") {
-                defaultDirectives {
-                    +JsEnvironmentConfigurationDirectives.GENERATE_INLINE_ANONYMOUS_FUNCTIONS
-                }
-            }
-        }
-    }
-}
-
-open class AbstractFirJsBoxTest : AbstractFirJsBlackBoxCodegenTest(
-    pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/box/",
-    testGroupOutputDirPrefix = "irBox/"
-)
-
-open class AbstractFirJsCodegenBoxTest : AbstractFirJsBlackBoxCodegenTest(
-    pathToTestDir = "compiler/testData/codegen/box/",
-    testGroupOutputDirPrefix = "codegen/irBox/"
-) {
-    override fun configure(builder: TestConfigurationBuilder) {
-        super.configure(builder)
-        builder.configureFirHandlersStep {
-            commonFirHandlersForCodegenTest()
-        }
-
-        builder.useAfterAnalysisCheckers(
-            ::FirMetaInfoDiffSuppressor
-        )
-    }
-}
-
-open class AbstractFirJsCodegenBoxErrorTest : AbstractFirJsBlackBoxCodegenTest(
-    pathToTestDir = "compiler/testData/codegen/boxError/",
-    testGroupOutputDirPrefix = "codegen/irBoxError/"
-)
-
-open class AbstractFirJsCodegenInlineTest : AbstractFirJsBlackBoxCodegenTest(
-    pathToTestDir = "compiler/testData/codegen/boxInline/",
-    testGroupOutputDirPrefix = "codegen/irBoxInline/"
-)
-
-// TODO: implement method order independent comparison to reuse testdata, disabled for now
-//open class AbstractFirJsTypeScriptExportTest : AbstractFirJsTest(
-//    pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/typescript-export/",
-//    testGroupOutputDirPrefix = "typescript-export/"
-//) {
-//    override fun configure(builder: TestConfigurationBuilder) {
-//        super.configure(builder)
-//        configureIrJsTypeScriptExportTest(builder)
-//    }
-//}
-
-// TODO: implement separate expectations for FIR/JS to reuse testdata, disabled for now
-//open class AbstractJsFirLineNumberTest : AbstractFirJsTest(
-//    pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/lineNumbers/",
-//    testGroupOutputDirPrefix = "irLineNumbers/"
-//) {
-//    override fun configure(builder: TestConfigurationBuilder) {
-//        super.configure(builder)
-//        configureJsIrLineNumberTest(builder)
-//    }
-//}
-
-// TODO: implement separate expectations for FIR/JS to reuse testdata, disabled for now
-//open class AbstractFirJsSteppingTest : AbstractFirJsTest(
-//    pathToTestDir = "compiler/testData/debug/stepping/",
-//    testGroupOutputDirPrefix = "debug/stepping/"
-//) {
-//    override fun TestConfigurationBuilder.configuration() {
-//        commonConfigurationForJsBlackBoxCodegenTest()
-//        configurationForIrJsSteppingTest()
-//    }
-//}
-
-open class AbstractFirJsCodegenWasmJsInteropTest : AbstractFirJsBlackBoxCodegenTest(
-    pathToTestDir = "compiler/testData/codegen/wasmJsInterop",
-    testGroupOutputDirPrefix = "codegen/wasmJsInteropJs"
-)
+)
\ No newline at end of file
diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsKLibABITestCase.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsKLibABITestCase.kt
similarity index 98%
rename from js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsKLibABITestCase.kt
rename to js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsKLibABITestCase.kt
index b3948d8..3452958 100644
--- a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsKLibABITestCase.kt
+++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsKLibABITestCase.kt
@@ -1,9 +1,9 @@
 /*
- * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
-package org.jetbrains.kotlin.js.test
+package org.jetbrains.kotlin.js.test.ir
 
 import com.intellij.openapi.vfs.StandardFileSystems
 import com.intellij.openapi.vfs.VirtualFileManager
diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/testOld/ApiTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/testOld/api/ApiTest.kt
similarity index 98%
rename from js/js.tests/test/org/jetbrains/kotlin/js/testOld/ApiTest.kt
rename to js/js.tests/test/org/jetbrains/kotlin/js/testOld/api/ApiTest.kt
index 55e5a26..97b015f 100644
--- a/js/js.tests/test/org/jetbrains/kotlin/js/testOld/ApiTest.kt
+++ b/js/js.tests/test/org/jetbrains/kotlin/js/testOld/api/ApiTest.kt
@@ -1,9 +1,9 @@
 /*
- * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
-package org.jetbrains.kotlin.js.testOld
+package org.jetbrains.kotlin.js.testOld.api
 
 import junit.framework.TestCase
 import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java
similarity index 99%
rename from js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsBoxTestGenerated.java
rename to js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java
index 138ca2f..9f7a458 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsBoxTestGenerated.java
@@ -3,7 +3,7 @@
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
-package org.jetbrains.kotlin.js.test.ir;
+package org.jetbrains.kotlin.js.test.fir;
 
 import com.intellij.testFramework.TestDataPath;
 import org.jetbrains.kotlin.test.util.KtTestUtil;
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenBoxErrorTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxErrorTestGenerated.java
similarity index 98%
rename from js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenBoxErrorTestGenerated.java
rename to js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxErrorTestGenerated.java
index fea19cf..8814fb0 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenBoxErrorTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxErrorTestGenerated.java
@@ -3,7 +3,7 @@
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
-package org.jetbrains.kotlin.js.test.ir;
+package org.jetbrains.kotlin.js.test.fir;
 
 import com.intellij.testFramework.TestDataPath;
 import org.jetbrains.kotlin.test.util.KtTestUtil;
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java
similarity index 99%
rename from js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenBoxTestGenerated.java
rename to js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java
index f4f659a..5a1ca44 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java
@@ -3,7 +3,7 @@
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
-package org.jetbrains.kotlin.js.test.ir;
+package org.jetbrains.kotlin.js.test.fir;
 
 import com.intellij.testFramework.TestDataPath;
 import org.jetbrains.kotlin.test.util.KtTestUtil;
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenInlineTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenInlineTestGenerated.java
similarity index 99%
rename from js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenInlineTestGenerated.java
rename to js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenInlineTestGenerated.java
index 662d908..9ffd809 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenInlineTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenInlineTestGenerated.java
@@ -3,7 +3,7 @@
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
-package org.jetbrains.kotlin.js.test.ir;
+package org.jetbrains.kotlin.js.test.fir;
 
 import com.intellij.testFramework.TestDataPath;
 import org.jetbrains.kotlin.test.util.KtTestUtil;
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenWasmJsInteropTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenWasmJsInteropTestGenerated.java
similarity index 98%
rename from js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenWasmJsInteropTestGenerated.java
rename to js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenWasmJsInteropTestGenerated.java
index fa370c7..0436d65 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/FirJsCodegenWasmJsInteropTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenWasmJsInteropTestGenerated.java
@@ -3,7 +3,7 @@
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
-package org.jetbrains.kotlin.js.test.ir;
+package org.jetbrains.kotlin.js.test.fir;
 
 import com.intellij.testFramework.TestDataPath;
 import org.jetbrains.kotlin.test.util.KtTestUtil;
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABINoICTestCaseGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsKLibABINoICTestCaseGenerated.java
similarity index 99%
rename from js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABINoICTestCaseGenerated.java
rename to js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsKLibABINoICTestCaseGenerated.java
index a3a29e1..14b93fe 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABINoICTestCaseGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsKLibABINoICTestCaseGenerated.java
@@ -3,7 +3,7 @@
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
-package org.jetbrains.kotlin.js.test;
+package org.jetbrains.kotlin.js.test.ir;
 
 import com.intellij.testFramework.TestDataPath;
 import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABIWithICTestCaseGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsKLibABIWithICTestCaseGenerated.java
similarity index 99%
rename from js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABIWithICTestCaseGenerated.java
rename to js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsKLibABIWithICTestCaseGenerated.java
index 87afb42..4bc5115 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABIWithICTestCaseGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsKLibABIWithICTestCaseGenerated.java
@@ -3,7 +3,7 @@
  * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
  */
 
-package org.jetbrains.kotlin.js.test;
+package org.jetbrains.kotlin.js.test.ir;
 
 import com.intellij.testFramework.TestDataPath;
 import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;