From b12c6fa0e095641221af4e4e48f8c21b3ec22736 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 9 Oct 2021 21:23:18 +0200 Subject: [PATCH] #645 - adapted remaining tests --- .../integration/selenium/AccountTest.java | 35 +++++------- .../selenium/CategorySelectTest.java | 19 +++---- .../selenium/ChangeTransactionTypeTest.java | 18 +++---- .../integration/selenium/ChartTest.java | 20 ++----- .../integration/selenium/FirstUseTest.java | 20 +++---- .../integration/selenium/HotkeyTest.java | 24 +++++---- .../integration/selenium/ImportTest.java | 10 ---- .../selenium/LoginControllerTest.java | 10 ---- .../NewTransactionFromTemplateTest.java | 27 +++------- .../selenium/NewTransactionNormalTest.java | 54 ++++++++++++------- .../selenium/NewTransactionRecurringTest.java | 29 +++++----- .../selenium/NewTransactionTransferTest.java | 18 ++++++- .../integration/selenium/SearchTest.java | 7 --- .../integration/selenium/WhatsNewTest.java | 18 ++----- 14 files changed, 131 insertions(+), 178 deletions(-) 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 679e1d321..fae8ed6ff 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 9fdc602e0..3a8df7064 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 ac6464ab2..b0ebb3484 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 5208fbff0..64f265744 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 7f3c64568..f4c703998 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 cce9b7703..a42244274 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 b3eff6b6c..dda9565f6 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 9708909b8..b0b67fd89 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 86f50db82..74c3e6d98 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 452e5c946..adcb7e575 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 7b3fb0566..9860d301a 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 cb2be683f..dba9e589d 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 476ff3a77..2581feaf0 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 fc447467a..ac437e9cd 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(); -- GitLab