Add puppeteer for Chrome browsers

This commit is contained in:
Ilya Goncharov
2019-09-05 17:22:51 +03:00
parent df646233ef
commit 613391d00b
2 changed files with 44 additions and 5 deletions
@@ -43,6 +43,8 @@ class NpmVersions {
val karmaSourceMapLoader = NpmPackageVersion("karma-sourcemap-loader", "0.3.7")
val karmaSourceMapSupport = NpmPackageVersion("karma-source-map-support", "1.4.0")
val puppeteer = NpmPackageVersion("puppeteer", "1.19.0")
val kotlinNodeJsTestRunner = KotlinGradleNpmPackage("test-nodejs-runner")
val istanbulInstrumenterLoader = NpmPackageVersion("istanbul-instrumenter-loader", "3.0.1")
@@ -16,10 +16,10 @@ import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClient
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClientSettings
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.appendConfigsFromDir
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
import org.jetbrains.kotlin.gradle.targets.js.NpmPackageVersion
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
import org.jetbrains.kotlin.gradle.targets.js.appendConfigsFromDir
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
@@ -77,11 +77,20 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
configDirectory = dir
}
fun useChrome() = useBrowser("Chrome", versions.karmaChromeLauncher)
fun useChrome() = useChromeWithPuppeteer(
id = "Chrome",
envVar = CHROME_BIN
)
fun useChromeCanary() = useBrowser("ChromeCanary", versions.karmaChromeLauncher)
fun useChromeCanary() = useChromeWithPuppeteer(
id = "ChromeCanary",
envVar = CHROME_CANARY_BIN
)
fun useChromeHeadless() = useBrowser("ChromeHeadless", versions.karmaChromeLauncher)
fun useChromeHeadless() = useChromeWithPuppeteer(
id = "ChromeHeadless",
envVar = CHROME_BIN
)
fun usePhantomJS() = useBrowser("PhantomJS", versions.karmaPhantomJsLauncher)
@@ -98,6 +107,29 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
requiredDependencies.add(dependency)
}
private fun useChromeWithPuppeteer(
id: String,
envVar: String
) {
usePuppeteer(envVar)
useBrowser(id, versions.karmaChromeLauncher)
}
private fun usePuppeteer(envVar: String) {
requiredDependencies.add(versions.puppeteer)
confJsWriters.add {
it.appendln()
//language=JavaScript 1.8
it.appendln(
"""
// puppeteer
process.env.$envVar = require('puppeteer').executablePath()
""".trimIndent()
)
}
}
private fun useMocha() {
requiredDependencies.add(versions.karmaMocha)
requiredDependencies.add(versions.mocha)
@@ -318,4 +350,9 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
appendConfigsFromDir(configDirectory)
appendln()
}
companion object {
const val CHROME_BIN = "CHROME_BIN"
const val CHROME_CANARY_BIN = "CHROME_CANARY_BIN"
}
}