diff --git a/src/org/labkey/test/tests/LinkedReportTest.java b/src/org/labkey/test/tests/LinkedReportTest.java index a88629cc05..f8097e03fd 100644 --- a/src/org/labkey/test/tests/LinkedReportTest.java +++ b/src/org/labkey/test/tests/LinkedReportTest.java @@ -8,6 +8,7 @@ import org.labkey.test.BaseWebDriverTest; import org.labkey.test.Locator; import org.labkey.test.categories.Daily; +import org.labkey.test.util.WebServicesUtil; import java.util.List; @@ -53,7 +54,10 @@ public void testLinkedReportToExternalURL() waitAndClick(Locator.linkWithText(REPORT_NAME)); switchToWindow(1); - waitForElement(Locator.linkWithText("Get a Demo")); + if (!WebServicesUtil.isLabKeyDotOrgMaintenance(getDriver())) + { + waitForElement(Locator.linkWithText("Get a Demo")); + } Assert.assertEquals("Linked report navigated to incorrect external link", LINK_REPORT_URL, getDriver().getCurrentUrl()); } } diff --git a/src/org/labkey/test/tests/NonStandardDateAndTimeFormatTest.java b/src/org/labkey/test/tests/NonStandardDateAndTimeFormatTest.java index 7dbbceffa8..37dcb3b86d 100644 --- a/src/org/labkey/test/tests/NonStandardDateAndTimeFormatTest.java +++ b/src/org/labkey/test/tests/NonStandardDateAndTimeFormatTest.java @@ -32,6 +32,7 @@ import org.labkey.test.util.DataRegionTable; import org.labkey.test.util.PortalHelper; import org.labkey.test.util.URLBuilder; +import org.labkey.test.util.WebServicesUtil; import org.openqa.selenium.WebElement; import java.io.IOException; @@ -764,6 +765,7 @@ public void testScopeFromSiteToSubFolder() throws IOException, CommandException WebElement banner = Locator.tagWithText("h3", "Date & Number Display Formats").refindWhenNeeded(getDriver()); checker().withScreenshot() .verifyTrue("'Click here' link did not navigate as expected.", + WebServicesUtil.isLabKeyDotOrgMaintenance(getDriver()) || waitFor(banner::isDisplayed, 1_000)); closeExtraWindows(); } diff --git a/src/org/labkey/test/util/WebServicesUtil.java b/src/org/labkey/test/util/WebServicesUtil.java index 291730d1fe..908aa110e1 100644 --- a/src/org/labkey/test/util/WebServicesUtil.java +++ b/src/org/labkey/test/util/WebServicesUtil.java @@ -15,10 +15,14 @@ */ package org.labkey.test.util; +import org.openqa.selenium.WebDriver; + import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; +import java.net.URL; +import java.util.Objects; import static org.junit.Assert.assertTrue; @@ -91,4 +95,27 @@ static public Socket openSocket(String hostIp, int port) throws IOException socket.connect(new InetSocketAddress(hostIp, port), 2000); return socket; } + + /** + * Checks whether the current page is the maintenance page for labkey.org. + * This is usually indicated by a {@code 502}-{@code 504} status code. + * Allows tests that check links to labkey.org to not fail during maintenance periods. + * + * @param driver The WebDriver instance to check + * @return true if the current page is the maintenance page for labkey.org, false otherwise. + */ + public static boolean isLabKeyDotOrgMaintenance(WebDriver driver) + { + try + { + URL url = new URL(Objects.requireNonNull(driver.getCurrentUrl())); + String title = driver.getTitle(); + int responseCode = Integer.parseInt(Objects.requireNonNull(title).substring(0, 3)); + return url.getHost().endsWith("labkey.org") && 502 <= responseCode && responseCode <= 504; + } + catch (Exception e) + { + return false; + } + } }