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.
80 lines
2.2 KiB
80 lines
2.2 KiB
plugins { |
|
id("org.jetbrains.kotlin.multiplatform") |
|
id("org.jetbrains.compose") |
|
} |
|
|
|
|
|
kotlin { |
|
js(IR) { |
|
browser() { |
|
testTask { |
|
testLogging.showStandardStreams = true |
|
useKarma { |
|
useChromeHeadless() |
|
//useFirefox() |
|
} |
|
} |
|
} |
|
binaries.executable() |
|
} |
|
|
|
sourceSets { |
|
val commonMain by getting { |
|
dependencies { |
|
implementation(compose.runtime) |
|
implementation(project(":web-core")) |
|
implementation(kotlin("stdlib-common")) |
|
} |
|
} |
|
|
|
val jsMain by getting { |
|
dependencies { |
|
implementation(kotlin("stdlib-js")) |
|
} |
|
} |
|
|
|
val jsTest by getting { |
|
dependencies { |
|
implementation(kotlin("test-js")) |
|
} |
|
} |
|
} |
|
} |
|
|
|
val printBundleSize by tasks.registering { |
|
doLast { |
|
val jsFile = buildDir.resolve("distributions/web-benchmark-core.js") |
|
val size = jsFile.length() |
|
println("##teamcity[buildStatisticValue key='landingPageBundleSize' value='$size']") |
|
} |
|
} |
|
|
|
val printBenchmarkResults by tasks.registering { |
|
doLast { |
|
val report = buildDir.resolve("reports/tests/jsTest/classes/BenchmarkTests.html").readText() |
|
val stdout = "#.*;".toRegex().findAll(report).map { it.value }.firstOrNull() |
|
|
|
val benchmarks = stdout?.split(";")?.mapNotNull { |
|
if (it.isEmpty()) { |
|
null |
|
} else { |
|
val b = it.split(":") |
|
val testName = b[0].replace("#", "") |
|
val benchmarkMs = b[1].toInt() |
|
|
|
testName to benchmarkMs |
|
} |
|
}?.toMap() |
|
|
|
benchmarks?.forEach { |
|
// TeamCity messages need to escape '[' and ']' using '|' |
|
val testName = it.key |
|
.replace("[", "|[") |
|
.replace("]", "|]") |
|
println("##teamcity[buildStatisticValue key='benchmark_$testName' value='${it.value}']") |
|
} |
|
} |
|
} |
|
|
|
tasks.named("jsTest") { finalizedBy(printBenchmarkResults) } |
|
tasks.named("build") { finalizedBy(printBundleSize) } |