-
-
Notifications
You must be signed in to change notification settings - Fork 83
/
Copy pathBaseTest.java
75 lines (59 loc) · 2.41 KB
/
BaseTest.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package io.github.tahanima.e2e;
import static com.github.automatedowl.tools.AllureEnvironmentWriter.allureEnvironmentWriter;
import static io.github.tahanima.config.ConfigurationManager.config;
import static org.junit.jupiter.api.TestInstance.*;
import com.google.common.collect.ImmutableMap;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
import io.github.tahanima.factory.BasePageFactory;
import io.github.tahanima.ui.page.BasePage;
import io.github.tahanima.ui.page.LoginPage;
import io.github.tahanima.util.BrowserManager;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
import org.junit.jupiter.api.extension.RegisterExtension;
import java.util.Optional;
/**
* @author tahanima
*/
@TestInstance(Lifecycle.PER_CLASS)
public abstract class BaseTest {
protected Playwright playwright;
protected Browser browser;
protected BrowserContext browserContext;
protected Page page;
protected LoginPage loginPage;
@RegisterExtension
AfterTestExecutionCallback callback =
context -> {
Optional<Throwable> exception = context.getExecutionException();
if (exception.isPresent()) {
captureScreenshotOnFailure();
}
};
protected abstract byte[] captureScreenshotOnFailure();
protected <T extends BasePage> T createInstance(Class<T> basePage) {
return BasePageFactory.createInstance(page, basePage);
}
@BeforeAll
public void createPlaywrightAndBrowserInstancesAndSetupAllureEnvironment() {
playwright = Playwright.create();
browser = BrowserManager.getBrowser(playwright);
allureEnvironmentWriter(
ImmutableMap.<String, String>builder()
.put("Platform", System.getProperty("os.name"))
.put("Version", System.getProperty("os.version"))
.put("Browser", StringUtils.capitalize(config().browser()))
.put("Context URL", config().baseUrl())
.build(),
config().allureResultsDir() + "/");
}
@AfterAll
public void closeBrowserAndPlaywrightSessions() {
browser.close();
playwright.close();
}
}