From f65e5998d4756b91e0bcc0d5150a2038845bb8d3 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 30 Oct 2021 15:38:20 +0200
Subject: [PATCH] #632 - updated what's new dialog

---
 .../helpers/IntegrationTestHelper.java        | 13 ++++---
 .../integration/selenium/AccountTest.java     | 21 +++++-----
 .../selenium/CategorySelectTest.java          | 27 ++++++-------
 .../selenium/ChangeTransactionTypeTest.java   |  5 ++-
 .../integration/selenium/ChartTest.java       | 39 ++++++++++---------
 .../integration/selenium/FirstUseTest.java    |  8 ++--
 .../integration/selenium/HotkeyTest.java      | 15 +++----
 .../integration/selenium/MediaTest.java       |  3 +-
 .../NewTransactionFromExistingOneTest.java    | 23 +++++------
 .../NewTransactionFromTemplateTest.java       | 35 +++++++++--------
 .../selenium/NewTransactionNormalTest.java    | 11 +++---
 .../selenium/NewTransactionRecurringTest.java | 33 ++++++++--------
 .../selenium/NewTransactionTransferTest.java  |  9 +++--
 .../integration/selenium/WhatsNewTest.java    |  4 +-
 14 files changed, 131 insertions(+), 115 deletions(-)

diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/IntegrationTestHelper.java b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/IntegrationTestHelper.java
index 13c628764..d62e3eb84 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/IntegrationTestHelper.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/IntegrationTestHelper.java
@@ -15,6 +15,7 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.time.Duration;
 import java.util.List;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -76,7 +77,7 @@ public class IntegrationTestHelper
 	{
 		try
 		{
-			WebDriverWait wait = new WebDriverWait(driver, 2);
+			WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(2));
 			wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("modalWhatsNew")));
 
 			WebElement buttonCloseReminder = driver.findElement(By.cssSelector("#modalWhatsNew #buttonCloseWhatsNew"));
@@ -115,7 +116,7 @@ public class IntegrationTestHelper
 
 		// confirm import step 1
 		driver.findElement(By.id("buttonImport")).click();
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("button-new-account")));
 
 		// create new accounts
@@ -128,13 +129,13 @@ public class IntegrationTestHelper
 		matchAccounts(sourceAccounts, destinationAccounts);
 
 		// confirm import
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("buttonImport")));
 		final WebElement buttonImport = driver.findElement(By.id("buttonImport"));
 		buttonImport.sendKeys("");
 		buttonImport.click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("import-entity-name")));
 
 		// close result page
@@ -147,7 +148,7 @@ public class IntegrationTestHelper
 
 	private void createAccountOnImport(String accountName, AccountState accountState)
 	{
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("button-new-account")));
 		driver.findElement(By.className("button-new-account")).click();
 
@@ -186,7 +187,7 @@ public class IntegrationTestHelper
 			WebElement sourceAccount = row.findElement(By.className("account-source"));
 			assertThat(IntegrationTestHelper.getTextNode(sourceAccount)).isEqualTo(sourceAccounts.get(i));
 
-			WebDriverWait wait = new WebDriverWait(driver, 5);
+			WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 			wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("select-dropdown")));
 
 			row.findElement(By.className("select-dropdown")).click();
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 690ad0a3b..1398e25d2 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java
@@ -16,6 +16,7 @@ import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -64,7 +65,7 @@ class AccountTest extends SeleniumTestBase
 		((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", cancelButton);
 		cancelButton.click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Accounts"));
 
 		// assert
@@ -89,7 +90,7 @@ class AccountTest extends SeleniumTestBase
 		// submit form
 		driver.findElement(By.id("button-save-account")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Accounts"));
 
 		// assert
@@ -123,12 +124,12 @@ class AccountTest extends SeleniumTestBase
 		driver.get(helper.getUrl() + "/transactions");
 		driver.findElement(By.id("button-new-transaction")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]");
 		wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 		driver.findElement(locator).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
 
 		// assert
@@ -149,12 +150,12 @@ class AccountTest extends SeleniumTestBase
 		driver.get(helper.getUrl() + "/transactions");
 		driver.findElement(By.id("button-new-transaction")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]");
 		wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 		driver.findElement(locator).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
 
 		// fill form
@@ -170,7 +171,7 @@ class AccountTest extends SeleniumTestBase
 
 		driver.get(helper.getUrl() + "/transactions");
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -192,14 +193,14 @@ class AccountTest extends SeleniumTestBase
 		TransactionTestHelper.selectGlobalAccountByName(driver, "read only account");
 
 		driver.get(helper.getUrl() + "/transactions");
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("modalFilterTrigger")));
 
 		assertThat(driver.findElements(By.id("button-new-transaction"))).isEmpty();
 
 		// try to open new transaction page
 		driver.get(helper.getUrl() + "/transactions/newTransaction/normal");
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("modalFilterTrigger")));
 
 		assertThat(driver.findElement(By.cssSelector(".notification.background-yellow")).isDisplayed()).isTrue();
