From 4fdac28aeaf684358393e482d7b2587f54566864 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Thu, 16 Apr 2026 11:18:16 +0300 Subject: [PATCH 1/7] Update selenium to 4.43.0 & testcontainers to 1.21.4 --- openam-server/pom.xml | 6 +++--- .../openam/test/integration/BaseTest.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/openam-server/pom.xml b/openam-server/pom.xml index 1ea5df9f52..e8d4d7736e 100644 --- a/openam-server/pom.xml +++ b/openam-server/pom.xml @@ -13,7 +13,7 @@ * information: "Portions copyright [year] [name of copyright owner]". * * Copyright 2011-2016 ForgeRock AS. - * Portions copyright 2017-2025 3A Systems LLC. + * Portions copyright 2017-2026 3A Systems LLC. --> 4.0.0 @@ -166,13 +166,13 @@ org.seleniumhq.selenium selenium-java - 4.13.0 + 4.43.0 test org.testcontainers testcontainers - 1.20.6 + 1.21.4 test diff --git a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java index 0e1386d724..f724716c4d 100644 --- a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java +++ b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java @@ -11,7 +11,7 @@ * Header, with the fields enclosed by brackets [] replaced by your own identifying * information: "Portions copyright [year] [name of copyright owner]". * - * Copyright 2025 3A Systems LLC. + * Copyright 2025-2026 3A Systems LLC. */ package org.openidentityplatform.openam.test.integration; @@ -51,7 +51,7 @@ public void webdriverSetup() { options.addArguments("--remote-allow-origins=*","--headless", "--disable-dev-shm-usage", "--no-sandbox", "--verbose"); //options.addArguments("--remote-allow-origins=*", "--verbose"); driver = new ChromeDriver(options); - wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + wait = new WebDriverWait(driver, Duration.ofSeconds(20)); } @AfterClass From 4256497cc2a271fa20b368069002d92d28928199 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Thu, 16 Apr 2026 11:55:41 +0300 Subject: [PATCH 2/7] Make IT_SetupWithOpenDJ more stable --- .../openam/test/integration/IT_SetupWithOpenDJ.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java index ded46cc689..237b890bf5 100644 --- a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java +++ b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java @@ -11,7 +11,7 @@ * Header, with the fields enclosed by brackets [] replaced by your own identifying * information: "Portions copyright [year] [name of copyright owner]". * - * Copyright 2025 3A Systems LLC. + * Copyright 2025-2026 3A Systems LLC. */ package org.openidentityplatform.openam.test.integration; @@ -116,6 +116,8 @@ private void testOpenAmInstallation(String openamUrl, Integer opendjPort) throws wait.until(ExpectedConditions.elementToBeClickable(By.id("nextTabButton"))).click(); waitForElement(By.id("loadBalancerDisable")); + Thread.sleep(1000); + wait.until(ExpectedConditions.elementToBeClickable(By.id("nextTabButton"))).click(); waitForElement(By.id("agentPassword")).sendKeys(PA_PASSWORD); From 07c84d2e3fe4b7f3d0b0b71a47bcd4c9ba42ba2b Mon Sep 17 00:00:00 2001 From: maximthomas Date: Thu, 16 Apr 2026 15:03:55 +0300 Subject: [PATCH 3/7] Make IT_SetupWithOpenDJ more stable --- .../openam/test/integration/IT_SetupWithOpenDJ.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java index 237b890bf5..571c1acb2f 100644 --- a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java +++ b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java @@ -116,9 +116,10 @@ private void testOpenAmInstallation(String openamUrl, Integer opendjPort) throws wait.until(ExpectedConditions.elementToBeClickable(By.id("nextTabButton"))).click(); waitForElement(By.id("loadBalancerDisable")); - Thread.sleep(1000); - wait.until(ExpectedConditions.elementToBeClickable(By.id("nextTabButton"))).click(); + WebElement nextTabButton = wait.until(ExpectedConditions.elementToBeClickable(By.id("nextTabButton"))); + Thread.sleep(1000); + nextTabButton.click(); waitForElement(By.id("agentPassword")).sendKeys(PA_PASSWORD); waitForElement(By.id("agentConfirm")).sendKeys(PA_PASSWORD); From 4ec6ee2ce3149a584c023ed3c7bc0cf50009b030 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Thu, 16 Apr 2026 17:22:00 +0300 Subject: [PATCH 4/7] Make IT_SetupWithOpenDJ more stable --- .../openam/test/integration/BaseTest.java | 15 ++++++++++++++- .../test/integration/IT_SetupWithOpenDJ.java | 8 +++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java index f724716c4d..fa3dd8a5f5 100644 --- a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java +++ b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java @@ -17,20 +17,24 @@ package org.openidentityplatform.openam.test.integration; import org.openqa.selenium.By; +import org.openqa.selenium.OutputType; import org.openqa.selenium.StaleElementReferenceException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.io.FileHandler; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testcontainers.shaded.org.apache.commons.io.FileUtils; +import org.testng.ITestResult; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import java.io.BufferedReader; +import java.io.File; import java.io.FileReader; import java.io.IOException; import java.nio.file.Path; @@ -51,7 +55,7 @@ public void webdriverSetup() { options.addArguments("--remote-allow-origins=*","--headless", "--disable-dev-shm-usage", "--no-sandbox", "--verbose"); //options.addArguments("--remote-allow-origins=*", "--verbose"); driver = new ChromeDriver(options); - wait = new WebDriverWait(driver, Duration.ofSeconds(20)); + wait = new WebDriverWait(driver, Duration.ofSeconds(10)); } @AfterClass @@ -71,6 +75,15 @@ public void cleanup() throws IOException { } } + //@AfterMethod //uncomment to debug + public void tearDown(ITestResult result) throws IOException { + if (result.getStatus() == ITestResult.FAILURE) { + WebElement element = driver.findElement(By.tagName("html")); + File source = element.getScreenshotAs(OutputType.FILE); + FileHandler.copy(source, new File("/tmp/element_screenshot.png")); + } + } + protected void printInstallLogFile() { String testConfigPath = System.getProperty("test.config.path"); Path installLog = Paths.get(testConfigPath, "install.log"); diff --git a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java index 571c1acb2f..3ca09ce98e 100644 --- a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java +++ b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/IT_SetupWithOpenDJ.java @@ -115,14 +115,16 @@ private void testOpenAmInstallation(String openamUrl, Integer opendjPort) throws wait.until(ExpectedConditions.elementToBeClickable(By.id("nextTabButton"))).click(); - waitForElement(By.id("loadBalancerDisable")); + waitForElementVisible(By.id("loadBalancerDisable")); + waitForElementVisible(By.id("loadBalancerHostName")); - WebElement nextTabButton = wait.until(ExpectedConditions.elementToBeClickable(By.id("nextTabButton"))); Thread.sleep(1000); - nextTabButton.click(); + + wait.until(ExpectedConditions.elementToBeClickable(By.id("nextTabButton"))).click(); waitForElement(By.id("agentPassword")).sendKeys(PA_PASSWORD); waitForElement(By.id("agentConfirm")).sendKeys(PA_PASSWORD); + wait.until(ExpectedConditions.elementToBeClickable(By.id("nextTabButton"))).click(); From e27b2461a1f57b66e0ea848456ba86a08417f76e Mon Sep 17 00:00:00 2001 From: maximthomas Date: Thu, 16 Apr 2026 19:11:36 +0300 Subject: [PATCH 5/7] Set debug level to 'warning' in integration tests --- openam-server/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openam-server/pom.xml b/openam-server/pom.xml index e8d4d7736e..319dbafd3b 100644 --- a/openam-server/pom.xml +++ b/openam-server/pom.xml @@ -104,7 +104,7 @@ ${test.config.path} ${basedir}/src/test/resources/logback-test.xml false - message + warning on false From dac5c6275381196c9e9ca7b3a3c0bb0d496940fc Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 17 Apr 2026 12:06:47 +0300 Subject: [PATCH 6/7] set logback level to WARN in test --- openam-server/src/test/resources/logback-test.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openam-server/src/test/resources/logback-test.xml b/openam-server/src/test/resources/logback-test.xml index 0e89885211..03edb42d1b 100644 --- a/openam-server/src/test/resources/logback-test.xml +++ b/openam-server/src/test/resources/logback-test.xml @@ -6,7 +6,7 @@ - + From 54148375f57493ec9650be93c889f98b026a7903 Mon Sep 17 00:00:00 2001 From: maximthomas Date: Fri, 17 Apr 2026 14:08:14 +0300 Subject: [PATCH 7/7] Make IT_SetupWithOpenDJ more stable --- openam-server/pom.xml | 2 +- .../openam/test/integration/BaseTest.java | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/openam-server/pom.xml b/openam-server/pom.xml index 319dbafd3b..7603ea883b 100644 --- a/openam-server/pom.xml +++ b/openam-server/pom.xml @@ -172,7 +172,7 @@ org.testcontainers testcontainers - 1.21.4 + 2.0.4 test diff --git a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java index fa3dd8a5f5..2ddb8428da 100644 --- a/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java +++ b/openam-server/src/test/java/org/openidentityplatform/openam/test/integration/BaseTest.java @@ -16,6 +16,7 @@ package org.openidentityplatform.openam.test.integration; +import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.OutputType; import org.openqa.selenium.StaleElementReferenceException; @@ -27,9 +28,9 @@ import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; -import org.testcontainers.shaded.org.apache.commons.io.FileUtils; import org.testng.ITestResult; import org.testng.annotations.AfterClass; +import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; @@ -52,8 +53,9 @@ public abstract class BaseTest { @BeforeClass public void webdriverSetup() { ChromeOptions options = new ChromeOptions(); - options.addArguments("--remote-allow-origins=*","--headless", "--disable-dev-shm-usage", "--no-sandbox", "--verbose"); - //options.addArguments("--remote-allow-origins=*", "--verbose"); + options.addArguments("--remote-allow-origins=*","--headless", "--disable-dev-shm-usage", "--no-sandbox", + "--verbose", "--window-size=1920,1080", "--guest"); +// options.addArguments("--remote-allow-origins=*", "--verbose", "--guest"); driver = new ChromeDriver(options); wait = new WebDriverWait(driver, Duration.ofSeconds(10)); }