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;
16 * An Extension for JUnit Jupiter, that starts a {@link WebDriver} with the
18 * {@link https://www.testcontainers.org/modules/webdriver_containers/ Testcontainers}.
21 public class WebDriverExtension implements BeforeEachCallback, ParameterResolver
23 BrowserWebDriverContainer chrome;
27 public void beforeEach(ExtensionContext context) throws Exception
30 new BrowserWebDriverContainer()
31 .withCapabilities(DesiredCapabilities.chrome())
32 .withRecordingMode(BrowserWebDriverContainer.VncRecordingMode.RECORD_ALL, new File("./target/"));
36 public boolean supportsParameter(
37 ParameterContext parameterContext,
38 ExtensionContext extensionContext)
40 return parameterContext.getParameter().getType() == RemoteWebDriver.class;
44 public Object resolveParameter(
45 ParameterContext parameterContext,
46 ExtensionContext extensionContext)
48 return chrome.getWebDriver();