ada01f51c6112adc6a78a01818e45eedb3b69a51
[demos/spring-boot] / src / test / java / de / juplo / demo / WebDriverExtension.java
1 package de.juplo.demo;
2
3
4 import org.junit.jupiter.api.extension.BeforeEachCallback;
5 import org.junit.jupiter.api.extension.ExtensionContext;
6 import org.junit.jupiter.api.extension.ParameterContext;
7 import org.junit.jupiter.api.extension.ParameterResolver;
8 import org.openqa.selenium.WebDriver;
9 import org.openqa.selenium.remote.DesiredCapabilities;
10 import org.openqa.selenium.remote.RemoteWebDriver;
11 import org.testcontainers.containers.BrowserWebDriverContainer;
12
13
14 /**
15  * An Extension for JUnit Jupiter, that starts a {@link WebDriver} with the
16  * help of
17  * {@link https://www.testcontainers.org/modules/webdriver_containers/ Testcontainers}.
18  * @author Kai Moritz
19  */
20 public class WebDriverExtension implements BeforeEachCallback, ParameterResolver
21 {
22   BrowserWebDriverContainer chrome;
23
24
25   @Override
26   public void beforeEach(ExtensionContext context) throws Exception
27   {
28     chrome = new BrowserWebDriverContainer().withCapabilities(DesiredCapabilities.chrome());
29   }
30
31   @Override
32   public boolean supportsParameter(
33       ParameterContext parameterContext,
34       ExtensionContext extensionContext)
35   {
36     return parameterContext.getParameter().getType() == RemoteWebDriver.class;
37   }
38
39   @Override
40   public Object resolveParameter(
41       ParameterContext parameterContext,
42       ExtensionContext extensionContext)
43   {
44     return chrome.getWebDriver();
45   }
46 }