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.
73 lines
1.9 KiB
73 lines
1.9 KiB
plugins { |
|
id("org.jetbrains.kotlin.multiplatform") |
|
id("org.jetbrains.compose") |
|
} |
|
|
|
|
|
kotlin { |
|
js(IR) { |
|
browser { |
|
testTask { |
|
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(project(":test-utils")) |
|
implementation(kotlin("test-js")) |
|
} |
|
} |
|
} |
|
} |
|
|
|
val BENCHMARKS_PATH = "reports/tests/jsTest/classes/org.jetbrains.compose.web.tests.benchmarks.BenchmarkTests.html" |
|
|
|
val printBenchmarkResults by tasks.registering { |
|
doLast { |
|
val report = buildDir.resolve(BENCHMARKS_PATH).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) }
|
|
|