@@ -254,7 +255,7 @@ class AccountTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/accounts/" + accountID + "/edit");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("account-name")));
 
 		helper.selectAccountStateByName(accountState);
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 3a8df7064..a9d6698e7 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java
@@ -15,6 +15,7 @@ import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.List;
 
@@ -48,12 +49,12 @@ class CategorySelectTest extends SeleniumTestBase
 		driver.get(helper.getUrl() + "/transactions");
 		driver.findElement(By.id("button-new-transaction")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]");
 		wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 		driver.findElement(locator).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
 	}
 
@@ -62,7 +63,7 @@ class CategorySelectTest extends SeleniumTestBase
 	{
 		// navigate to category select with tab traversal
 		driver.findElement(By.tagName("body")).sendKeys(Keys.TAB);
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("label[for=transaction-amount].active")));
 
 		driver.findElement(By.tagName("body")).sendKeys(Keys.TAB);
@@ -70,7 +71,7 @@ class CategorySelectTest extends SeleniumTestBase
 
 		// open category select
 		driver.findElement(By.tagName("body")).sendKeys(Keys.ENTER);
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".category-select-wrapper .custom-select-option.selected")));
 
 		// assert
@@ -84,11 +85,11 @@ class CategorySelectTest extends SeleniumTestBase
 	{
 		// open category select
 		driver.findElement(By.cssSelector(".category-select-wrapper .custom-select-trigger")).click();
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".category-select-wrapper .custom-select-option.selected")));
 
 		driver.findElement(By.tagName("body")).sendKeys(Keys.DOWN);
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".category-select-wrapper .custom-select-option.custom-select-option-hovered[data-value=\"3\"]")));
 
 		// assert
@@ -98,7 +99,7 @@ class CategorySelectTest extends SeleniumTestBase
 				.hasFieldOrPropertyWithValue("text", "sdfdsf");
 
 		driver.findElement(By.tagName("body")).sendKeys(Keys.DOWN);
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".category-select-wrapper .custom-select-option.custom-select-option-hovered[data-value=\"4\"]")));
 
 		// assert
@@ -113,11 +114,11 @@ class CategorySelectTest extends SeleniumTestBase
 	{
 		// open category select
 		driver.findElement(By.cssSelector(".category-select-wrapper .custom-select-trigger")).click();
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".category-select-wrapper .custom-select-option.selected")));
 
 		driver.findElement(By.tagName("body")).sendKeys(Keys.UP);
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".category-select-wrapper .custom-select-option.custom-select-option-hovered[data-value=\"4\"]")));
 
 		// assert
@@ -127,7 +128,7 @@ class CategorySelectTest extends SeleniumTestBase
 				.hasFieldOrPropertyWithValue("text", "12sd");
 
 		driver.findElement(By.tagName("body")).sendKeys(Keys.UP);
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".category-select-wrapper .custom-select-option.custom-select-option-hovered[data-value=\"3\"]")));
 
 		// assert
@@ -144,13 +145,13 @@ class CategorySelectTest extends SeleniumTestBase
 		driver.findElement(By.cssSelector(".category-select-wrapper .custom-select-trigger")).click();
 
 		driver.findElement(By.tagName("body")).sendKeys(Keys.UP);
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".category-select-wrapper .custom-select-option.custom-select-option-hovered[data-value=\"4\"]")));
 
 		driver.findElement(By.tagName("body")).sendKeys(Keys.ENTER);
 
 		// assert
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.not(ExpectedConditions.attributeContains(By.cssSelector(".category-select-wrapper .custom-select"), "class", "open")));
 
 		assertThat(driver.findElement(By.cssSelector(".category-select-wrapper .custom-select-item-name")))
