diff --git a/modules/simpletest/resources/views/encodeButton.html b/modules/simpletest/resources/views/encodeButton.html
new file mode 100644
index 0000000000..2a2e8fb523
--- /dev/null
+++ b/modules/simpletest/resources/views/encodeButton.html
@@ -0,0 +1,15 @@
+
+
+
diff --git a/modules/simpletest/resources/views/encodeButton.view.xml b/modules/simpletest/resources/views/encodeButton.view.xml
new file mode 100644
index 0000000000..b2e99771aa
--- /dev/null
+++ b/modules/simpletest/resources/views/encodeButton.view.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/org/labkey/test/tests/ClientAPITest.java b/src/org/labkey/test/tests/ClientAPITest.java
index 75034b6ff1..943f967265 100644
--- a/src/org/labkey/test/tests/ClientAPITest.java
+++ b/src/org/labkey/test/tests/ClientAPITest.java
@@ -1547,6 +1547,21 @@ public void suggestedColumnsInQueryDetailsTest() throws Exception
columns.stream().noneMatch(col -> col.getName().equalsIgnoreCase("Container")));
}
+ @Test
+ public void testBootstrapButtonEncoding()
+ {
+ assumeTestModules();
+
+ beginAt(WebTestHelper.buildURL("simpletest", getProjectName(), "encodeButton"));
+ var buttonLocator = Locator.tagWithClass("button", "input-test");
+ waitForElement(buttonLocator);
+
+ // Prior to the patch for Issue 52402 clicking the button would result in a XSS injection
+ // which would result in an UnhandledAlertException.
+ click(buttonLocator);
+ waitForElement(Locator.buttonContainingText("Loading XSS"));
+ }
+
@Override
public BrowserType bestBrowser()
{