Skip to content

Commit

Permalink
Upgrade test to junit 5
Browse files Browse the repository at this point in the history
  • Loading branch information
tddang-linagora committed Jul 18, 2024
1 parent 6ca88ba commit 019eb5d
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 93 deletions.
16 changes: 13 additions & 3 deletions tmail_selenium/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,19 @@

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.10.3</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.10.3</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.10.3</version>
</dependency>

<dependency>
Expand Down
101 changes: 37 additions & 64 deletions tmail_selenium/src/main/java/com/tmail/base/TestBase.java
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
package com.tmail.base;

import java.util.Arrays;
import java.util.Collection;
import java.util.Properties;
import java.util.stream.Stream;

import org.junit.After;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;

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;

@RunWith(Parameterized.class)
public abstract class TestBase {
private static Playwright playwright = Playwright.create();
private Browser browser;
private BrowserContext browserContext;
private Page page;
private static Playwright playwright;
private static Browser browser;
private static BrowserContext browserContext;
private static Page page;

protected BaseScenario scenario;
protected Properties properties;

public TestBase(Browser browser, BrowserContext browserContext, Page page) {
this.browser = browser;
this.browserContext = browserContext;
this.page = page;
private Boolean runHeadlessTest = false;

public TestBase() {
properties = new Properties();
ClassLoader loader = getClass().getClassLoader();
try {
Expand All @@ -37,64 +37,37 @@ public TestBase(Browser browser, BrowserContext browserContext, Page page) {
}
}

@Parameterized.Parameters
public static Collection<Object[]> data() {
Boolean runHeadlessTest = false;
int size = SupportedPlatform.values().length;
Object[][] parameters = new Object[size][2];
for (int i = 0; i < size; i++) {
SupportedPlatform platform = SupportedPlatform.values()[i];
Object[] config = new Object[2];
switch (platform) {
case CHROME:
config = configTestForChrome(runHeadlessTest);
break;
case FIREFOX:
config = configTestForFirefox(runHeadlessTest);
break;
default:
throw new UnsupportedPlatformException();
}
parameters[i] = config;
}

return Arrays.asList(parameters);
}

public void testUseCase(BaseScenario useCase) {
useCase.execute(page);
@BeforeAll
static void setUpAll() {
playwright = Playwright.create();
}

private static Object[] configTestForChrome(Boolean headless) {
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(headless));
BrowserContext browserContext = browser.newContext();
Page page = browserContext.newPage();
Object[] config = new Object[3];
config[0] = browser;
config[1] = browserContext;
config[2] = page;
return config;
@AfterEach
public void tearDown() {
page.close();
browserContext.close();
browser.close();
}

private static Object[] configTestForFirefox(Boolean headless) {
Browser browser = playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(headless));
BrowserContext browserContext = browser.newContext();
Page page = browserContext.newPage();
Object[] config = new Object[3];
config[0] = browser;
config[1] = browserContext;
config[2] = page;
return config;
@AfterAll
static void tearDownAll() {
playwright.close();
}

private void dispose() {
page.close();
browserContext.close();
browser.close();
static Stream<SupportedPlatform> supportedPlatforms() {
return Arrays.asList(SupportedPlatform.values()).stream();
}

@After
public void tearDown() {
dispose();
@ParameterizedTest
@MethodSource("supportedPlatforms")
public void testScenario(SupportedPlatform supportedPlatform) {
browser = switch (supportedPlatform) {
case CHROME -> playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(runHeadlessTest));
case FIREFOX -> playwright.firefox().launch(new BrowserType.LaunchOptions().setHeadless(runHeadlessTest));
default -> throw new UnsupportedPlatformException();
};
browserContext = browser.newContext();
page = browserContext.newPage();
scenario.execute(page);
}
}
Original file line number Diff line number Diff line change
@@ -1,25 +1,16 @@
package com.tmail.preprod.oidc.composeEmail;

import org.junit.Test;

import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.Page;
import com.tmail.base.TestBase;
import com.tmail.scenarios.ComposeEmailScenario;

public class ComposeEmailTest extends TestBase {

public ComposeEmailTest(Browser browser, BrowserContext browserContext, Page page) {
super(browser, browserContext, page);
}

@Test
public void testComposeEmail() {
testUseCase(new ComposeEmailScenario(
ComposeEmailTest() {
scenario = new ComposeEmailScenario(
properties.getProperty("app.hostUrl"),
properties.getProperty("user.name"),
properties.getProperty("user.password"),
properties.getProperty("user.additionalMailRecipent")));
properties.getProperty("user.additionalMailRecipent"));
}

}
Original file line number Diff line number Diff line change
@@ -1,24 +1,15 @@
package com.tmail.preprod.oidc.login;

import org.junit.Test;

import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.Page;
import com.tmail.base.TestBase;
import com.tmail.scenarios.LoginScenario;

public class LoginTest extends TestBase {

public LoginTest(Browser browser, BrowserContext browserContext, Page page) {
super(browser, browserContext, page);
}

@Test
public void testLogin() {
testUseCase(new LoginScenario(
LoginTest() {
scenario = new LoginScenario(
properties.getProperty("app.hostUrl"),
properties.getProperty("user.name"),
properties.getProperty("user.password")));
properties.getProperty("user.password"));
}

}

0 comments on commit 019eb5d

Please sign in to comment.