Shagen Ogandzhanian
3 years ago
6 changed files with 145 additions and 84 deletions
@ -1,19 +1,75 @@ |
|||||||
package org.jetbrains.compose.web.tests.integration.common |
package org.jetbrains.compose.web.tests.integration.common |
||||||
|
|
||||||
|
import org.junit.jupiter.api.DisplayNameGeneration |
||||||
import org.junit.jupiter.api.extension.ExtendWith |
import org.junit.jupiter.api.extension.ExtendWith |
||||||
|
import org.junit.jupiter.params.ParameterizedTest |
||||||
|
import org.junit.jupiter.params.provider.MethodSource |
||||||
|
import org.openqa.selenium.By |
||||||
|
import org.openqa.selenium.WebDriver |
||||||
import org.openqa.selenium.chrome.ChromeDriver |
import org.openqa.selenium.chrome.ChromeDriver |
||||||
import org.openqa.selenium.chrome.ChromeOptions |
import org.openqa.selenium.chrome.ChromeOptions |
||||||
|
import org.openqa.selenium.firefox.FirefoxDriver |
||||||
|
import org.openqa.selenium.firefox.FirefoxOptions |
||||||
import org.openqa.selenium.remote.RemoteWebDriver |
import org.openqa.selenium.remote.RemoteWebDriver |
||||||
|
import org.openqa.selenium.safari.SafariDriver |
||||||
|
import org.openqa.selenium.support.ui.ExpectedConditions |
||||||
|
import org.openqa.selenium.support.ui.WebDriverWait |
||||||
|
|
||||||
@ExtendWith(value = [StaticServerSetupExtension::class]) |
|
||||||
abstract class BaseIntegrationTests { |
|
||||||
|
|
||||||
companion object : WithChromeDriver { |
private val PATH = "http://localhost:${ServerLauncher.port}" |
||||||
override val driver: RemoteWebDriver = ChromeDriver( |
|
||||||
|
fun WebDriver.openTestPage(test: String) { |
||||||
|
get("$PATH?test=$test") |
||||||
|
} |
||||||
|
|
||||||
|
fun WebDriver.waitTextToBe(textId: String = "txt", value: String) { |
||||||
|
WebDriverWait(this, 1).until(ExpectedConditions.textToBe(By.id(textId), value)) |
||||||
|
} |
||||||
|
|
||||||
|
object Drivers { |
||||||
|
val Chrome by lazy { |
||||||
|
object : ChromeDriver( |
||||||
ChromeOptions().apply { |
ChromeOptions().apply { |
||||||
setHeadless(true) |
setHeadless(true) |
||||||
addArguments("--no-sandbox") |
addArguments("--no-sandbox") |
||||||
} |
} |
||||||
) |
) { |
||||||
|
override fun toString(): String = "chrome" |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
val Firefox by lazy { |
||||||
|
object : FirefoxDriver( |
||||||
|
FirefoxOptions().apply { |
||||||
|
setHeadless(true) |
||||||
|
} |
||||||
|
) { |
||||||
|
override fun toString(): String = "firefox" |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
val Safari by lazy { |
||||||
|
object : SafariDriver() { |
||||||
|
override fun toString(): String = "safari" |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Target(AnnotationTarget.FUNCTION) |
||||||
|
@ParameterizedTest(name = "{displayName} [{0}]") |
||||||
|
@MethodSource("resolveDrivers") |
||||||
|
annotation class ResolveDrivers |
||||||
|
|
||||||
|
@DisplayNameGeneration(DisplayNameSimplifier::class) |
||||||
|
@ExtendWith(value = [StaticServerSetupExtension::class]) |
||||||
|
abstract class BaseIntegrationTests() { |
||||||
|
companion object { |
||||||
|
@JvmStatic |
||||||
|
fun resolveDrivers(): Array<Array<Any>> { |
||||||
|
return arrayOf( |
||||||
|
arrayOf(Drivers.Chrome) |
||||||
|
) |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
@ -0,0 +1,19 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. |
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.jetbrains.compose.web.tests.integration.common |
||||||
|
|
||||||
|
import org.junit.jupiter.api.DisplayNameGenerator |
||||||
|
import java.lang.reflect.Method |
||||||
|
|
||||||
|
class DisplayNameSimplifier : DisplayNameGenerator.Standard() { |
||||||
|
override fun generateDisplayNameForMethod(testClass: Class<*>?, testMethod: Method?): String { |
||||||
|
return super |
||||||
|
.generateDisplayNameForMethod(testClass, testMethod) |
||||||
|
.replace("WebDriver", "") |
||||||
|
.replace("()", "") |
||||||
|
.plus(" ") |
||||||
|
} |
||||||
|
} |
@ -1,20 +0,0 @@ |
|||||||
package org.jetbrains.compose.web.tests.integration.common |
|
||||||
|
|
||||||
import org.openqa.selenium.remote.RemoteWebDriver |
|
||||||
import org.openqa.selenium.By |
|
||||||
import org.openqa.selenium.support.ui.ExpectedConditions |
|
||||||
import org.openqa.selenium.support.ui.WebDriverWait |
|
||||||
|
|
||||||
interface WithChromeDriver { |
|
||||||
val driver: RemoteWebDriver |
|
||||||
} |
|
||||||
|
|
||||||
private val PATH = "http://localhost:${ServerLauncher.port}" |
|
||||||
|
|
||||||
fun WithChromeDriver.openTestPage(test: String) { |
|
||||||
driver.get("$PATH?test=$test") |
|
||||||
} |
|
||||||
|
|
||||||
fun WithChromeDriver.waitTextToBe(textId: String = "txt", value: String) { |
|
||||||
WebDriverWait(driver, 1).until(ExpectedConditions.textToBe(By.id(textId), value)) |
|
||||||
} |
|
Loading…
Reference in new issue