WIP
[demos/spring-boot] / src / test / java / de / juplo / demo / WebDriverExtension.java
1 package de.juplo.demo;
2
3
4 import java.io.File;
5 import lombok.extern.slf4j.Slf4j;
6 import org.junit.jupiter.api.extension.BeforeAllCallback;
7 import org.junit.jupiter.api.extension.ExtensionContext;
8 import org.junit.jupiter.api.extension.ParameterContext;
9 import org.junit.jupiter.api.extension.ParameterResolver;
10 import org.openqa.selenium.WebDriver;
11 import org.openqa.selenium.remote.DesiredCapabilities;
12 import org.openqa.selenium.remote.RemoteWebDriver;
13 import org.testcontainers.containers.BrowserWebDriverContainer;
14 import static org.testcontainers.containers.BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL;
15
16
17 /**
18  * An Extension for JUnit Jupiter, that starts a {@link WebDriver} with the
19  * help of
20  * {@link https://www.testcontainers.org/modules/webdriver_containers/ Testcontainers}.
21  * @author Kai Moritz
22  */
23 @Slf4j
24 public class WebDriverExtension implements BeforeAllCallback, ParameterResolver
25 {
26   BrowserWebDriverContainer chrome;
27
28
29   @Override
30   public void beforeAll(ExtensionContext context) throws Exception
31   {
32     chrome =
33         new BrowserWebDriverContainer()
34             .withCapabilities(DesiredCapabilities.chrome())
35             .withRecordingMode(RECORD_ALL, new File("./target/"));
36     log.info("Starting {}", chrome.getDockerImageName());
37     chrome.start();
38     log.info("Selenium-Address: {}", chrome.getSeleniumAddress());
39     log.info("VNC-Address: {}", chrome.getVncAddress());
40   }
41
42   @Override
43   public boolean supportsParameter(
44       ParameterContext parameterContext,
45       ExtensionContext extensionContext)
46   {
47     return parameterContext.getParameter().getType() == RemoteWebDriver.class;
48   }
49
50   @Override
51   public Object resolveParameter(
52       ParameterContext parameterContext,
53       ExtensionContext extensionContext)
54   {
55     return chrome.getWebDriver();
56   }
57 }