Testsuite PoC - Add support for html unit (#32338)

* Testsuite PoC - Add support for html unit

Signed-off-by: stianst <stianst@gmail.com>

* Update test-poc/framework/src/main/java/org/keycloak/test/framework/config/Config.java

Signed-off-by: Stian Thorgersen <stian@redhat.com>

---------

Signed-off-by: stianst <stianst@gmail.com>
Signed-off-by: Stian Thorgersen <stian@redhat.com>
This commit is contained in:
Stian Thorgersen 2024-08-22 16:02:50 +02:00 committed by GitHub
parent c18a79bfe7
commit 4450e0e455
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 46 additions and 10 deletions

View file

@ -32,7 +32,8 @@
<description>PoC JUnit 5 testing framework for Keycloak</description> <description>PoC JUnit 5 testing framework for Keycloak</description>
<properties> <properties>
<selenium.version>4.21.0</selenium.version> <selenium.version>4.23.1</selenium.version>
<selenium.html.unit.version>4.23.0</selenium.html.unit.version>
</properties> </properties>
<dependencies> <dependencies>
@ -66,6 +67,11 @@
<version>${selenium.version}</version> <version>${selenium.version}</version>
<type>pom</type> <type>pom</type>
</dependency> </dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>htmlunit3-driver</artifactId>
<version>${selenium.html.unit.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.testcontainers</groupId> <groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId> <artifactId>junit-jupiter</artifactId>

View file

@ -18,7 +18,7 @@ public class Config {
} }
public static String getAdminClientId() { public static String getAdminClientId() {
return "admin"; return "temp-admin";
} }
public static String getAdminClientSecret() { public static String getAdminClientSecret() {

View file

@ -5,11 +5,13 @@ import org.keycloak.test.framework.injection.InstanceContext;
import org.keycloak.test.framework.injection.LifeCycle; import org.keycloak.test.framework.injection.LifeCycle;
import org.keycloak.test.framework.injection.RequestedInstance; import org.keycloak.test.framework.injection.RequestedInstance;
import org.keycloak.test.framework.injection.Supplier; import org.keycloak.test.framework.injection.Supplier;
import org.openqa.selenium.MutableCapabilities;
import org.openqa.selenium.PageLoadStrategy; import org.openqa.selenium.PageLoadStrategy;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.AbstractDriverOptions; import org.openqa.selenium.remote.CapabilityType;
import java.time.Duration; import java.time.Duration;
import java.util.Map;
public abstract class AbstractWebDriverSupplier implements Supplier<WebDriver, InjectWebDriver> { public abstract class AbstractWebDriverSupplier implements Supplier<WebDriver, InjectWebDriver> {
@ -45,9 +47,9 @@ public abstract class AbstractWebDriverSupplier implements Supplier<WebDriver, I
public abstract WebDriver getWebDriver(); public abstract WebDriver getWebDriver();
public void setGlobalOptions(AbstractDriverOptions<?> options) { public void setCommonCapabilities(MutableCapabilities capabilities) {
options.setImplicitWaitTimeout(Duration.ofSeconds(5)); capabilities.setCapability(CapabilityType.PAGE_LOAD_STRATEGY, PageLoadStrategy.NORMAL.toString());
options.setPageLoadStrategy(PageLoadStrategy.NORMAL); capabilities.setCapability("timeouts", Map.of("implicit", Duration.ofSeconds(5).toMillis()));
} }
} }

View file

@ -14,7 +14,7 @@ public class ChromeHeadlessWebDriverSupplier extends AbstractWebDriverSupplier {
@Override @Override
public WebDriver getWebDriver() { public WebDriver getWebDriver() {
ChromeOptions options = new ChromeOptions(); ChromeOptions options = new ChromeOptions();
setGlobalOptions(options); setCommonCapabilities(options);
options.addArguments( options.addArguments(
"--headless", "--headless",
"--disable-gpu", "--disable-gpu",

View file

@ -14,7 +14,7 @@ public class ChromeWebDriverSupplier extends AbstractWebDriverSupplier {
@Override @Override
public WebDriver getWebDriver() { public WebDriver getWebDriver() {
ChromeOptions options = new ChromeOptions(); ChromeOptions options = new ChromeOptions();
setGlobalOptions(options); setCommonCapabilities(options);
return new ChromeDriver(options); return new ChromeDriver(options);
} }
} }

View file

@ -14,7 +14,7 @@ public class FirefoxHeadlessWebDriverSupplier extends AbstractWebDriverSupplier
@Override @Override
public WebDriver getWebDriver() { public WebDriver getWebDriver() {
FirefoxOptions options = new FirefoxOptions(); FirefoxOptions options = new FirefoxOptions();
setGlobalOptions(options); setCommonCapabilities(options);
options.addArguments("-headless"); options.addArguments("-headless");
return new FirefoxDriver(options); return new FirefoxDriver(options);
} }

View file

@ -14,7 +14,7 @@ public class FirefoxWebDriverSupplier extends AbstractWebDriverSupplier {
@Override @Override
public WebDriver getWebDriver() { public WebDriver getWebDriver() {
FirefoxOptions options = new FirefoxOptions(); FirefoxOptions options = new FirefoxOptions();
setGlobalOptions(options); setCommonCapabilities(options);
return new FirefoxDriver(options); return new FirefoxDriver(options);
} }
} }

View file

@ -0,0 +1,27 @@
package org.keycloak.test.framework.webdriver;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class HtmlUnitWebDriverSupplier extends AbstractWebDriverSupplier {
@Override
public String getAlias() {
return "htmlunit";
}
@Override
public WebDriver getWebDriver() {
DesiredCapabilities capabilities = new DesiredCapabilities();
setCommonCapabilities(capabilities);
capabilities.setBrowserName("htmlunit");
capabilities.setCapability(HtmlUnitDriver.DOWNLOAD_IMAGES_CAPABILITY, false);
capabilities.setCapability(HtmlUnitDriver.JAVASCRIPT_ENABLED, true);
HtmlUnitDriver driver = new HtmlUnitDriver(capabilities);
driver.getWebClient().getOptions().setCssEnabled(false);
return driver;
}
}

View file

@ -5,6 +5,7 @@ org.keycloak.test.framework.realm.UserSupplier
org.keycloak.test.framework.server.DistributionKeycloakTestServerSupplier org.keycloak.test.framework.server.DistributionKeycloakTestServerSupplier
org.keycloak.test.framework.server.EmbeddedKeycloakTestServerSupplier org.keycloak.test.framework.server.EmbeddedKeycloakTestServerSupplier
org.keycloak.test.framework.server.RemoteKeycloakTestServerSupplier org.keycloak.test.framework.server.RemoteKeycloakTestServerSupplier
org.keycloak.test.framework.webdriver.HtmlUnitWebDriverSupplier
org.keycloak.test.framework.webdriver.ChromeHeadlessWebDriverSupplier org.keycloak.test.framework.webdriver.ChromeHeadlessWebDriverSupplier
org.keycloak.test.framework.webdriver.ChromeWebDriverSupplier org.keycloak.test.framework.webdriver.ChromeWebDriverSupplier
org.keycloak.test.framework.webdriver.FirefoxHeadlessWebDriverSupplier org.keycloak.test.framework.webdriver.FirefoxHeadlessWebDriverSupplier