@@ -163,7 +164,7 @@ class CategorySelectTest extends SeleniumTestBase
 		// open category select
 		driver.findElement(By.cssSelector(".category-select-wrapper .custom-select-trigger")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".category-select-wrapper .custom-select-option.selected")));
 
 		driver.findElement(By.tagName("body")).sendKeys("s");
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 3e075b052..d7240a35b 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChangeTransactionTypeTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChangeTransactionTypeTest.java
@@ -16,6 +16,7 @@ import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.List;
 
@@ -41,7 +42,7 @@ class ChangeTransactionTypeTest extends SeleniumTestBase
 		builder.moveToElement(button).build().perform();
 
 		By changeTypeButtonSelector = By.xpath("//a[contains(@data-action-type, 'changeType')][1]");
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(changeTypeButtonSelector));
 
 		WebElement buttonChangeType = driver.findElement(changeTypeButtonSelector);
@@ -94,7 +95,7 @@ class ChangeTransactionTypeTest extends SeleniumTestBase
 		TransactionTestHelper.selectOptionFromDropdown(driver, By.cssSelector("#modalChangeTransactionType .select-wrapper"), "Transfer");
 		driver.findElement(By.id("buttonChangeTransactionType")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBe(By.cssSelector(".headline"), "Edit Transfer"));
 
 		assertThatThrownBy(() -> driver.findElement(By.className("buttonExpenditure"))).isInstanceOf(NoSuchElementException.class);
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 df6006fa3..14bb5d52a 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java
@@ -16,6 +16,7 @@ import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.List;
 
@@ -81,7 +82,7 @@ class ChartTest extends SeleniumTestBase
 		final String buttonSelector = ".button-display-type[data-value='" + ChartDisplayType.LINE.name() + "']";
 		driver.findElement(By.cssSelector(buttonSelector)).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(buttonSelector), "class", "active"));
 
 		// check display type
@@ -114,7 +115,7 @@ class ChartTest extends SeleniumTestBase
 		final String buttonSelector = ".button-display-type[data-value='" + ChartDisplayType.PIE.name() + "']";
 		driver.findElement(By.cssSelector(buttonSelector)).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(buttonSelector), "class", "active"));
 
 		// check display type
@@ -132,7 +133,7 @@ class ChartTest extends SeleniumTestBase
 		String buttonSelector = ".button-display-type[data-value='" + ChartDisplayType.PIE.name() + "']";
 		driver.findElement(By.cssSelector(buttonSelector)).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(buttonSelector), "class", "active"));
 
 		// check display type
@@ -144,7 +145,7 @@ class ChartTest extends SeleniumTestBase
 		buttonSelector = ".button-display-type[data-value='" + ChartDisplayType.BAR.name() + "']";
 		driver.findElement(By.cssSelector(buttonSelector)).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(buttonSelector), "class", "active"));
 
 		// check display type
@@ -162,7 +163,7 @@ class ChartTest extends SeleniumTestBase
 		final String buttonSelector = ".button-group-type[data-value='" + ChartGroupType.YEAR.name() + "']";
 		driver.findElement(By.cssSelector(buttonSelector)).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(buttonSelector), "class", "active"));
 
 		// check group type
@@ -191,7 +192,7 @@ class ChartTest extends SeleniumTestBase
 		final String chartPreviewSelector = ".chart-preview-column[data-id='6']";
 		driver.findElement(By.cssSelector(chartPreviewSelector)).click();
 
-		final WebDriverWait wait = new WebDriverWait(driver, 5);
+		final WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(chartPreviewSelector + " .chart-preview"), "class", "active"));
 
 		// check displayed chart previews
@@ -213,13 +214,13 @@ class ChartTest extends SeleniumTestBase
 		final String chartPreviewSelector = ".chart-preview-column[data-id='6']";
 		driver.findElement(By.cssSelector(chartPreviewSelector)).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(chartPreviewSelector + " .chart-preview"), "class", "active"));
 
 		final String buttonSelector = ".button-display-type[data-value='" + ChartDisplayType.LINE.name() + "']";
 		driver.findElement(By.cssSelector(buttonSelector)).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(buttonSelector), "class", "active"));
 
 		// check displayed chart previews
