You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.3 KiB

import org.jetbrains.compose.gradle.standardConf
plugins {
kotlin("multiplatform")
id("org.jetbrains.compose")
}
val integrationTestsEnabled: Boolean = project.properties.getValue("integrationTestsEnabled") == "true"
kotlin {
if (integrationTestsEnabled) {
jvm {
tasks.named<Test>("jvmTest") {
useJUnitPlatform()
systemProperty(
"COMPOSE_WEB_INTEGRATION_TESTS_DISTRIBUTION",
File(buildDir, "developmentExecutable")
)
}
}
}
js(IR) {
browser() {
testTask {
useKarma {
standardConf()
useFirefox()
}
}
}
binaries.executable()
}
sourceSets {
val commonMain by getting {
dependencies {
implementation(compose.runtime)
implementation(project(":html-core"))
implementation(kotlin("stdlib-common"))
implementation(libs.kotlinx.coroutines.core)
}
}
val jsMain by getting {
dependencies {
implementation(kotlin("stdlib-js"))
implementation(npm("highlight.js", "10.7.2"))
}
}
val jsTest by getting {
dependencies {
implementation(kotlin("test-js"))
}
}
if (integrationTestsEnabled) {
val jvmTest by getting {
dependencies {
implementation("org.slf4j:slf4j-api:1.7.30")
implementation("org.slf4j:slf4j-simple:1.7.30")
implementation("org.seleniumhq.selenium:selenium-java:3.141.59")
implementation("io.ktor:ktor-server-netty:1.5.4")
implementation("io.ktor:ktor-server-core:1.5.4")
implementation("io.ktor:ktor-server-host-common:1.5.4")
implementation("org.junit.jupiter:junit-jupiter-engine:5.7.1")
implementation("org.junit.jupiter:junit-jupiter-api:5.7.1")
implementation("org.junit.jupiter:junit-jupiter-params:5.7.1")
}
}
}
}
}
if (integrationTestsEnabled) {
tasks.named<Test>("jvmTest") {
dependsOn(tasks.named("jsBrowserDevelopmentWebpack"))
listOf(
"webdriver.chrome.driver",
"webdriver.gecko.driver",
).forEach {
if (rootProject.hasProperty(it)) {
println("${it} => ${rootProject.extensions.getByName(it)}")
systemProperty(it, rootProject.extensions.getByName(it))
}
}
listOf(
"compose.web.tests.integration.withFirefox"
).forEach { propName ->
if (project.hasProperty(propName)) {
systemProperty(propName, "true")
}
}
}
}
// a temporary workaround for a bug in jsRun invocation - see https://youtrack.jetbrains.com/issue/KT-48273
afterEvaluate {
rootProject.extensions.configure<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension> {
versions.webpackDevServer.version = "4.0.0"
versions.webpackCli.version = "4.10.0"
}
}