WIP
[demos/spring-boot] / src / test / java / de / juplo / demo / WebDriverExtension.java
index 25de95f..9de61bb 100644 (file)
@@ -1,10 +1,15 @@
 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;
 
 
@@ -14,14 +19,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(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();
   }
 }