From 2dc901ef6ff3686df2fe886fa15cc46fbe3a4b8f Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Tue, 4 Feb 2025 12:29:30 -0800 Subject: [PATCH 1/6] Add test property to set the browser time zone --- src/org/labkey/test/TestProperties.java | 5 +++++ src/org/labkey/test/WebDriverWrapper.java | 18 ++++++++++++++---- test.properties.template | 2 ++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/org/labkey/test/TestProperties.java b/src/org/labkey/test/TestProperties.java index a7b984402c..4f8eeb88f1 100644 --- a/src/org/labkey/test/TestProperties.java +++ b/src/org/labkey/test/TestProperties.java @@ -162,6 +162,11 @@ public static boolean isDumpBrowserConsole() return getBooleanProperty("webtest.dump.browser.console", false); } + public static String getBrowserTimeZone() + { + return System.getProperty("webtest.browser.tz"); + } + 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..97ca573bd1 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; @@ -210,6 +211,11 @@ protected Pair createNewWebDriver(@NotNull Pair browserEnv = new HashMap<>(); + if (TestProperties.getBrowserTimeZone() != null) + { + browserEnv.put("TZ", TestProperties.getBrowserTimeZone()); + } switch (browserType) { @@ -236,7 +242,8 @@ protected Pair createNewWebDriver(@NotNull Pair createNewWebDriver(@NotNull Pair createNewWebDriver(@NotNull Pair createNewWebDriver(@NotNull Pair Date: Tue, 4 Feb 2025 13:38:22 -0800 Subject: [PATCH 2/6] Don't allow blank time zone --- src/org/labkey/test/TestProperties.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/labkey/test/TestProperties.java b/src/org/labkey/test/TestProperties.java index 4f8eeb88f1..b8c5dce165 100644 --- a/src/org/labkey/test/TestProperties.java +++ b/src/org/labkey/test/TestProperties.java @@ -164,7 +164,7 @@ public static boolean isDumpBrowserConsole() public static String getBrowserTimeZone() { - return System.getProperty("webtest.browser.tz"); + return StringUtils.trimToNull(System.getProperty("webtest.browser.tz")); } public static double getTimeoutMultiplier() From 667b3e6909e20c2c06be4537a42d124fdf4e1121 Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Thu, 6 Feb 2025 17:14:41 -0800 Subject: [PATCH 3/6] Allow time zone to shift --- src/org/labkey/test/TestProperties.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/org/labkey/test/TestProperties.java b/src/org/labkey/test/TestProperties.java index b8c5dce165..da2c9d3001 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,9 @@ public abstract class TestProperties } } + // Initialize once so that value doesn't change if suite runs through midnight + private static final int DAY_OF_MONTH = LocalDateTime.now().getDayOfMonth(); + public static void load() { /* Force static block to run */ @@ -164,7 +169,16 @@ public static boolean isDumpBrowserConsole() public static String getBrowserTimeZone() { - return StringUtils.trimToNull(System.getProperty("webtest.browser.tz")); + String tz = StringUtils.trimToNull(System.getProperty("webtest.browser.tz")); + if (tz != null) + { + String[] split = tz.split("[, ]+"); + tz = split[DAY_OF_MONTH % split.length]; + // Verify that time zone is valid + ZoneId zoneId = ZoneId.of(tz); + TestLogger.warn("Starting browser with TZ = %s (%s)".formatted(tz, zoneId)); + } + return tz; } public static double getTimeoutMultiplier() From 2ca6a979eb23e535b7f08bc215758246963649b8 Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Mon, 10 Feb 2025 14:30:41 -0800 Subject: [PATCH 4/6] Any whitespace --- src/org/labkey/test/TestProperties.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/labkey/test/TestProperties.java b/src/org/labkey/test/TestProperties.java index da2c9d3001..923915b5e7 100644 --- a/src/org/labkey/test/TestProperties.java +++ b/src/org/labkey/test/TestProperties.java @@ -172,7 +172,7 @@ public static String getBrowserTimeZone() String tz = StringUtils.trimToNull(System.getProperty("webtest.browser.tz")); if (tz != null) { - String[] split = tz.split("[, ]+"); + String[] split = tz.split("[,\\s]+"); tz = split[DAY_OF_MONTH % split.length]; // Verify that time zone is valid ZoneId zoneId = ZoneId.of(tz); From 555f5137f382ed53dc4e4a20af4856eb2f91dad3 Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Tue, 11 Feb 2025 13:56:20 -0800 Subject: [PATCH 5/6] Update logging of browser time zone --- src/org/labkey/test/TestProperties.java | 25 +++++++++++++++-------- src/org/labkey/test/WebDriverWrapper.java | 11 ++++++++-- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/org/labkey/test/TestProperties.java b/src/org/labkey/test/TestProperties.java index 923915b5e7..0400079c57 100644 --- a/src/org/labkey/test/TestProperties.java +++ b/src/org/labkey/test/TestProperties.java @@ -74,6 +74,7 @@ public abstract class TestProperties // Initialize once so that value doesn't change if suite runs through midnight private static final int DAY_OF_MONTH = LocalDateTime.now().getDayOfMonth(); + private static ZoneId browserTimeZone = null; public static void load() { @@ -167,18 +168,24 @@ public static boolean isDumpBrowserConsole() return getBooleanProperty("webtest.dump.browser.console", false); } - public static String getBrowserTimeZone() + public static ZoneId getBrowserTimeZone() { - String tz = StringUtils.trimToNull(System.getProperty("webtest.browser.tz")); - if (tz != null) + if (browserTimeZone == null) { - String[] split = tz.split("[,\\s]+"); - tz = split[DAY_OF_MONTH % split.length]; - // Verify that time zone is valid - ZoneId zoneId = ZoneId.of(tz); - TestLogger.warn("Starting browser with TZ = %s (%s)".formatted(tz, zoneId)); + String tz = StringUtils.trimToNull(System.getProperty("webtest.browser.tz")); + if (tz != null) + { + String[] split = tz.split("[,\\s]+"); + tz = split[DAY_OF_MONTH % split.length]; + // Verify that time zone is valid + browserTimeZone = ZoneId.of(tz); + } + else + { + browserTimeZone = ZoneId.systemDefault(); + } } - return tz; + return browserTimeZone; } public static double getTimeoutMultiplier() diff --git a/src/org/labkey/test/WebDriverWrapper.java b/src/org/labkey/test/WebDriverWrapper.java index 97ca573bd1..4005c31201 100644 --- a/src/org/labkey/test/WebDriverWrapper.java +++ b/src/org/labkey/test/WebDriverWrapper.java @@ -120,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; @@ -212,9 +213,15 @@ protected Pair createNewWebDriver(@NotNull Pair browserEnv = new HashMap<>(); - if (TestProperties.getBrowserTimeZone() != null) + ZoneId browserTimeZone = TestProperties.getBrowserTimeZone(); + if (browserTimeZone != ZoneId.systemDefault()) { - browserEnv.put("TZ", TestProperties.getBrowserTimeZone()); + TestLogger.info("Starting browser with TZ = " + browserTimeZone); + browserEnv.put("TZ", browserTimeZone.toString()); + } + else + { + TestLogger.info("Starting browser with TZ = " + browserTimeZone + " (system default)"); } switch (browserType) From 49daafc3f5e31834c438beb40e28f5d95ab5cb53 Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Thu, 13 Feb 2025 13:59:45 -0800 Subject: [PATCH 6/6] Remove unnecessary field --- src/org/labkey/test/TestProperties.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/org/labkey/test/TestProperties.java b/src/org/labkey/test/TestProperties.java index 0400079c57..456ab1da63 100644 --- a/src/org/labkey/test/TestProperties.java +++ b/src/org/labkey/test/TestProperties.java @@ -72,8 +72,6 @@ public abstract class TestProperties } } - // Initialize once so that value doesn't change if suite runs through midnight - private static final int DAY_OF_MONTH = LocalDateTime.now().getDayOfMonth(); private static ZoneId browserTimeZone = null; public static void load() @@ -176,7 +174,7 @@ public static ZoneId getBrowserTimeZone() if (tz != null) { String[] split = tz.split("[,\\s]+"); - tz = split[DAY_OF_MONTH % split.length]; + tz = split[LocalDateTime.now().getDayOfMonth() % split.length]; // Verify that time zone is valid browserTimeZone = ZoneId.of(tz); }