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 karmaSourceMapLoader = NpmPackageVersion("karma-sourcemap-loader", "0.3.7")
val karmaSourceMapSupport = NpmPackageVersion("karma-source-map-support", "1.4.0") val karmaSourceMapSupport = NpmPackageVersion("karma-source-map-support", "1.4.0")
val puppeteer = NpmPackageVersion("puppeteer", "1.19.0")
val kotlinNodeJsTestRunner = KotlinGradleNpmPackage("test-nodejs-runner") val kotlinNodeJsTestRunner = KotlinGradleNpmPackage("test-nodejs-runner")
val istanbulInstrumenterLoader = NpmPackageVersion("istanbul-instrumenter-loader", "3.0.1") 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.TCServiceMessagesClientSettings
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation 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.NpmPackageVersion
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency 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.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
@@ -77,11 +77,20 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
configDirectory = dir 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) fun usePhantomJS() = useBrowser("PhantomJS", versions.karmaPhantomJsLauncher)
@@ -98,6 +107,29 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
requiredDependencies.add(dependency) 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() { private fun useMocha() {
requiredDependencies.add(versions.karmaMocha) requiredDependencies.add(versions.karmaMocha)
requiredDependencies.add(versions.mocha) requiredDependencies.add(versions.mocha)
@@ -318,4 +350,9 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
appendConfigsFromDir(configDirectory) appendConfigsFromDir(configDirectory)
appendln() appendln()
} }
companion object {
const val CHROME_BIN = "CHROME_BIN"
const val CHROME_CANARY_BIN = "CHROME_CANARY_BIN"
}
} }