diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java index 679e1d32160bac1933771ce4f18e29a8de4d463d..fae8ed6ff1d570425b1b2c9b08b279b41b68abf4 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java @@ -1,28 +1,19 @@ package de.deadlocker8.budgetmaster.integration.selenium; -import de.deadlocker8.budgetmaster.Main; import de.deadlocker8.budgetmaster.accounts.Account; import de.deadlocker8.budgetmaster.accounts.AccountState; import de.deadlocker8.budgetmaster.accounts.AccountType; import de.deadlocker8.budgetmaster.authentication.UserService; -import de.deadlocker8.budgetmaster.integration.helpers.*; -import de.deadlocker8.budgetmaster.search.Search; -import org.junit.jupiter.api.BeforeEach; +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.Test; -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.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; -import org.springframework.test.annotation.DirtiesContext; import java.io.File; import java.util.Arrays; @@ -31,16 +22,12 @@ import java.util.stream.Collectors; 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 AccountTest extends SeleniumTestBase { private IntegrationTestHelper helper; - @BeforeEach - public void prepare() + @BeforeAll + public void beforeAll() { helper = new IntegrationTestHelper(driver, port); helper.start(); @@ -66,6 +53,10 @@ class AccountTest extends SeleniumTestBase void test_newAccount_cancel() { driver.get(helper.getUrl() + "/accounts"); + + List<WebElement> accountRows = driver.findElements(By.cssSelector(".account-container tr")); + final int numberOfAccountsBefore = accountRows.size(); + driver.findElement(By.id("button-new-account")).click(); // click cancel button @@ -79,8 +70,8 @@ class AccountTest extends SeleniumTestBase // assert assertThat(driver.getCurrentUrl()).endsWith("/accounts"); - List<WebElement> accountRows = driver.findElements(By.cssSelector(".account-container tr")); - assertThat(accountRows).hasSize(5); + accountRows = driver.findElements(By.cssSelector(".account-container tr")); + assertThat(accountRows).hasSize(numberOfAccountsBefore); } @Test @@ -127,6 +118,8 @@ class AccountTest extends SeleniumTestBase @Test void test_readOnly_newTransaction_listOnlyReadableAccounts() { + TransactionTestHelper.selectGlobalAccountByName(driver, "sfsdf"); + driver.get(helper.getUrl() + "/transactions"); driver.findElement(By.id("button-new-transaction")).click(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java index 9fdc602e081e2459056db5a0a939a243875aa90c..3a8df7064272f54530895a4c32639b243dfb06d2 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java @@ -1,23 +1,18 @@ 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.IntegrationTestHelper; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTest; import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestWatcher; +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.Keys; 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.util.Arrays; @@ -25,16 +20,12 @@ 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 CategorySelectTest extends SeleniumTestBase { private IntegrationTestHelper helper; - @BeforeEach - public void prepare() + @BeforeAll + public void beforeAll() { helper = new IntegrationTestHelper(driver, port); helper.start(); @@ -48,7 +39,11 @@ class CategorySelectTest 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/ChangeTransactionTypeTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChangeTransactionTypeTest.java index ac6464ab2a36d2d61013b29bf788f93abcb5c6af..b0ebb34843f7febb0c98806c4bc62a8f817d9de8 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChangeTransactionTypeTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChangeTransactionTypeTest.java @@ -1,21 +1,19 @@ 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 org.junit.jupiter.api.BeforeEach; +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.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.openqa.selenium.By; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; 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.util.Arrays; @@ -24,10 +22,6 @@ 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 ChangeTransactionTypeTest extends SeleniumTestBase { private IntegrationTestHelper helper; @@ -51,8 +45,8 @@ class ChangeTransactionTypeTest extends SeleniumTestBase assertThat(driver.findElement(By.id("modalChangeTransactionType")).isDisplayed()).isTrue(); } - @BeforeEach - public void prepare() + @BeforeAll + public void beforeAll() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java index 5208fbff0d0e38e6824b07d1931af09d89701b17..64f2657444d5655a74e850e4c1892b8f085e1c47 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java @@ -1,29 +1,19 @@ 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.charts.ChartDisplayType; import de.deadlocker8.budgetmaster.charts.ChartGroupType; import de.deadlocker8.budgetmaster.integration.helpers.IntegrationTestHelper; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTest; import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestWatcher; -import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; 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.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; -import org.springframework.test.annotation.DirtiesContext; import java.io.File; import java.util.Arrays; @@ -31,10 +21,6 @@ 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 ChartTest extends SeleniumTestBase { private final String SELECTOR_ACTIVE_DISPLAY_TYPE = ".button-display-type.active"; @@ -44,8 +30,8 @@ class ChartTest extends SeleniumTestBase private IntegrationTestHelper helper; - @BeforeEach - public void prepare() + @BeforeAll + public void beforeAll() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FirstUseTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FirstUseTest.java index 7f3c6456807532d0729c9ebc42a64db95e0b9625..f4c70399875fd234d522e7a0d0e9a7c3da920216 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FirstUseTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FirstUseTest.java @@ -1,31 +1,21 @@ package de.deadlocker8.budgetmaster.integration.selenium; -import de.deadlocker8.budgetmaster.Main; import de.deadlocker8.budgetmaster.authentication.UserService; import de.deadlocker8.budgetmaster.integration.helpers.IntegrationTestHelper; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTest; import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestWatcher; -import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.openqa.selenium.By; 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 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 FirstUseTest extends SeleniumTestBase { private IntegrationTestHelper helper; - @BeforeEach + @BeforeAll public void prepare() { helper = new IntegrationTestHelper(driver, port); @@ -38,6 +28,8 @@ class FirstUseTest extends SeleniumTestBase @Test void test_firstUserBanner() { + helper.start(); + WebDriverWait wait = new WebDriverWait(driver, 5); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("hint-1"))); assertThat(driver.findElement(By.id("hint-1")).isDisplayed()).isTrue(); @@ -46,6 +38,8 @@ class FirstUseTest extends SeleniumTestBase @Test void test_firstUserBanner_dismiss() { + helper.start(); + WebDriverWait wait = new WebDriverWait(driver, 5); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("hint-1"))); @@ -58,6 +52,8 @@ class FirstUseTest extends SeleniumTestBase @Test void test_firstUserBanner_click() { + helper.start(); + WebDriverWait wait = new WebDriverWait(driver, 5); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("hint-1"))); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/HotkeyTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/HotkeyTest.java index cce9b77034ccb88ec4c15dcefd23ad79f23ab96d..a42244274196c1c9031c64e97d99e46b298138df 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/HotkeyTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/HotkeyTest.java @@ -1,14 +1,15 @@ 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 de.thecodelabs.utils.util.OS; +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.Keys; import org.openqa.selenium.WebElement; @@ -16,8 +17,6 @@ import org.openqa.selenium.interactions.Action; import org.openqa.selenium.interactions.Actions; 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.util.Arrays; @@ -26,15 +25,11 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assumptions.assumeTrue; -@ExtendWith(SeleniumTestWatcher.class) -@SpringBootTest(classes = Main.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) -@SeleniumTest class HotkeyTest extends SeleniumTestBase { private IntegrationTestHelper helper; - @BeforeEach + @BeforeAll public void prepare() { helper = new IntegrationTestHelper(driver, port); @@ -50,6 +45,15 @@ class HotkeyTest extends SeleniumTestBase helper.uploadDatabase(path, Arrays.asList("DefaultAccount0815", "sfsdf"), List.of(account1, account2)); } + @BeforeEach + public void beforeEach() + { + helper.start(); + + WebDriverWait wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("logo-home"))); + } + @Test void hotkey_newTransaction_normal() { diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ImportTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ImportTest.java index b3eff6b6c0582c2d88c99fe626dec9de8d409efc..dda9565f6a978bdc24b20da978df4af0e9ec9de7 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ImportTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ImportTest.java @@ -1,26 +1,16 @@ 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.IntegrationTestHelper; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTest; import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestWatcher; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.annotation.DirtiesContext; import java.io.File; import java.util.Arrays; import java.util.List; -@ExtendWith(SeleniumTestWatcher.class) -@SpringBootTest(classes = Main.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) -@SeleniumTest class ImportTest extends SeleniumTestBase { @Test diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/LoginControllerTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/LoginControllerTest.java index 9708909b8d05efec2e0af05bc9f292e4fb037241..b0b67fd891e24b2b0daa0ceca62bc415f293c7f5 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/LoginControllerTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/LoginControllerTest.java @@ -1,26 +1,16 @@ package de.deadlocker8.budgetmaster.integration.selenium; -import de.deadlocker8.budgetmaster.Main; import de.deadlocker8.budgetmaster.authentication.UserService; import de.deadlocker8.budgetmaster.integration.helpers.IntegrationTestHelper; -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.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebElement; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.annotation.DirtiesContext; 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 LoginControllerTest extends SeleniumTestBase { @Test diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java index 86f50db823ed146ff57ce4ab2a84e0a75604962c..74c3e6d981fd875531ba90756bcf525cdf42fafd 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java @@ -1,30 +1,19 @@ 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.IntegrationTestHelper; -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.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.Keys; -import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; -import org.springframework.test.annotation.DirtiesContext; import java.io.File; import java.util.Arrays; @@ -32,16 +21,12 @@ 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 NewTransactionFromTemplateTest extends SeleniumTestBase { private IntegrationTestHelper helper; - @BeforeEach - public void prepare() + @BeforeAll + public void beforeAll() { helper = new IntegrationTestHelper(driver, port); helper.start(); @@ -54,7 +39,11 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase final Account account2 = new Account("Account2", AccountType.CUSTOM); helper.uploadDatabase(path, Arrays.asList("DefaultAccount0815", "sfsdf"), List.of(account1, account2)); - // open transactions page + } + + @BeforeEach + public void beforeEach() + { driver.get(helper.getUrl() + "/transactions"); driver.findElement(By.id("button-new-transaction")).click(); } diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java index 452e5c946628fd6839a543ebc108203fd85986ff..adcb7e575ff6ef32559701a76f584e6d2e6bc4b4 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java @@ -1,20 +1,19 @@ 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.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; @@ -24,16 +23,12 @@ 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 NewTransactionNormalTest extends SeleniumTestBase { private IntegrationTestHelper helper; - @BeforeEach - public void prepare() + @BeforeAll + public void beforeAll() { helper = new IntegrationTestHelper(driver, port); helper.start(); @@ -46,8 +41,16 @@ class NewTransactionNormalTest extends SeleniumTestBase final Account account2 = new Account("Account2", AccountType.CUSTOM); helper.uploadDatabase(path, Arrays.asList("DefaultAccount0815", "sfsdf"), List.of(account1, account2)); - // open transactions page + } + + @BeforeEach + public void beforeEach() + { driver.get(helper.getUrl() + "/transactions"); + } + + private void openNewTransactionPage() + { driver.findElement(By.id("button-new-transaction")).click(); WebDriverWait wait = new WebDriverWait(driver, 5); @@ -62,6 +65,11 @@ class NewTransactionNormalTest extends SeleniumTestBase @Test void test_newTransaction_cancel() { + List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); + final int numberOfTransactionsBefore = transactionsRows.size(); + + openNewTransactionPage(); + // click cancel button WebElement cancelButton = driver.findElement(By.id("button-cancel-save-transaction")); ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", cancelButton); @@ -73,13 +81,18 @@ class NewTransactionNormalTest extends SeleniumTestBase // assert assertThat(driver.getCurrentUrl()).endsWith("/transactions"); - List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); - assertThat(transactionsRows).hasSize(1); + transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); + assertThat(transactionsRows).hasSize(numberOfTransactionsBefore); } @Test void test_newTransaction_income() { + List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); + final int numberOfTransactionsBefore = transactionsRows.size(); + + openNewTransactionPage(); + String name = "My normal transaction"; String amount = "15.00"; String description = "Lorem Ipsum dolor sit amet"; @@ -101,8 +114,8 @@ class NewTransactionNormalTest extends SeleniumTestBase // assert assertThat(driver.getCurrentUrl()).endsWith("/transactions"); - List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); - assertThat(transactionsRows).hasSize(2); + transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); + assertThat(transactionsRows).hasSize(numberOfTransactionsBefore + 1); final WebElement row = transactionsRows.get(0); final List<WebElement> columns = row.findElements(By.className("col")); @@ -116,6 +129,11 @@ class NewTransactionNormalTest extends SeleniumTestBase @Test void test_newTransaction_expenditure() { + List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); + final int numberOfTransactionsBefore = transactionsRows.size(); + + openNewTransactionPage(); + String name = "My normal transaction"; String amount = "15.00"; String description = "Lorem Ipsum dolor sit amet"; @@ -137,8 +155,8 @@ class NewTransactionNormalTest extends SeleniumTestBase // assert assertThat(driver.getCurrentUrl()).endsWith("/transactions"); - List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); - assertThat(transactionsRows).hasSize(2); + transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); + assertThat(transactionsRows).hasSize(numberOfTransactionsBefore + 1); final WebElement row = transactionsRows.get(0); final List<WebElement> columns = row.findElements(By.className("col")); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java index 7b3fb0566dbe8515f8a80f838de1d084b45846d9..9860d301ab2543e2f4c90701b155e7a3c4fb19e7 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java @@ -1,20 +1,19 @@ 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.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; @@ -24,16 +23,13 @@ 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 NewTransactionRecurringTest extends SeleniumTestBase { private IntegrationTestHelper helper; - @BeforeEach - public void prepare() + @BeforeAll + public void beforeALl() { helper = new IntegrationTestHelper(driver, port); helper.start(); @@ -46,7 +42,11 @@ class NewTransactionRecurringTest 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() + { openNewTransactionPage("Transaction"); } @@ -204,7 +204,8 @@ class NewTransactionRecurringTest extends SeleniumTestBase @Test void test_newTransaction_transfer() { - openNewTransactionPage("Transfer"); + final String type = "Transfer"; + openNewTransactionPage(type); String name = "My recurring transfer"; String amount = "30.00"; @@ -271,7 +272,9 @@ class NewTransactionRecurringTest extends SeleniumTestBase final String dateString = new SimpleDateFormat("03.MM.").format(new Date()); TransactionTestHelper.assertTransactionColumns(columns, dateString, categoryName, "rgb(46, 124, 43)", true, true, name, description, amount); - driver.get(helper.getUrl() + "/transactions/26/edit"); + // open transaction in edit view again + columns.get(5).findElement(By.cssSelector("a")).click(); + wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Edit " + type)); assertThat(driver.findElement(By.cssSelector(".account-select-wrapper .custom-select-selected-item .category-circle")).getAttribute("data-value")).isEqualTo("2"); assertThat(driver.findElement(By.cssSelector(".transfer-account-select-wrapper .custom-select-selected-item .category-circle")).getAttribute("data-value")).isEqualTo("4"); 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 cb2be683fe054ae9b4c19dc50d28703b0681c908..dba9e589da287411bdac9db3f5b5782db1e73f75 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java @@ -49,6 +49,10 @@ class NewTransactionTransferTest extends SeleniumTestBase public void beforeEach() { // open transactions page driver.get(helper.getUrl() + "/transactions"); + } + + private void openNewTransactionPage() + { driver.findElement(By.id("button-new-transaction")).click(); WebDriverWait wait = new WebDriverWait(driver, 5); @@ -63,6 +67,14 @@ class NewTransactionTransferTest extends SeleniumTestBase @Test void test_newTransaction_cancel() { + // open transactions page + driver.get(helper.getUrl() + "/transactions"); + + List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); + final int numberOfTransactionsBefore = transactionsRows.size(); + + openNewTransactionPage(); + // click cancel button WebElement cancelButton = driver.findElement(By.id("button-cancel-save-transaction")); ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", cancelButton); @@ -74,13 +86,15 @@ class NewTransactionTransferTest extends SeleniumTestBase // assert assertThat(driver.getCurrentUrl()).endsWith("/transactions"); - List<WebElement> transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); - assertThat(transactionsRows).hasSize(1); + transactionsRows = driver.findElements(By.cssSelector(".transaction-container .hide-on-med-and-down.transaction-row-top")); + assertThat(transactionsRows).hasSize(numberOfTransactionsBefore); } @Test void test_newTransaction_transfer() { + openNewTransactionPage(); + String name = "My transfer transaction"; String amount = "15.00"; String description = "Lorem Ipsum dolor sit amet"; 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 476ff3a773fa53462a450f75cd3d699bbd3758dd..2581feaf03b3722a533279da3dffec33f61a3030 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java @@ -1,24 +1,17 @@ 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.IntegrationTestHelper; -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.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebElement; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.annotation.DirtiesContext; import java.io.File; import java.util.Arrays; diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/WhatsNewTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/WhatsNewTest.java index fc447467a636cddd6557c1880aa3abbe17974387..ac437e9cdd1921067f0d96e3f4a404041a77ea98 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/WhatsNewTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/WhatsNewTest.java @@ -1,34 +1,22 @@ package de.deadlocker8.budgetmaster.integration.selenium; -import de.deadlocker8.budgetmaster.Main; import de.deadlocker8.budgetmaster.authentication.UserService; import de.deadlocker8.budgetmaster.integration.helpers.IntegrationTestHelper; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTest; import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestWatcher; -import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.openqa.selenium.By; 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 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 WhatsNewTest extends SeleniumTestBase { - private IntegrationTestHelper helper; - - @BeforeEach + @BeforeAll public void prepare() { - helper = new IntegrationTestHelper(driver, port); + IntegrationTestHelper helper = new IntegrationTestHelper(driver, port); helper.start(); helper.login(UserService.DEFAULT_PASSWORD); helper.hideBackupReminder();