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 org.junit.jupiter.api.extension.BeforeEachCallback;
6 import org.junit.jupiter.api.extension.ExtensionContext;
7 import org.junit.jupiter.api.extension.ParameterContext;
8 import org.junit.jupiter.api.extension.ParameterResolver;
9 import org.openqa.selenium.WebDriver;
10 import org.openqa.selenium.remote.DesiredCapabilities;
11 import org.openqa.selenium.remote.RemoteWebDriver;
12 import org.testcontainers.containers.BrowserWebDriverContainer;
13
14
15 /**
16  * An Extension for JUnit Jupiter, that starts a {@link WebDriver} with the
17  * help of
18  * {@link https://www.testcontainers.org/modules/webdriver_containers/ Testcontainers}.
19  * @author Kai Moritz
20  */
21 public class WebDriverExtension implements BeforeEachCallback, ParameterResolver
22 {
23   BrowserWebDriverContainer chrome;
24
25
26   @Override
27   public void beforeEach(ExtensionContext context) throws Exception
28   {
29     chrome =
30         new BrowserWebDriverContainer()
31             .withCapabilities(DesiredCapabilities.chrome())
32             .withRecordingMode(BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL, new File("./target/"));
33   }
34
35   @Override
36   public boolean supportsParameter(
37       ParameterContext parameterContext,
38       ExtensionContext extensionContext)
39   {
40     return parameterContext.getParameter().getType() == RemoteWebDriver.class;
41   }
42
43   @Override
44   public Object resolveParameter(
45       ParameterContext parameterContext,
46       ExtensionContext extensionContext)
47   {
48     return chrome.getWebDriver();
49   }
50 }