X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fdemo%2FWebDriverExtension.java;h=bbbe82bc4ce4e0d31890f6398c608ec576b58338;hb=029b48793ddfa1af8778b9121bf9daaa58601344;hp=25de95f8b8bc6d845d8c6918ea56fc28e9d81bfa;hpb=ded79957c6d4bc388560ac37677cbf5323d7b314;p=demos%2Fspring-boot diff --git a/src/test/java/de/juplo/demo/WebDriverExtension.java b/src/test/java/de/juplo/demo/WebDriverExtension.java index 25de95f..bbbe82b 100644 --- a/src/test/java/de/juplo/demo/WebDriverExtension.java +++ b/src/test/java/de/juplo/demo/WebDriverExtension.java @@ -1,11 +1,17 @@ package de.juplo.demo; -import org.junit.jupiter.api.extension.BeforeEachCallback; +import java.io.File; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.api.extension.ParameterContext; +import org.junit.jupiter.api.extension.ParameterResolver; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteWebDriver; import org.testcontainers.containers.BrowserWebDriverContainer; +import static org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL; /** @@ -14,14 +20,38 @@ import org.testcontainers.containers.BrowserWebDriverContainer; * {@link https://www.testcontainers.org/modules/webdriver_containers/ Testcontainers}. * @author Kai Moritz */ -public class WebDriverExtension implements BeforeEachCallback +@Slf4j +public class WebDriverExtension implements BeforeAllCallback, ParameterResolver { BrowserWebDriverContainer chrome; @Override - public void beforeEach(ExtensionContext context) throws Exception + public void beforeAll(ExtensionContext context) throws Exception { - chrome = new BrowserWebDriverContainer().withCapabilities(DesiredCapabilities.chrome()); + chrome = + new BrowserWebDriverContainer() + .withCapabilities(DesiredCapabilities.chrome()) + .withRecordingMode(RECORD_ALL, new File("./target/")); + log.info("Starting {}", chrome.getDockerImageName()); + chrome.start(); + log.info("Selenium-Address: {}", chrome.getSeleniumAddress()); + log.info("VNC-Address: {}", chrome.getVncAddress()); + } + + @Override + public boolean supportsParameter( + ParameterContext parameterContext, + ExtensionContext extensionContext) + { + return parameterContext.getParameter().getType() == RemoteWebDriver.class; + } + + @Override + public Object resolveParameter( + ParameterContext parameterContext, + ExtensionContext extensionContext) + { + return chrome.getWebDriver(); } }