From a625be0cf76881a81a37f469ff5b6fdfe8a0e428 Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Tue, 26 Aug 2025 16:16:44 -0700 Subject: [PATCH 1/3] Hide some columns in EditableGridTest --- .../tests/component/EditableGridTest.java | 117 ++++++++++++------ 1 file changed, 80 insertions(+), 37 deletions(-) diff --git a/src/org/labkey/test/tests/component/EditableGridTest.java b/src/org/labkey/test/tests/component/EditableGridTest.java index a44e8ad3d1..7ba352f2a2 100644 --- a/src/org/labkey/test/tests/component/EditableGridTest.java +++ b/src/org/labkey/test/tests/component/EditableGridTest.java @@ -1,12 +1,14 @@ package org.labkey.test.tests.component; import org.apache.commons.lang3.StringUtils; +import org.json.JSONObject; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; import org.labkey.remoteapi.CommandException; import org.labkey.remoteapi.Connection; +import org.labkey.remoteapi.SimplePostCommand; import org.labkey.remoteapi.query.InsertRowsCommand; import org.labkey.test.BaseWebDriverTest; import org.labkey.test.Locator; @@ -21,7 +23,7 @@ import org.labkey.test.params.experiment.SampleTypeDefinition; import org.labkey.test.params.list.IntListDefinition; import org.labkey.test.params.list.ListDefinition; -import org.labkey.test.util.TextUtils; +import org.labkey.test.util.EscapeUtil; import org.openqa.selenium.Dimension; import org.openqa.selenium.Keys; import org.openqa.selenium.WebElement; @@ -130,41 +132,82 @@ private void doSetup() throws Exception createLookupList(connection); new SampleTypeDefinition(EXTRAPOLATING_SAMPLE_TYPE) - .setFields( - List.of( - ASC_STRING.getFieldDefinition(), - DESC_STRING.getFieldDefinition(), - ASC_INT.getFieldDefinition(), - DESC_INT.getFieldDefinition(), - ASC_DATE.getFieldDefinition(), - DESC_DATE.getFieldDefinition() - )) - .create(connection, getProjectName()); + .setFields( + List.of( + ASC_STRING.getFieldDefinition(), + DESC_STRING.getFieldDefinition(), + ASC_INT.getFieldDefinition(), + DESC_INT.getFieldDefinition(), + ASC_DATE.getFieldDefinition(), + DESC_DATE.getFieldDefinition() + )) + .getCreateCommand() + .execute(connection, getProjectName()); + new SampleTypeDefinition(FILLING_SAMPLE_TYPE) - .setFields( - List.of( - FILL_STRING.getFieldDefinition(), - FILL_MULTI_LINE.getFieldDefinition(), - FILL_INT.getFieldDefinition(), - FILL_DATE.getFieldDefinition() - )) - .create(connection, getProjectName()); + .setFields( + List.of( + FILL_STRING.getFieldDefinition(), + FILL_MULTI_LINE.getFieldDefinition(), + FILL_INT.getFieldDefinition(), + FILL_DATE.getFieldDefinition() + )) + .getCreateCommand() + .execute(connection, getProjectName()); + new SampleTypeDefinition(PASTING_SAMPLE_TYPE) - .setFields( - List.of( - PASTE_1.getFieldDefinition(), - PASTE_2.getFieldDefinition(), - PASTE_3.getFieldDefinition(), - PASTE_4.getFieldDefinition(), - PASTE_5.getFieldDefinition(), - PASTE_ML.getFieldDefinition() - )) - .create(connection, getProjectName()); + .setFields( + List.of( + PASTE_1.getFieldDefinition(), + PASTE_2.getFieldDefinition(), + PASTE_3.getFieldDefinition(), + PASTE_4.getFieldDefinition(), + PASTE_5.getFieldDefinition(), + PASTE_ML.getFieldDefinition() + )) + .getCreateCommand() + .execute(connection, getProjectName()); new SampleTypeDefinition(ALL_TYPE_SAMPLE_TYPE) - .setFields( - ALL_FIELDS.stream().map(FieldInfo::getFieldDefinition).toList()) - .create(connection, getProjectName()); + .setFields( + ALL_FIELDS.stream().map(FieldInfo::getFieldDefinition).toList()) + .getCreateCommand() + .execute(connection, getProjectName()); + + for (String sampleType : List.of(EXTRAPOLATING_SAMPLE_TYPE, FILLING_SAMPLE_TYPE, PASTING_SAMPLE_TYPE, ALL_TYPE_SAMPLE_TYPE)) + { + // Hide columns from editable grid so that test columns are in view + String metadataXml = """ + + + + + false + + + false + + + false + + + false + + + false + + +
+
+ """.formatted(EscapeUtil.getMarkupEscapedValue(sampleType)); + + SimplePostCommand postCommand = new SimplePostCommand("query", "saveSourceQuery"); + postCommand.setJsonObject(new JSONObject()); + postCommand.getJsonObject().put("ff_metadataText", metadataXml); + postCommand.getJsonObject().put("schemaName", "samples"); + postCommand.getJsonObject().put("queryName", sampleType); + postCommand.execute(connection, getProjectName()); +} } @Test @@ -1000,10 +1043,10 @@ public void testShiftArrowSelectHorizontal() .verifyEquals("There should be no grid cells already selected. Fatal error.", 0, editableGrid.getSelectedCells().size()); - int startColumn = editableGrid.getColumnIndex(PASTE_1); + int startColumn = editableGrid.getColumnIndex(PASTE_3); int gridRow = 4; - WebElement startCell = editableGrid.getCell(gridRow, PASTE_1); + WebElement startCell = editableGrid.getCell(gridRow, PASTE_3); startCell.click(); log("Select a few horizontal cells the the left in the grid."); @@ -1100,10 +1143,10 @@ public void testShiftArrowSelectHorizontal() checker().verifyEquals("Hitting should have removed the selection.", 0, editableGrid.getSelectedCells().size()); - WebElement endCell = Locator.tag("div").findWhenNeeded(editableGrid.getCell(gridRow, PASTE_2)); + WebElement endCell = Locator.tag("div").findWhenNeeded(editableGrid.getCell(gridRow, PASTE_4)); checker().verifyTrue(String.format("The expected cell on row %d and column %s is not selected after hitting .", - gridRow, PASTE_2), + gridRow, PASTE_4), Objects.requireNonNullElse(endCell.getAttribute("class"), "").toLowerCase().contains("cell-selected")); checker().screenShotIfNewError("TAB_ERROR"); @@ -1138,7 +1181,7 @@ public void testShiftArrowSelect2D() 0, editableGrid.getSelectedCells().size()); List columns = editableGrid.getColumnLabels(); - int startColumn = columns.indexOf("Description"); + int startColumn = 4; int startRow = 5; WebElement startCell = editableGrid.getCell(startRow, columns.get(startColumn)); From 7e996fb536ae290092ef0d182853cf1b6564f554 Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Tue, 26 Aug 2025 16:22:06 -0700 Subject: [PATCH 2/3] Minimize change --- .../tests/component/EditableGridTest.java | 70 +++++++++---------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/src/org/labkey/test/tests/component/EditableGridTest.java b/src/org/labkey/test/tests/component/EditableGridTest.java index 7ba352f2a2..b464327f69 100644 --- a/src/org/labkey/test/tests/component/EditableGridTest.java +++ b/src/org/labkey/test/tests/component/EditableGridTest.java @@ -132,47 +132,41 @@ private void doSetup() throws Exception createLookupList(connection); new SampleTypeDefinition(EXTRAPOLATING_SAMPLE_TYPE) - .setFields( - List.of( - ASC_STRING.getFieldDefinition(), - DESC_STRING.getFieldDefinition(), - ASC_INT.getFieldDefinition(), - DESC_INT.getFieldDefinition(), - ASC_DATE.getFieldDefinition(), - DESC_DATE.getFieldDefinition() - )) - .getCreateCommand() - .execute(connection, getProjectName()); - + .setFields( + List.of( + ASC_STRING.getFieldDefinition(), + DESC_STRING.getFieldDefinition(), + ASC_INT.getFieldDefinition(), + DESC_INT.getFieldDefinition(), + ASC_DATE.getFieldDefinition(), + DESC_DATE.getFieldDefinition() + )) + .create(connection, getProjectName()); new SampleTypeDefinition(FILLING_SAMPLE_TYPE) - .setFields( - List.of( - FILL_STRING.getFieldDefinition(), - FILL_MULTI_LINE.getFieldDefinition(), - FILL_INT.getFieldDefinition(), - FILL_DATE.getFieldDefinition() - )) - .getCreateCommand() - .execute(connection, getProjectName()); - + .setFields( + List.of( + FILL_STRING.getFieldDefinition(), + FILL_MULTI_LINE.getFieldDefinition(), + FILL_INT.getFieldDefinition(), + FILL_DATE.getFieldDefinition() + )) + .create(connection, getProjectName()); new SampleTypeDefinition(PASTING_SAMPLE_TYPE) - .setFields( - List.of( - PASTE_1.getFieldDefinition(), - PASTE_2.getFieldDefinition(), - PASTE_3.getFieldDefinition(), - PASTE_4.getFieldDefinition(), - PASTE_5.getFieldDefinition(), - PASTE_ML.getFieldDefinition() - )) - .getCreateCommand() - .execute(connection, getProjectName()); + .setFields( + List.of( + PASTE_1.getFieldDefinition(), + PASTE_2.getFieldDefinition(), + PASTE_3.getFieldDefinition(), + PASTE_4.getFieldDefinition(), + PASTE_5.getFieldDefinition(), + PASTE_ML.getFieldDefinition() + )) + .create(connection, getProjectName()); new SampleTypeDefinition(ALL_TYPE_SAMPLE_TYPE) - .setFields( - ALL_FIELDS.stream().map(FieldInfo::getFieldDefinition).toList()) - .getCreateCommand() - .execute(connection, getProjectName()); + .setFields( + ALL_FIELDS.stream().map(FieldInfo::getFieldDefinition).toList()) + .create(connection, getProjectName()); for (String sampleType : List.of(EXTRAPOLATING_SAMPLE_TYPE, FILLING_SAMPLE_TYPE, PASTING_SAMPLE_TYPE, ALL_TYPE_SAMPLE_TYPE)) { @@ -207,7 +201,7 @@ private void doSetup() throws Exception postCommand.getJsonObject().put("schemaName", "samples"); postCommand.getJsonObject().put("queryName", sampleType); postCommand.execute(connection, getProjectName()); -} + } } @Test From ab5287b792632544995ebbb86bccd731da4b7a0f Mon Sep 17 00:00:00 2001 From: labkey-tchad Date: Wed, 27 Aug 2025 10:09:22 -0700 Subject: [PATCH 3/3] Scroll a bit --- .../tests/component/EditableGridTest.java | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/org/labkey/test/tests/component/EditableGridTest.java b/src/org/labkey/test/tests/component/EditableGridTest.java index b464327f69..b18ece5a66 100644 --- a/src/org/labkey/test/tests/component/EditableGridTest.java +++ b/src/org/labkey/test/tests/component/EditableGridTest.java @@ -466,15 +466,12 @@ public void testShiftClick() Locator boxes = Locator.tag("tr").child("td") .child(Locator.tagWithAttribute("input", "type", "checkbox")); var checkBoxes = boxes.findElements(testGrid); - scrollIntoView(checkBoxes.get(0), true); // bring as much of the grid into view as possible + scrollIntoView(checkBoxes.get(2), false); + checkBoxes.get(2).click(); - new Actions(getDriver()) - .click(checkBoxes.get(2)) - .keyDown(Keys.SHIFT) - .click(checkBoxes.get(5)) - .click(checkBoxes.get(7)) - .keyUp(Keys.SHIFT) - .perform(); + shiftClickCheckbox(checkBoxes.get(5)); + + shiftClickCheckbox(checkBoxes.get(7)); // make sure 2-7 are still selected for (int i=2; i<7; i++) @@ -494,11 +491,8 @@ public void testShiftClick() checkBoxes = boxes.findElements(testGrid); // verify shift-select to another row does not select the range from the now-removed row - new Actions(getDriver()) - .keyDown(Keys.SHIFT) - .click(checkBoxes.get(7)) - .keyUp(Keys.SHIFT) - .perform(); + + shiftClickCheckbox(checkBoxes.get(7)); for (int i=2; i<6; i++) { @@ -508,6 +502,16 @@ public void testShiftClick() checker().screenShotIfNewError("unexpected_selection_range"); } + private void shiftClickCheckbox(WebElement el) + { + scrollIntoView(el, false); + new Actions(getDriver()) + .keyDown(Keys.SHIFT) + .click(el) + .keyUp(Keys.SHIFT) + .perform(); + } + @Test public void testExpandedPaste() { @@ -518,6 +522,7 @@ public void testExpandedPaste() EditableGrid testGrid = goToEditableGrid(PASTING_SAMPLE_TYPE); testGrid.addRows(5); + scrollIntoView(testGrid.getCell(3, PASTE_4), false); // Get target area into view log("Test wide"); testGrid.selectCellRange(testGrid.getCell(0, PASTE_1), testGrid.getCell(1, PASTE_4)); actionPaste(null, rowsToString(clipRows));