From 2985783dff0de72754ae4c8db66e5c6d73d23da4 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Mon, 14 Apr 2025 22:27:34 +0200
Subject: [PATCH] stabilize selenium tests

---
 .../budgetmaster/integration/selenium/ChartTest.java   | 10 ++++++++--
 .../budgetmaster/integration/selenium/FilterTest.java  |  4 ++--
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java
index 8d36b734a..5135c878f 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java
@@ -235,9 +235,11 @@ class ChartTest extends SeleniumTestBase
 		assertThat(driver.findElement(By.id("filterActiveBadge")).isDisplayed()).isFalse();
 
 		driver.findElement(By.id("chart-filter-container")).click();
+		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
+		wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("#chart-filter-container .collapsible-header")));
 		driver.findElement(By.id("section-type")).click();
 
-		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#section-type .text-default")));
 
 		final WebElement checkBox = driver.findElement(By.cssSelector("#section-type .text-default"));
@@ -256,8 +258,10 @@ class ChartTest extends SeleniumTestBase
 		driver.get(helper.getUrl() + "/charts");
 
 		driver.findElement(By.id("chart-filter-container")).click();
-		driver.findElement(By.id("section-type")).click();
 		WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
+		wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("#chart-filter-container .collapsible-header")));
+		driver.findElement(By.id("section-type")).click();
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#section-type .text-default")));
 		final WebElement checkBox = driver.findElement(By.cssSelector("#section-type .text-default"));
 		((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", checkBox);
@@ -285,6 +289,8 @@ class ChartTest extends SeleniumTestBase
 		wait.until(ExpectedConditions.attributeContains(By.cssSelector(chartPreviewSelector + " .chart-preview"), "class", "active"));
 
 		driver.findElement(By.id("chart-filter-container")).click();
+		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
+		wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("#chart-filter-container .collapsible-header")));
 		driver.findElement(By.id("section-type")).click();
 		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
 		wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#section-type .text-default")));
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FilterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FilterTest.java
index deb5742fd..e57a591ac 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FilterTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FilterTest.java
@@ -45,8 +45,8 @@ class FilterTest extends SeleniumTestBase
 
 		driver.findElement(By.id("section-type")).click();
 		wait = new WebDriverWait(driver, Duration.ofSeconds(5));
-		wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("#section-type .text-default")));
-		final WebElement checkBox = driver.findElements(By.cssSelector("#section-type .text-default")).get(0);
+		wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#section-type .text-default")));
+		final WebElement checkBox = driver.findElements(By.cssSelector("#section-type .text-default")).getFirst();
 		checkBox.click();
 
 		driver.findElement(By.id("buttonApplyFilter")).click();
-- 
GitLab