@@ -243,7 +244,7 @@ class ChartTest extends SeleniumTestBase
 		((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", checkBox);
 		checkBox.click();
 
-		final WebDriverWait wait = new WebDriverWait(driver, 5);
+		final WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("filter-button-reset")));
 
 		assertThat(driver.findElement(By.id("filterActiveBadge")).isDisplayed()).isTrue();
@@ -260,7 +261,7 @@ class ChartTest extends SeleniumTestBase
 		((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", checkBox);
 		checkBox.click();
 
-		final WebDriverWait wait = new WebDriverWait(driver, 5);
+		final WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("filter-button-reset")));
 
 		driver.findElement(By.className("filter-button-reset")).click();
@@ -275,7 +276,7 @@ class ChartTest extends SeleniumTestBase
 		final String chartPreviewSelector = ".chart-preview-column[data-id='6']";
 		driver.findElement(By.cssSelector(chartPreviewSelector)).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(chartPreviewSelector + " .chart-preview"), "class", "active"));
 
 		driver.findElement(By.id("chart-filter-container")).click();
@@ -286,12 +287,12 @@ class ChartTest extends SeleniumTestBase
 
 		driver.findElement(By.name("buttonSave")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("chart-canvas")));
 
 		driver.findElement(By.id("buttonShowChartSettings")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(chartPreviewSelector + " .chart-preview"), "class", "active"));
 
 		assertThat(driver.findElement(By.id("filterActiveBadge")).isDisplayed()).isTrue();
@@ -305,7 +306,7 @@ class ChartTest extends SeleniumTestBase
 		final String buttonSelector = ".button-display-type[data-value='" + ChartDisplayType.CUSTOM.name() + "']";
 		driver.findElement(By.cssSelector(buttonSelector)).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(buttonSelector), "class", "active"));
 
 		// check display type
@@ -322,12 +323,12 @@ class ChartTest extends SeleniumTestBase
 		final String chartPreviewSelector = ".chart-preview-column[data-id='6']";
 		driver.findElement(By.cssSelector(chartPreviewSelector)).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(chartPreviewSelector + " .chart-preview"), "class", "active"));
 
 		driver.findElement(By.name("buttonSave")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("chart-canvas")));
 
 		assertThat(driver.findElements(By.cssSelector(".chart-canvas .plot-container"))).hasSize(1);
@@ -341,17 +342,17 @@ class ChartTest extends SeleniumTestBase
 		final String chartPreviewSelector = ".chart-preview-column[data-id='6']";
 		driver.findElement(By.cssSelector(chartPreviewSelector)).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(chartPreviewSelector + " .chart-preview"), "class", "active"));
 
 		driver.findElement(By.name("buttonSave")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("chart-canvas")));
 
 		driver.findElement(By.id("buttonShowChartSettings")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(chartPreviewSelector + " .chart-preview"), "class", "active"));
 
 		assertThat(driver.findElement(By.name("buttonSave")).isEnabled()).isTrue();
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 f4c703998..928010194 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FirstUseTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FirstUseTest.java
@@ -9,6 +9,8 @@ import org.openqa.selenium.By;
 import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 
+import java.time.Duration;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 class FirstUseTest extends SeleniumTestBase
@@ -30,7 +32,7 @@ class FirstUseTest extends SeleniumTestBase
 	{
 		helper.start();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("hint-1")));
 		assertThat(driver.findElement(By.id("hint-1")).isDisplayed()).isTrue();
 	}
@@ -40,7 +42,7 @@ class FirstUseTest extends SeleniumTestBase
 	{
 		helper.start();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("hint-1")));
 
 		driver.findElements(By.className("hint-clear")).get(0).click();
@@ -54,7 +56,7 @@ class FirstUseTest extends SeleniumTestBase
 	{
 		helper.start();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("hint-1")));
 
 		driver.findElements(By.className("notification")).get(0).click();
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 a3ae28a95..14b6770ed 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/HotkeyTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/HotkeyTest.java
@@ -19,6 +19,7 @@ import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.List;
 
@@ -50,7 +51,7 @@ class HotkeyTest extends SeleniumTestBase
 	{
 		helper.start();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("logo-home")));
 	}
 
