forked from urlaubsverwaltung/urlaubsverwaltung
/
PageParameterResolver.java
51 lines (41 loc) · 2.18 KB
/
PageParameterResolver.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package org.synyx.urlaubsverwaltung.ui.extension;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ParameterContext;
import org.junit.jupiter.api.extension.ParameterResolutionException;
import org.junit.jupiter.api.extension.ParameterResolver;
import java.nio.file.Paths;
import static org.synyx.urlaubsverwaltung.ui.extension.UiTestStore.setBrowser;
import static org.synyx.urlaubsverwaltung.ui.extension.UiTestStore.setBrowserContext;
import static org.synyx.urlaubsverwaltung.ui.extension.UiTestStore.setPage;
import static org.synyx.urlaubsverwaltung.ui.extension.UiTestStore.setPlaywright;
public class PageParameterResolver implements ParameterResolver {
@Override
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
return parameterContext.getParameter().getType() == Page.class;
}
@Override
public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
final Playwright playwright = Playwright.create();
final Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setSlowMo(200));
final BrowserContext browserContext = browser.newContext(browserContextOptions());
final Page page = browserContext.newPage();
// elements must be closed after the tests. see BrowserSetupExtension.
setPlaywright(extensionContext, playwright);
setBrowser(extensionContext, browser);
setBrowserContext(extensionContext, browserContext);
setPage(extensionContext, page);
return page;
}
private static Browser.NewContextOptions browserContextOptions() {
return new Browser.NewContextOptions()
.setRecordVideoDir(Paths.get("target"))
.setLocale("de")
.setScreenSize(1500, 1080)
.setViewportSize(1500, 1080);
}
}