From b97f174a6d84f484a0f551778f0116aaac24b126 Mon Sep 17 00:00:00 2001 From: labkey-nicka Date: Tue, 11 Nov 2025 10:12:15 -0800 Subject: [PATCH 1/3] Escape characters in form field names --- src/org/labkey/test/pages/assay/AssayImportPage.java | 12 +++++++----- src/org/labkey/test/util/EscapeUtil.java | 5 +++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/org/labkey/test/pages/assay/AssayImportPage.java b/src/org/labkey/test/pages/assay/AssayImportPage.java index f53d76c48e..24a2aa03b6 100644 --- a/src/org/labkey/test/pages/assay/AssayImportPage.java +++ b/src/org/labkey/test/pages/assay/AssayImportPage.java @@ -29,6 +29,8 @@ import java.io.File; +import static org.labkey.test.util.EscapeUtil.getTableViewFormFieldName; + public class AssayImportPage extends LabKeyPage { public AssayImportPage(WebDriver driver) @@ -38,28 +40,28 @@ public AssayImportPage(WebDriver driver) public AssayImportPage setNamedInputText(String name, String text) { - WebElement input = Locator.input(name).findElement(getDriver()); + WebElement input = Locator.input(getTableViewFormFieldName(name)).findElement(getDriver()); new Input(input, getDriver()).set(text); return this; } public AssayImportPage selectNamedFieldOption(String name, String text) { - WebElement input = Locator.xpath("//select[@name='" + name +"']").findElement(getDriver()); + WebElement input = Locator.tagWithName("select", getTableViewFormFieldName(name)).findElement(getDriver()); new OptionSelect(input).set(text); return this; } public AssayImportPage setNamedTextAreaValue(String name, String text) { - WebElement input = Locator.textarea(name).findElement(getDriver()); + WebElement input = Locator.textarea(getTableViewFormFieldName(name)).findElement(getDriver()); setFormElement(input, text); return this; } public AssayImportPage setFileField(String name, File file) { - setFormElement(Locator.input(name), file); + setFormElement(Locator.input(getTableViewFormFieldName(name)), file); return this; } @@ -112,7 +114,7 @@ public AssayImportPage selectUploadFileRadioButton() return StringUtils.trimToNull(text.replace("[remove]", "")); } - var fileInput = Locator.input(fieldName); + var fileInput = Locator.input(getTableViewFormFieldName(fieldName)); if (isElementPresent(fileInput)) return getFormElement(fileInput); diff --git a/src/org/labkey/test/util/EscapeUtil.java b/src/org/labkey/test/util/EscapeUtil.java index 643dfb2f76..8c3fe49aa1 100644 --- a/src/org/labkey/test/util/EscapeUtil.java +++ b/src/org/labkey/test/util/EscapeUtil.java @@ -266,6 +266,11 @@ public static String getFormFieldName(String columnName) return getFormFieldName(columnName, FORM_FIELD_PREFIX); } + public static String getTableViewFormFieldName(String columnName) + { + return getFormFieldName(columnName, null); + } + /** * Escapes special characters in a column name to be used as a form field name. * See associated {@link org.labkey.api.query.QueryUpdateForm#getFormFieldName} From a142da0cde005ff43492fe232c8e0354afdf13e7 Mon Sep 17 00:00:00 2001 From: labkey-nicka Date: Wed, 12 Nov 2025 15:58:45 -0800 Subject: [PATCH 2/3] Additional tests --- .../test/pages/assay/AssayImportPage.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/org/labkey/test/pages/assay/AssayImportPage.java b/src/org/labkey/test/pages/assay/AssayImportPage.java index 24a2aa03b6..b7c7f781ef 100644 --- a/src/org/labkey/test/pages/assay/AssayImportPage.java +++ b/src/org/labkey/test/pages/assay/AssayImportPage.java @@ -95,6 +95,15 @@ public AssayImportPage selectUploadFileRadioButton() return this; } + public @Nullable String getFieldValue(String fieldName) + { + var input = Locator.input(getTableViewFormFieldName(fieldName)); + if (isElementPresent(input)) + return getFormElement(input); + + return null; + } + /** * Retrieves the file name for a field if it has been previously uploaded. In this case the server * will display a file name with an icon and a "[remove]" link. If a value has not been previously uploaded, @@ -114,11 +123,17 @@ public AssayImportPage selectUploadFileRadioButton() return StringUtils.trimToNull(text.replace("[remove]", "")); } - var fileInput = Locator.input(getTableViewFormFieldName(fieldName)); - if (isElementPresent(fileInput)) - return getFormElement(fileInput); + return getFieldValue(fieldName); + } - return null; + public AssayImportPage removeFileValue(String fieldName) + { + var removeFileLink = Locator.tagWithClass("div", "lk-remove-file") + .withAttribute("data-fieldname", fieldName) + .child(Locator.tagWithText("a", "remove")); + + removeFileLink.findElement(getDriver()).click(); + return this; } /* button actions */ From 7c6f32700c03d95cee931a3ea240029282a2579b Mon Sep 17 00:00:00 2001 From: labkey-nicka Date: Thu, 13 Nov 2025 10:10:21 -0800 Subject: [PATCH 3/3] Update test --- src/org/labkey/test/tests/AttachmentFieldTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/org/labkey/test/tests/AttachmentFieldTest.java b/src/org/labkey/test/tests/AttachmentFieldTest.java index dfe316e6f7..1d4ab55465 100644 --- a/src/org/labkey/test/tests/AttachmentFieldTest.java +++ b/src/org/labkey/test/tests/AttachmentFieldTest.java @@ -148,7 +148,6 @@ private void verifyUnavailableFile() clickAndWait(Locator.tagWithText("a", "S1")); clickAndWait(Locator.tagWithClass("a", "labkey-text-link").withText("edit")); waitForElement(Locator.tagContainingText("div", "jpg_sample.jpg (unavailable)")); - assertElementNotPresent(Locator.tagWithAttributeContaining("img", "src", "/_icons/image.png")); } @Test