diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestBase.java b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestBase.java index 5c3a9432f6591e7b5d7aaf9ed0ce09d977afa010..cab15704c65752f1015f8d0da0c6907b6f0a20f5 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestBase.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestBase.java @@ -1,11 +1,20 @@ package de.deadlocker8.budgetmaster.integration.helpers; -import org.junit.jupiter.api.BeforeEach; +import de.deadlocker8.budgetmaster.Main; +import org.junit.jupiter.api.*; +import org.junit.jupiter.api.extension.ExtendWith; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.test.annotation.DirtiesContext; +@SpringBootTest(classes = Main.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ExtendWith(SeleniumTestWatcher.class) +@DirtiesContext +@SeleniumTest +@TestInstance(TestInstance.Lifecycle.PER_CLASS) public class SeleniumTestBase { protected WebDriver driver; @@ -13,8 +22,9 @@ public class SeleniumTestBase @LocalServerPort protected int port; - @BeforeEach - public final void init() + @Order(1) + @BeforeAll + public void init() { FirefoxOptions options = new FirefoxOptions(); options.setHeadless(false); @@ -23,6 +33,11 @@ public class SeleniumTestBase driver.manage().window().maximize(); } + @AfterAll + public void afterAll() { + driver.quit(); + } + public WebDriver getDriver() { return driver; diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestWatcher.java b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestWatcher.java index f802c3c9deb5d3810011f9d0a02e80cbb99e1258..be160519b52a2e0c1f72a1fbbeca7fef67def736 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestWatcher.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestWatcher.java @@ -6,26 +6,11 @@ import org.openqa.selenium.WebDriver; public class SeleniumTestWatcher implements TestWatcher { - @Override - public void testSuccessful(ExtensionContext context) - { - final WebDriver driver = getDriver(context); - driver.quit(); - } - - @Override - public void testAborted(ExtensionContext context, Throwable cause) - { - final WebDriver driver = getDriver(context); - driver.quit(); - } - @Override public void testFailed(ExtensionContext context, Throwable cause) { final WebDriver driver = getDriver(context); IntegrationTestHelper.saveScreenshots(driver, context.getRequiredTestMethod().getName(), context.getRequiredTestClass().getSimpleName()); - driver.quit(); } private WebDriver getDriver(ExtensionContext context) diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java index 141bad3f8ed1cedeb4f42aebf2b6642a763017d5..cb2be683fe054ae9b4c19dc50d28703b0681c908 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java @@ -1,21 +1,20 @@ package de.deadlocker8.budgetmaster.integration.selenium; -import de.deadlocker8.budgetmaster.Main; import de.deadlocker8.budgetmaster.accounts.Account; import de.deadlocker8.budgetmaster.accounts.AccountType; import de.deadlocker8.budgetmaster.authentication.UserService; -import de.deadlocker8.budgetmaster.integration.helpers.*; +import de.deadlocker8.budgetmaster.integration.helpers.IntegrationTestHelper; +import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase; +import de.deadlocker8.budgetmaster.integration.helpers.TransactionTestHelper; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.annotation.DirtiesContext; import java.io.File; import java.text.SimpleDateFormat; @@ -26,15 +25,11 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -@ExtendWith(SeleniumTestWatcher.class) -@SpringBootTest(classes = Main.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) -@SeleniumTest class NewTransactionTransferTest extends SeleniumTestBase { private IntegrationTestHelper helper; - @BeforeEach + @BeforeAll public void prepare() { helper = new IntegrationTestHelper(driver, port); @@ -48,6 +43,10 @@ class NewTransactionTransferTest extends SeleniumTestBase final Account account2 = new Account("Account2", AccountType.CUSTOM); helper.uploadDatabase(path, Arrays.asList("DefaultAccount0815", "sfsdf"), List.of(account1, account2)); + } + + @BeforeEach + public void beforeEach() { // open transactions page driver.get(helper.getUrl() + "/transactions"); driver.findElement(By.id("button-new-transaction")).click(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java index a4d6e2944f60125cd5660738a3ad7fa010237f9d..476ff3a773fa53462a450f75cd3d699bbd3758dd 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java @@ -9,19 +9,15 @@ import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTest; import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase; import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestWatcher; import de.thecodelabs.utils.util.Localization; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.jupiter.api.extension.TestWatcher; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; -import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.firefox.FirefoxOptions; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; import org.springframework.test.annotation.DirtiesContext; import java.io.File; @@ -30,14 +26,9 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; - -@ExtendWith(SeleniumTestWatcher.class) -@SpringBootTest(classes = Main.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) -@SeleniumTest class SearchTest extends SeleniumTestBase { - @BeforeEach + @BeforeAll public void prepare() { IntegrationTestHelper helper = new IntegrationTestHelper(driver, port); @@ -51,6 +42,10 @@ class SearchTest extends SeleniumTestBase final Account account2 = new Account("Account2", AccountType.CUSTOM); helper.uploadDatabase(path, Arrays.asList("DefaultAccount0815", "sfsdf"), List.of(account1, account2)); + } + + @BeforeEach + public void beforeEach() { // search WebElement inputSearch = driver.findElement(By.id("search")); inputSearch.sendKeys("e");