@@ -59,7 +60,7 @@ class HotkeyTest extends SeleniumTestBase
 	{
 		driver.findElement(By.tagName("body")).sendKeys("n");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("form[name='NewTransaction']")));
 
 		assertThat(driver.getCurrentUrl()).endsWith("/newTransaction/normal");
@@ -70,7 +71,7 @@ class HotkeyTest extends SeleniumTestBase
 	{
 		driver.findElement(By.tagName("body")).sendKeys("t");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("form[name='NewTransaction']")));
 
 		assertThat(driver.getCurrentUrl()).endsWith("/newTransaction/transfer");
@@ -81,7 +82,7 @@ class HotkeyTest extends SeleniumTestBase
 	{
 		driver.findElement(By.tagName("body")).sendKeys("v");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.id("searchTemplate")));
 
 		assertThat(driver.getCurrentUrl()).endsWith("/templates");
@@ -92,7 +93,7 @@ class HotkeyTest extends SeleniumTestBase
 	{
 		driver.findElement(By.tagName("body")).sendKeys("f");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		assertThat(driver.getCurrentUrl()).endsWith("/transactions#modalFilter");
@@ -128,7 +129,7 @@ class HotkeyTest extends SeleniumTestBase
 				.build();
 		seriesOfActions.perform();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -143,7 +144,7 @@ class HotkeyTest extends SeleniumTestBase
 	{
 		driver.findElement(By.tagName("body")).sendKeys("o");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java
index e34d5b0c1..67d47041e 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java
@@ -15,6 +15,7 @@ import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
 import java.text.MessageFormat;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.List;
 
@@ -49,7 +50,7 @@ class MediaTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/accounts");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Accounts"));
 
 		List<WebElement> accountRows = driver.findElements(By.cssSelector(".account-container tr"));
diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromExistingOneTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromExistingOneTest.java
index 9981fcf34..ccad71306 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromExistingOneTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromExistingOneTest.java
@@ -16,6 +16,7 @@ import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.List;
 
@@ -55,20 +56,20 @@ class NewTransactionFromExistingOneTest extends SeleniumTestBase
 	{
 		driver.findElement(By.className("headline-date")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("global-datepicker-select-year")));
 
 		By locator = By.xpath("//td[contains(@class, 'global-datepicker-item') and contains(text(),'" + year + "')]");
 		driver.findElement(locator).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("global-datepicker-select-month")));
 
 		locator = By.xpath("//td[contains(@class, 'global-datepicker-item') and contains(text(),'" + monthName + "')]");
 		driver.findElement(locator).click();
 
 		String yearAndMonthCombined = monthName + " " + year;
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		locator = By.xpath("//a[contains(@class, 'headline-date') and contains(text(),'" + yearAndMonthCombined + "')]");
 		wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 	}
