From fbddfa14950f43867ada15c898d57b6eae4d60eb Mon Sep 17 00:00:00 2001 From: XingY Date: Wed, 1 Apr 2026 16:53:37 -0700 Subject: [PATCH 1/2] Selenium test for GitHub Issue 987 --- .../labkey/test/components/ui/grids/GridFilterModal.java | 7 ++++++- .../labkey/test/components/ui/grids/ResponsiveGrid.java | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/org/labkey/test/components/ui/grids/GridFilterModal.java b/src/org/labkey/test/components/ui/grids/GridFilterModal.java index 5f34cbcb5b..6398cea9ef 100644 --- a/src/org/labkey/test/components/ui/grids/GridFilterModal.java +++ b/src/org/labkey/test/components/ui/grids/GridFilterModal.java @@ -171,9 +171,14 @@ public String confirmExpectingError() return getWrapper().shortWait().until(ExpectedConditions.visibilityOf(elementCache().errorAlert)).getText(); } + public boolean isConfirmButtonEnabled() + { + return elementCache().submitButton.isEnabled(); + } + protected void clickConfirm() { - if (!elementCache().submitButton.isEnabled()) + if (!isConfirmButtonEnabled()) { throw new IllegalStateException("Confirmation button is not enabled."); } diff --git a/src/org/labkey/test/components/ui/grids/ResponsiveGrid.java b/src/org/labkey/test/components/ui/grids/ResponsiveGrid.java index ae0030bf46..aa76482cf6 100644 --- a/src/org/labkey/test/components/ui/grids/ResponsiveGrid.java +++ b/src/org/labkey/test/components/ui/grids/ResponsiveGrid.java @@ -240,10 +240,10 @@ public String filterColumnExpectingError(CharSequence columnIdentifier, Filter.O return errorMsg; } -private static final List ARRAY_OPERATORS = List.of(ARRAY_CONTAINS_ALL, ARRAY_CONTAINS_ANY, ARRAY_CONTAINS_EXACT, ARRAY_CONTAINS_NONE, + private static final List ARRAY_OPERATORS = List.of(ARRAY_CONTAINS_ALL, ARRAY_CONTAINS_ANY, ARRAY_CONTAINS_EXACT, ARRAY_CONTAINS_NONE, ARRAY_CONTAINS_NOT_EXACT, ARRAY_ISEMPTY, ARRAY_ISNOTEMPTY); - private GridFilterModal initFilterColumn(CharSequence columnIdentifier, Filter.Operator operator, Object value) + public GridFilterModal initFilterColumn(CharSequence columnIdentifier, Filter.Operator operator, Object value) { clickColumnMenuItem(columnIdentifier, "Filter...", false); GridFilterModal filterModal = new GridFilterModal(getDriver(), this); From 15e72fdb4e9044a4dcb5e3d01a9b56847bba9660 Mon Sep 17 00:00:00 2001 From: XingY Date: Mon, 6 Apr 2026 18:13:35 -0700 Subject: [PATCH 2/2] GitHub Issue 987 --- src/org/labkey/test/components/ui/grids/EditableGrid.java | 2 +- src/org/labkey/test/components/ui/grids/ResponsiveGrid.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/org/labkey/test/components/ui/grids/EditableGrid.java b/src/org/labkey/test/components/ui/grids/EditableGrid.java index 6b1c20097d..f53a91cd04 100644 --- a/src/org/labkey/test/components/ui/grids/EditableGrid.java +++ b/src/org/labkey/test/components/ui/grids/EditableGrid.java @@ -949,7 +949,7 @@ public static String formatForPaste(List> rows) if (value instanceof List l) sb.append(formatMultiValueText(l)); else - sb.append(value); + sb.append(quoteForPaste(value.toString())); } } return sb.toString(); diff --git a/src/org/labkey/test/components/ui/grids/ResponsiveGrid.java b/src/org/labkey/test/components/ui/grids/ResponsiveGrid.java index aa76482cf6..ec6501e08c 100644 --- a/src/org/labkey/test/components/ui/grids/ResponsiveGrid.java +++ b/src/org/labkey/test/components/ui/grids/ResponsiveGrid.java @@ -48,6 +48,7 @@ import static org.labkey.remoteapi.query.Filter.Operator.ARRAY_CONTAINS_NOT_EXACT; import static org.labkey.remoteapi.query.Filter.Operator.ARRAY_ISEMPTY; import static org.labkey.remoteapi.query.Filter.Operator.ARRAY_ISNOTEMPTY; +import static org.labkey.test.WebDriverWrapper.sleep; import static org.labkey.test.WebDriverWrapper.waitFor; public class ResponsiveGrid> extends WebDriverComponent.ElementCache> implements UpdatingComponent @@ -261,6 +262,7 @@ public GridFilterModal initFilterColumn(CharSequence columnIdentifier, Filter.Op List values = (List) value; filterPanel.selectValue(values.get(0)); filterPanel.checkValues(values.toArray(String[]::new)); + sleep(500); } } else