diff --git a/src/org/labkey/test/TestProperties.java b/src/org/labkey/test/TestProperties.java index a7b984402c..456ab1da63 100644 --- a/src/org/labkey/test/TestProperties.java +++ b/src/org/labkey/test/TestProperties.java @@ -26,6 +26,8 @@ import java.nio.file.Files; import java.nio.file.StandardOpenOption; import java.time.Duration; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; @@ -70,6 +72,8 @@ public abstract class TestProperties } } + private static ZoneId browserTimeZone = null; + public static void load() { /* Force static block to run */ @@ -162,6 +166,26 @@ public static boolean isDumpBrowserConsole() return getBooleanProperty("webtest.dump.browser.console", false); } + public static ZoneId getBrowserTimeZone() + { + if (browserTimeZone == null) + { + String tz = StringUtils.trimToNull(System.getProperty("webtest.browser.tz")); + if (tz != null) + { + String[] split = tz.split("[,\\s]+"); + tz = split[LocalDateTime.now().getDayOfMonth() % split.length]; + // Verify that time zone is valid + browserTimeZone = ZoneId.of(tz); + } + else + { + browserTimeZone = ZoneId.systemDefault(); + } + } + return browserTimeZone; + } + public static double getTimeoutMultiplier() { return Math.max(0, getDoubleProperty("webtest.timeout.multiplier", 1.0)); diff --git a/src/org/labkey/test/WebDriverWrapper.java b/src/org/labkey/test/WebDriverWrapper.java index b7308ebb6b..4005c31201 100644 --- a/src/org/labkey/test/WebDriverWrapper.java +++ b/src/org/labkey/test/WebDriverWrapper.java @@ -96,6 +96,7 @@ import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.GeckoDriverService; import org.openqa.selenium.ie.InternetExplorerDriver; +import org.openqa.selenium.ie.InternetExplorerDriverService; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.remote.service.DriverService; @@ -119,6 +120,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Duration; +import java.time.ZoneId; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -210,6 +212,17 @@ protected Pair createNewWebDriver(@NotNull Pair browserEnv = new HashMap<>(); + ZoneId browserTimeZone = TestProperties.getBrowserTimeZone(); + if (browserTimeZone != ZoneId.systemDefault()) + { + TestLogger.info("Starting browser with TZ = " + browserTimeZone); + browserEnv.put("TZ", browserTimeZone.toString()); + } + else + { + TestLogger.info("Starting browser with TZ = " + browserTimeZone + " (system default)"); + } switch (browserType) { @@ -236,7 +249,8 @@ protected Pair createNewWebDriver(@NotNull Pair createNewWebDriver(@NotNull Pair createNewWebDriver(@NotNull Pair createNewWebDriver(@NotNull Pair