@@ -82,7 +83,7 @@ class NewTransactionFromExistingOneTest extends SeleniumTestBase
 		List<WebElement> columns = transactionsRows.get(0).findElements(By.className("col"));
 		columns.get(5).findElement(By.className("button-new-from-existing")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
 
 		// assert
@@ -102,7 +103,7 @@ class NewTransactionFromExistingOneTest extends SeleniumTestBase
 		// submit form
 		driver.findElement(By.id("button-save-transaction")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -118,7 +119,7 @@ class NewTransactionFromExistingOneTest extends SeleniumTestBase
 		List<WebElement> columns = transactionsRows.get(0).findElements(By.className("col"));
 		columns.get(5).findElement(By.className("button-new-from-existing")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transfer"));
 
 		// assert
@@ -138,7 +139,7 @@ class NewTransactionFromExistingOneTest extends SeleniumTestBase
 		// submit form
 		driver.findElement(By.id("button-save-transaction")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -154,7 +155,7 @@ class NewTransactionFromExistingOneTest extends SeleniumTestBase
 		List<WebElement> columns = transactionsRows.get(0).findElements(By.className("col"));
 		columns.get(5).findElement(By.className("button-new-from-existing")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
 
 		// assert
@@ -168,7 +169,7 @@ class NewTransactionFromExistingOneTest extends SeleniumTestBase
 		// submit form
 		driver.findElement(By.id("button-save-transaction")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -186,7 +187,7 @@ class NewTransactionFromExistingOneTest extends SeleniumTestBase
 		List<WebElement> columns = transactionsRows.get(0).findElements(By.className("col"));
 		columns.get(5).findElement(By.className("button-new-from-existing")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
 
 		// assert
@@ -200,7 +201,7 @@ class NewTransactionFromExistingOneTest extends SeleniumTestBase
 		// submit form
 		driver.findElement(By.id("button-save-transaction")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
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 74c3e6d98..21d125159 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java
@@ -16,6 +16,7 @@ import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.List;
 
@@ -51,18 +52,18 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	@Test
 	void test_newTransactionFromTemplate_FullTemplate()
 	{
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'From template')]");
 		wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 		driver.findElement(locator).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		driver.findElements(By.cssSelector(".template-item .btn-flat no-padding text-default"));
 		driver.findElement(By.xpath("//li[contains(@class, 'template-item')]//a[contains(@href, '/templates/2/select')]")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
 
 		// assert
@@ -82,18 +83,18 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	@Test
 	void test_newTransactionFromTemplate_OnlyIncome()
 	{
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'From template')]");
 		wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 		driver.findElement(locator).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		driver.findElements(By.cssSelector(".template-item .btn-flat no-padding text-default"));
 		driver.findElement(By.xpath("//li[contains(@class, 'template-item')]//a[contains(@href, '/templates/1/select')]")).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
 
 		// assert
@@ -105,7 +106,7 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/templates");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		final List<WebElement> templateItemHeaders = driver.findElements(By.cssSelector(".template-item .collapsible-header"));
@@ -121,7 +122,7 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/templates");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		final List<WebElement> templateItemHeaders = driver.findElements(By.cssSelector(".template-item .collapsible-header"));
@@ -140,7 +141,7 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/templates");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		final List<WebElement> templateItemHeaders = driver.findElements(By.cssSelector(".template-item .collapsible-header"));
@@ -160,7 +161,7 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/templates");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		final List<WebElement> templateItemHeaders = driver.findElements(By.cssSelector(".template-item .collapsible-header"));
@@ -179,7 +180,7 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/templates");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		final List<WebElement> templateItemHeaders = driver.findElements(By.cssSelector(".template-item .collapsible-header"));
@@ -199,7 +200,7 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/templates");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		final List<WebElement> templateItemHeaders = driver.findElements(By.cssSelector(".template-item .collapsible-header"));
@@ -209,7 +210,7 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 
 		driver.findElement(By.id("searchTemplate")).sendKeys(Keys.ENTER);
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
 	}
 
@@ -218,7 +219,7 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/templates");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		driver.findElement(By.id("searchTemplate")).sendKeys(Keys.ARROW_DOWN);
@@ -241,7 +242,7 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/templates");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		driver.findElement(By.id("searchTemplate")).sendKeys(Keys.ARROW_DOWN);
@@ -263,14 +264,14 @@ class NewTransactionFromTemplateTest extends SeleniumTestBase
 	{
 		driver.get(helper.getUrl() + "/templates");
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "Templates"));
 
 		WebElement inputSearch = driver.findElement(By.id("search"));
 		inputSearch.sendKeys("e");
 		inputSearch.sendKeys(Keys.ENTER);
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		String expected = Localization.getString("menu.search.results", 24);
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), expected));
 	}
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 adcb7e575..e7369c158 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java
@@ -17,6 +17,7 @@ import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
 import java.text.SimpleDateFormat;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -53,12 +54,12 @@ class NewTransactionNormalTest extends SeleniumTestBase
 	{
 		driver.findElement(By.id("button-new-transaction")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transaction')]");
 		wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 		driver.findElement(locator).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transaction"));
 	}
 
@@ -75,7 +76,7 @@ class NewTransactionNormalTest extends SeleniumTestBase
 		((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", cancelButton);
 		cancelButton.click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -108,7 +109,7 @@ class NewTransactionNormalTest extends SeleniumTestBase
 		// submit form
 		driver.findElement(By.id("button-save-transaction")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -149,7 +150,7 @@ class NewTransactionNormalTest extends SeleniumTestBase
 		// submit form
 		driver.findElement(By.id("button-save-transaction")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
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 9860d301a..a03e95198 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java
@@ -17,6 +17,7 @@ import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
 import java.text.SimpleDateFormat;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -56,12 +57,12 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 
 		driver.findElement(By.id("button-new-transaction")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'" + type + "')]");
 		wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 		driver.findElement(locator).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New " + type));
 	}
 
@@ -83,7 +84,7 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 		TransactionTestHelper.selectCategoryByName(driver, categoryName);
 
 		driver.findElement(By.id("button-transaction-add-repeating-option")).click();
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("button-transaction-remove-repeating-option"))));
 
 		// fill repeating options
@@ -103,11 +104,11 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 			}
 		}
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.invisibilityOfAllElements(driver.findElements(By.cssSelector(".modal-overlay"))));
 
 		// submit form
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("modal-overlay")));
 
 		WebElement submitButton = driver.findElement(By.id("button-save-transaction"));
