From 59271a618243889c5e97430c3ad52196ea7ccdf8 Mon Sep 17 00:00:00 2001 From: Binal Patel Date: Fri, 31 Jul 2026 11:58:12 -0600 Subject: [PATCH 1/2] Wait for reauthentication URL before clicking test link --- src/org/labkey/test/pages/test/TestReauthPage.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/org/labkey/test/pages/test/TestReauthPage.java b/src/org/labkey/test/pages/test/TestReauthPage.java index f32afc79a8..3a2564a50b 100644 --- a/src/org/labkey/test/pages/test/TestReauthPage.java +++ b/src/org/labkey/test/pages/test/TestReauthPage.java @@ -23,6 +23,7 @@ import org.labkey.test.pages.LabKeyPage; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; import java.util.Map; import java.util.Optional; @@ -56,7 +57,16 @@ public String getDescription() public void clickReauth() { - clickAndWait(elementCache().reauthLink); + WebElement link = elementCache().reauthLink; + + shortWait().until( + ExpectedConditions.attributeContains( + link, + "href", + "returnUrl" + ) + ); + clickAndWait(link); clearCache(); } From 0b037191b40c5b6cd989a5a840736ee8b4bacc86 Mon Sep 17 00:00:00 2001 From: Binal Patel Date: Fri, 31 Jul 2026 12:53:38 -0600 Subject: [PATCH 2/2] Wait for return from IdP before checking signed-in user in reauth tests --- src/org/labkey/test/tests/AbstractReauthTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/org/labkey/test/tests/AbstractReauthTest.java b/src/org/labkey/test/tests/AbstractReauthTest.java index 6fd6883d55..777f50a159 100644 --- a/src/org/labkey/test/tests/AbstractReauthTest.java +++ b/src/org/labkey/test/tests/AbstractReauthTest.java @@ -20,6 +20,7 @@ import org.junit.Test; import org.labkey.test.BaseWebDriverTest; import org.labkey.test.Locator; +import org.labkey.test.WebTestHelper; import org.labkey.test.pages.test.TestReauthPage; import java.util.Arrays; @@ -122,12 +123,17 @@ private void signInAs(User user) signOut(); clickSignIn(); authenticate(user.email, user.password); + // An IdP's SAML POST-binding page auto-submits to LabKey, so the browser can still be on the IdP + // origin here. getCurrentUser() copies only the cookies visible to the current URL, which excludes + // LabKey's session cookie, so wait for the browser to land back on LabKey before checking the user. + waitFor(() -> getDriver().getCurrentUrl().startsWith(WebTestHelper.getBaseURL()), + "Browser didn't return to LabKey after authenticating", WAIT_FOR_PAGE); assertSignedInAs(user); } private void assertSignedInAs(User user) { - if (!waitFor(() -> getCurrentUser().equals(user.email), 1_000)) + if (!waitFor(() -> getCurrentUser().equals(user.email), WAIT_FOR_PAGE)) assertEquals("Signed in as", user.email, getCurrentUser()); }