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;
* {@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(BrowserWebDriverContainer.VncRecordingMode.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();
}
}