@@ -115,7 +116,7 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 
 		submitButton.click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -151,7 +152,7 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 		TransactionTestHelper.selectCategoryByName(driver, categoryName);
 
 		driver.findElement(By.id("button-transaction-add-repeating-option")).click();
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("button-transaction-remove-repeating-option"))));
 
 		// fill repeating options
@@ -171,19 +172,19 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 			}
 		}
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.invisibilityOfAllElements(driver.findElements(By.cssSelector(".modal-overlay"))));
 
 		// submit form
 		WebElement submitButton = driver.findElement(By.xpath("//button[@type='submit']"));
 		((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", submitButton);
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.elementToBeClickable(submitButton));
 
 		submitButton.click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -223,7 +224,7 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 		TransactionTestHelper.selectTransferAccountByName(driver, transferAccountName);
 
 		driver.findElement(By.id("button-transaction-add-repeating-option")).click();
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("button-transaction-remove-repeating-option"))));
 
 		// fill repeating options
@@ -243,11 +244,11 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 			}
 		}
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.invisibilityOfAllElements(driver.findElements(By.cssSelector(".modal-overlay"))));
 
 		// submit form
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("modal-overlay")));
 
 		WebElement submitButton = driver.findElement(By.id("button-save-transaction"));
@@ -255,7 +256,7 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 
 		submitButton.click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -311,13 +312,13 @@ class NewTransactionRecurringTest extends SeleniumTestBase
 	void test_new_removeRepeatingOption()
 	{
 		driver.findElement(By.id("button-transaction-add-repeating-option")).click();
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("button-transaction-remove-repeating-option"))));
 
 		assertThat(driver.findElement(By.id("button-transaction-remove-repeating-option")).isDisplayed()).isTrue();
 
 		driver.findElement(By.id("button-transaction-remove-repeating-option")).click();
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("button-transaction-add-repeating-option"))));
 
 		assertThat(driver.findElement(By.id("button-transaction-remove-repeating-option")).isDisplayed()).isFalse();
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 dba9e589d..b02047e0c 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java
@@ -18,6 +18,7 @@ import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.io.File;
 import java.text.SimpleDateFormat;
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -55,12 +56,12 @@ class NewTransactionTransferTest extends SeleniumTestBase
 	{
 		driver.findElement(By.id("button-new-transaction")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		final By locator = By.xpath("//div[contains(@class, 'new-transaction-button')]//a[contains(text(),'Transfer')]");
 		wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 		driver.findElement(locator).click();
 
-		wait = new WebDriverWait(driver, 5);
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector(".headline"), "New Transfer"));
 	}
 
@@ -80,7 +81,7 @@ class NewTransactionTransferTest extends SeleniumTestBase
 		((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", cancelButton);
 		cancelButton.click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
@@ -109,7 +110,7 @@ class NewTransactionTransferTest extends SeleniumTestBase
 		// submit form
 		driver.findElement(By.id("button-save-transaction")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".headline-date")));
 
 		// assert
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 ac437e9cd..2cd3316de 100644
--- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/WhatsNewTest.java
+++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/WhatsNewTest.java
@@ -9,6 +9,8 @@ import org.openqa.selenium.By;
 import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 
+import java.time.Duration;
+
 import static org.assertj.core.api.Assertions.assertThat;
 
 class WhatsNewTest extends SeleniumTestBase
@@ -25,7 +27,7 @@ class WhatsNewTest extends SeleniumTestBase
 	@Test
 	void test_whats_new_dialog()
 	{
-		WebDriverWait wait = new WebDriverWait(driver, 5);
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("modalWhatsNew")));
 		assertThat(driver.findElement(By.id("modalWhatsNew")).isDisplayed()).isTrue();
 	}
-- 
GitLab