From e7aac2a72e3273968554872bb8687cdfec0d2d2d Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Mon, 6 Jul 2026 15:25:01 -0700 Subject: [PATCH 1/4] Add BaseAppTest --- src/org/labkey/test/tests/BaseAppTest.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/org/labkey/test/tests/BaseAppTest.java diff --git a/src/org/labkey/test/tests/BaseAppTest.java b/src/org/labkey/test/tests/BaseAppTest.java new file mode 100644 index 0000000000..58ef66abf4 --- /dev/null +++ b/src/org/labkey/test/tests/BaseAppTest.java @@ -0,0 +1,8 @@ +package org.labkey.test.tests; + +import org.labkey.test.BaseWebDriverTest; + +public abstract class BaseAppTest extends BaseWebDriverTest +{ + public abstract String getAppControllerName(); +} From bc7497b319a55cc2523c2b4e991375052b28aee2 Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Mon, 6 Jul 2026 17:30:30 -0700 Subject: [PATCH 2/4] Centralize `buildAppURL` --- src/org/labkey/test/BaseWebDriverTest.java | 3 ++ src/org/labkey/test/WebDriverWrapper.java | 4 ++- src/org/labkey/test/WebTestHelper.java | 36 ++++++++++++++++++++++ src/org/labkey/test/tests/BaseAppTest.java | 18 +++++++++++ 4 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/org/labkey/test/BaseWebDriverTest.java b/src/org/labkey/test/BaseWebDriverTest.java index 8799899942..11e7412a89 100644 --- a/src/org/labkey/test/BaseWebDriverTest.java +++ b/src/org/labkey/test/BaseWebDriverTest.java @@ -24,6 +24,7 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.hc.core5.http.HttpStatus; import org.awaitility.Awaitility; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.json.JSONObject; @@ -303,8 +304,10 @@ private static Class getCurrentTestClass() return SingletonWebDriver.getInstance().getWebDriver(); } + @Contract(pure = true) protected abstract String getProjectName(); + @Contract(pure = true) public final @Nullable String getPrimaryTestProject() { return getProjectName(); diff --git a/src/org/labkey/test/WebDriverWrapper.java b/src/org/labkey/test/WebDriverWrapper.java index b742bde15c..27e2aaafc9 100644 --- a/src/org/labkey/test/WebDriverWrapper.java +++ b/src/org/labkey/test/WebDriverWrapper.java @@ -205,6 +205,7 @@ public WebDriverWrapper() _ext4Helper = new Ext4Helper(this); } + @Contract(pure = true) @NotNull public final WebDriver getDriver() { @@ -1352,9 +1353,10 @@ public String getCurrentProject() return "/"; //root } + @Contract(pure = true) public String getCurrentContainerPath() { - return (String)executeScript("return LABKEY.container.path;"); + return (String) executeScript("return LABKEY.container.path;"); } public WhoAmIResponse whoAmI() diff --git a/src/org/labkey/test/WebTestHelper.java b/src/org/labkey/test/WebTestHelper.java index c5c08a8a84..0102f5ecfa 100644 --- a/src/org/labkey/test/WebTestHelper.java +++ b/src/org/labkey/test/WebTestHelper.java @@ -493,6 +493,42 @@ public static String getContextPath() } } + /** + * Convenience method to build an app url for the given controller + * @see URLBuilder + * + * @param containerPath Often getProjectName() or getCurrentContainerPath() + * @param controller Name of the controller + * @param parts The app resource path + * @return A url string that can be used for navigation. + */ + public static String buildAppURL(String containerPath, String controller, Object... parts) + { + return buildAppURL(containerPath, controller, null, parts).trim(); + } + + /** + * Convenience method to build an app url. Assumes Sample Manager app (samplemanager-app.view) + * + * @param containerPath Often getProjectName() or getCurrentContainerPath() + * @param controllerName Name of the controller + * @param params Any params that are part of the app query. {@link URLBuilder#setSecondaryQuery(Map)} + * @param parts The app resource path + * @return A url string that can be used for navigation. + * @see URLBuilder + */ + public static String buildAppURL(String containerPath, String controllerName, Map params, Object... parts) + { + if (StringUtils.isBlank(containerPath)) + { + throw new IllegalArgumentException("Invalid app containerPath: " + containerPath); + } + return new URLBuilder(controllerName, "app", containerPath) + .setAppResourcePath(parts) + .setSecondaryQuery(params) + .buildURL(); + } + public static String buildURL(String controller, String action) { return buildURL(controller, null, action, Collections.emptyMap()); diff --git a/src/org/labkey/test/tests/BaseAppTest.java b/src/org/labkey/test/tests/BaseAppTest.java index 58ef66abf4..fc45911d8a 100644 --- a/src/org/labkey/test/tests/BaseAppTest.java +++ b/src/org/labkey/test/tests/BaseAppTest.java @@ -1,8 +1,26 @@ package org.labkey.test.tests; +import org.jetbrains.annotations.Contract; import org.labkey.test.BaseWebDriverTest; +import org.labkey.test.WebTestHelper; + +import java.util.Map; public abstract class BaseAppTest extends BaseWebDriverTest { + @Contract(pure = true) public abstract String getAppControllerName(); + + @Contract(pure = true) + public String buildAppURL(String containerPath, Object... parts) + { + return WebTestHelper.buildAppURL(containerPath, getAppControllerName(), parts); + } + + @Contract(pure = true) + public String buildAppURL(String containerPath, Map params, Object... parts) + { + return WebTestHelper.buildAppURL(containerPath, getAppControllerName(), params, parts); + } + } From 614111a655816767fdca4031bc1799f6573d42b2 Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Tue, 7 Jul 2026 13:51:01 -0700 Subject: [PATCH 3/4] Fix `buildAppURL` params --- src/org/labkey/test/WebTestHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/labkey/test/WebTestHelper.java b/src/org/labkey/test/WebTestHelper.java index 211f35dda4..9b9bf3fb4a 100644 --- a/src/org/labkey/test/WebTestHelper.java +++ b/src/org/labkey/test/WebTestHelper.java @@ -518,7 +518,7 @@ public static String buildAppURL(String containerPath, String controller, Object * @return A url string that can be used for navigation. * @see URLBuilder */ - public static String buildAppURL(String containerPath, String controllerName, Map params, Object... parts) + public static String buildAppURL(String containerPath, String controllerName, Map params, Object... parts) { if (StringUtils.isBlank(containerPath)) { From e832613f377b5111534378dd1b19d2fe7102ba69 Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Tue, 7 Jul 2026 15:02:46 -0700 Subject: [PATCH 4/4] Remove PR template --- pull_request_template.md | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 pull_request_template.md diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index d9329aca4b..0000000000 --- a/pull_request_template.md +++ /dev/null @@ -1,14 +0,0 @@ -#### Rationale - - -#### Related Pull Requests -- - -#### Changes -- - -