Skip to content

Issue 53306: Some LKS forms don't distinguish between fields properly #2521

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 23 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
062901c
Issue 53306: Some LKS forms don't distinguish between fields differin…
labkey-jeckels Jun 27, 2025
9f3d181
Merge branch 'develop' into fb_53306_propertyName
labkey-jeckels Jun 27, 2025
0d906aa
Update expected field names
labkey-jeckels Jun 27, 2025
15153b8
Merge branch 'develop' into fb_53306_propertyName
labkey-jeckels Jun 27, 2025
680d396
Update input element names
labkey-jeckels Jun 28, 2025
4590fda
Merge branch 'develop' into fb_53306_propertyName
labkey-jeckels Jun 28, 2025
06aa62c
Fix build
labkey-jeckels Jun 28, 2025
b141a1d
Test fixes
labkey-jeckels Jun 28, 2025
9d08e26
Test fixes
labkey-jeckels Jun 28, 2025
a720c3a
Test fixes
labkey-jeckels Jun 29, 2025
ef1d0b5
Test fixes
labkey-jeckels Jul 2, 2025
e4c5884
Merge branch 'develop' into fb_53306_propertyName
labkey-jeckels Jul 2, 2025
d133285
Test fixes
labkey-jeckels Jul 7, 2025
cf61ec1
Test fixes
labkey-jeckels Jul 7, 2025
0c13db0
Merge branch 'develop' into fb_53306_propertyName
labkey-jeckels Jul 7, 2025
8a873ef
Test fixes
labkey-jeckels Jul 9, 2025
c86ea9a
Merge branch 'develop' into fb_53306_propertyName
labkey-jeckels Jul 9, 2025
8990ec8
Test fixes
labkey-jeckels Jul 10, 2025
7c22c8a
Merge branch 'develop' into fb_53306_propertyName
labkey-jeckels Jul 10, 2025
f5cc1cb
Test fixes
labkey-jeckels Jul 10, 2025
5ba4582
Update names
labkey-jeckels Jul 14, 2025
8bf93d2
More constants for field names
labkey-jeckels Jul 14, 2025
84564ab
Merge branch 'develop' into fb_53306_propertyName
labkey-jeckels Jul 14, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/org/labkey/test/AssayAPITest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.labkey.remoteapi.assay.SaveProtocolCommand;
import org.labkey.test.categories.Assays;
import org.labkey.test.categories.Daily;
import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.pages.ReactAssayDesignerPage;
import org.labkey.test.params.FieldDefinition;
import org.labkey.test.util.APIAssayHelper;
Expand Down Expand Up @@ -111,7 +112,7 @@ protected void importAssayAndRun(File assayPath, int pipelineCount, String conta
_uiAssayHelper.uploadXarFileAsAssayDesign(assayPath, pipelineCount, container);

APIAssayHelper _apiAssayHelper = new APIAssayHelper(this);
_apiAssayHelper.importAssay(assayName, runPath, getProjectName(), Collections.singletonMap("ParticipantVisitResolver", "SampleInfo"));
_apiAssayHelper.importAssay(assayName, runPath, getProjectName(), Collections.singletonMap(AssayConstants.PARTICIPANT_VISIT_RESOLVER_FIELD_NAME, "SampleInfo"));

log("verify import worked");
goToProjectHome();
Expand Down
9 changes: 0 additions & 9 deletions src/org/labkey/test/WebDriverWrapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -2713,15 +2713,6 @@ public String getFormElement(WebElement el)
return el.getDomProperty("value");
}

/**
* @deprecated Use {@link org.junit.Assert#assertEquals(String, Object, Object) and {@link #getFormElement(Locator)}}
*/
@Deprecated
public void assertFormElementEquals(Locator loc, String value)
{
assertEquals(value, getFormElement(loc));
}

/**
* @deprecated Use {@link org.junit.Assert#assertEquals(String, Object, Object)} and
* {@link #getSelectedOptionText(Locator)}
Expand Down
16 changes: 16 additions & 0 deletions src/org/labkey/test/components/assay/AssayConstants.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.labkey.test.components.assay;

import org.labkey.test.Locator;

public class AssayConstants
{
public static final String PARTICIPANT_VISIT_RESOLVER_FIELD_NAME = "ParticipantVisitResolver";
public static final String THAW_LIST_TYPE_FIELD_NAME = "ThawListType";
public static final String TARGET_STUDY_FIELD_NAME = "TargetStudy";

public static final Locator ASSAY_NAME_FIELD_LOCATOR = Locator.name("Name");
public static final Locator COMMENTS_FIELD_LOCATOR = Locator.name("Comments");
public static final Locator TARGET_STUDY_FIELD_LOCATOR = Locator.name(TARGET_STUDY_FIELD_NAME);
public static final Locator TEXT_AREA_DATA_PROVIDER_LOCATOR = Locator.xpath("//input[@value='textAreaDataProvider']");
public static final Locator TEXT_AREA_DATA_COLLECTOR_LOCATOR = Locator.textarea("TextAreaDataCollector.textArea");
}
4 changes: 2 additions & 2 deletions src/org/labkey/test/pages/issues/BaseUpdatePage.java
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ protected class ElementCache extends BaseIssuePage.ElementCache
{
protected ElementCache()
{
assignedTo = getSelect("assignedTo");
priority = getSelect("priority");
assignedTo = getSelect("AssignedTo");
priority = getSelect("Priority");
related = getInput("related");
notifyList = getInput("notifyList");
}
Expand Down
2 changes: 1 addition & 1 deletion src/org/labkey/test/params/FieldDefinition.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public FieldDefinition withNewName(String newName)
* Define a String field
* @param name field name
*/
public FieldDefinition(String name)
public FieldDefinition(@NotNull String name)
{
this(name, ColumnType.String);
}
Expand Down
55 changes: 30 additions & 25 deletions src/org/labkey/test/tests/AssayExportImportTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import org.labkey.test.TestFileUtils;
import org.labkey.test.TestTimeoutException;
import org.labkey.test.categories.Daily;
import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.components.ext4.Checkbox;
import org.labkey.test.pages.ReactAssayDesignerPage;
import org.labkey.test.pages.admin.ExportFolderPage;
Expand Down Expand Up @@ -68,6 +69,10 @@
@BaseWebDriverTest.ClassTimeout(minutes = 10)
public class AssayExportImportTest extends BaseWebDriverTest
{
public static final String INSTRUMENT_SETTING_FIELD_NAME = "instrumentSetting";
public static final String RUN_FILE_FIELD_NAME = "runFileField";
public static final String OPERATOR_EMAIL_FIELD_NAME = "operatorEmail";
public static final String INSTRUMENT_FIELD_NAME = "instrument";
private final String ASSAY_PROJECT_FOR_EXPORT_01 = "Assay_Project_For_Export_ByFilesWebPart";
private final String ASSAY_PROJECT_FOR_IMPORT_01 = "Assay_Project_For_Import_ByFilesWebPart";
private final String ASSAY_PROJECT_FOR_EXPORT_02 = "Assay_Project_For_Export_ByFile";
Expand Down Expand Up @@ -170,16 +175,16 @@ private Integer createSimpleProjectAndAssay(String projectName, String assayName
protocol.getDomains().forEach(domain -> domains.put(domain.getName(), domain));

Domain batchDomain = domains.get("Batch Fields");
batchDomain.getFields().add(new FieldDefinition("operatorEmail", ColumnType.String));
batchDomain.getFields().add(new FieldDefinition("instrument", ColumnType.String)
batchDomain.getFields().add(new FieldDefinition(OPERATOR_EMAIL_FIELD_NAME, ColumnType.String));
batchDomain.getFields().add(new FieldDefinition(INSTRUMENT_FIELD_NAME, ColumnType.String)
.setDescription("The diagnostic test instrument."));

Domain runDomain = domains.get("Run Fields");
List<PropertyDescriptor> runFields = runDomain.getFields();
runFields.add(new FieldDefinition("instrumentSetting", ColumnType.Integer)
runFields.add(new FieldDefinition(INSTRUMENT_SETTING_FIELD_NAME, ColumnType.Integer)
.setDescription("The configuration setting on the instrument."));
if (hasRunFileField)
runFields.add(new FieldDefinition("runFileField", ColumnType.File)
runFields.add(new FieldDefinition(RUN_FILE_FIELD_NAME, ColumnType.File)
.setDescription("File for the run."));
domains.get("Run Fields").setFields(runFields);

Expand Down Expand Up @@ -236,7 +241,7 @@ public void populateAssay(String projectName, String assayName, boolean useFiles
clickAndWait(Locator.lkButton("Import Data"));
}

waitForElement(Locator.tagWithName("select", "targetStudy"));
waitForElement(AssayConstants.TARGET_STUDY_FIELD_LOCATOR);

if(null != batchProperties)
{
Expand Down Expand Up @@ -267,7 +272,7 @@ public void populateAssay(String projectName, String assayName, boolean useFiles
if (fileIndex < runProperties.size())
{
clickAndWait(Locator.lkButton("Save and Import Another Run"));
waitForElement(Locator.tagWithName("input", "instrumentSetting"));
waitForElement(Locator.tagWithName("input", INSTRUMENT_SETTING_FIELD_NAME));
}

}
Expand All @@ -276,7 +281,7 @@ public void populateAssay(String projectName, String assayName, boolean useFiles
if (isElementPresent(Locator.lkButton("Save and Import Another Run")))
{
clickAndWait(Locator.lkButton("Save and Import Another Run"));
waitForElement(Locator.tagWithName("input", "instrumentSetting"));
waitForElement(Locator.tagWithName("input", INSTRUMENT_SETTING_FIELD_NAME));
}
}

Expand Down Expand Up @@ -383,14 +388,14 @@ public void validateImportingFileUsingFilesWebPart() throws Exception
RUN04_FILE);

Map<String, String> batchProperties = new HashMap<>();
batchProperties.put("operatorEmail", OPERATOR_EMAIL_01);
batchProperties.put("instrument", INSTRUMENT_NAME_01);
batchProperties.put(OPERATOR_EMAIL_FIELD_NAME, OPERATOR_EMAIL_01);
batchProperties.put(INSTRUMENT_FIELD_NAME, INSTRUMENT_NAME_01);

List<Map<String, String>> runProperties = new ArrayList<>();
runProperties.add(Maps.of("name", RUN01_NAME, "comments", COMMENT_BASIC_01 + RUN01_NAME, "instrumentSetting", INSTRUMENT_SETTING_01));
runProperties.add(Maps.of("name", RUN02_NAME, "comments", COMMENT_BASIC_01 + RUN02_NAME, "instrumentSetting", INSTRUMENT_SETTING_01));
runProperties.add(Maps.of("name", RUN03_NAME, "comments", COMMENT_BASIC_01 + RUN03_NAME, "instrumentSetting", INSTRUMENT_SETTING_01));
runProperties.add(Maps.of("name", RUN04_NAME, "comments", COMMENT_BASIC_01 + RUN04_NAME, "instrumentSetting", INSTRUMENT_SETTING_01));
runProperties.add(Maps.of("Name", RUN01_NAME, "Comments", COMMENT_BASIC_01 + RUN01_NAME, INSTRUMENT_SETTING_FIELD_NAME, INSTRUMENT_SETTING_01));
runProperties.add(Maps.of("Name", RUN02_NAME, "Comments", COMMENT_BASIC_01 + RUN02_NAME, INSTRUMENT_SETTING_FIELD_NAME, INSTRUMENT_SETTING_01));
runProperties.add(Maps.of("Name", RUN03_NAME, "Comments", COMMENT_BASIC_01 + RUN03_NAME, INSTRUMENT_SETTING_FIELD_NAME, INSTRUMENT_SETTING_01));
runProperties.add(Maps.of("Name", RUN04_NAME, "Comments", COMMENT_BASIC_01 + RUN04_NAME, INSTRUMENT_SETTING_FIELD_NAME, INSTRUMENT_SETTING_01));

log("Populate the assay '" + SIMPLE_ASSAY_FOR_EXPORT + "' by using files in the Files WebPart.");
populateAssay(ASSAY_PROJECT_FOR_EXPORT_01, SIMPLE_ASSAY_FOR_EXPORT, true, runFiles, batchProperties, runProperties, SAMPLE_TXT_FILE);
Expand Down Expand Up @@ -478,14 +483,14 @@ public void validateImportingFileUsingRunProperties() throws Exception
RUN04_FILE);

Map<String, String> batchProperties = new HashMap<>();
batchProperties.put("operatorEmail", OPERATOR_EMAIL_02);
batchProperties.put("instrument", INSTRUMENT_NAME_02);
batchProperties.put(OPERATOR_EMAIL_FIELD_NAME, OPERATOR_EMAIL_02);
batchProperties.put(INSTRUMENT_FIELD_NAME, INSTRUMENT_NAME_02);

List<Map<String, String>> runProperties = new ArrayList<>();
runProperties.add(Maps.of("name", RUN01_NAME, "comments", COMMENT_BASIC_02 + RUN01_NAME, "instrumentSetting", INSTRUMENT_SETTING_02));
runProperties.add(Maps.of("name", RUN02_NAME, "comments", COMMENT_BASIC_02 + RUN02_NAME, "instrumentSetting", INSTRUMENT_SETTING_02));
runProperties.add(Maps.of("name", RUN03_NAME, "comments", COMMENT_BASIC_02 + RUN03_NAME, "instrumentSetting", INSTRUMENT_SETTING_02));
runProperties.add(Maps.of("name", RUN04_NAME, "comments", COMMENT_BASIC_02 + RUN04_NAME, "instrumentSetting", INSTRUMENT_SETTING_02));
runProperties.add(Maps.of("Name", RUN01_NAME, "Comments", COMMENT_BASIC_02 + RUN01_NAME, INSTRUMENT_SETTING_FIELD_NAME, INSTRUMENT_SETTING_02));
runProperties.add(Maps.of("Name", RUN02_NAME, "Comments", COMMENT_BASIC_02 + RUN02_NAME, INSTRUMENT_SETTING_FIELD_NAME, INSTRUMENT_SETTING_02));
runProperties.add(Maps.of("Name", RUN03_NAME, "Comments", COMMENT_BASIC_02 + RUN03_NAME, INSTRUMENT_SETTING_FIELD_NAME, INSTRUMENT_SETTING_02));
runProperties.add(Maps.of("Name", RUN04_NAME, "Comments", COMMENT_BASIC_02 + RUN04_NAME, INSTRUMENT_SETTING_FIELD_NAME, INSTRUMENT_SETTING_02));

log("Populate the assay '" + SIMPLE_ASSAY_FOR_EXPORT + "' by importing the file through the 'Run Properties'.");
populateAssay(ASSAY_PROJECT_FOR_EXPORT_02, SIMPLE_ASSAY_FOR_EXPORT, false, runFiles, batchProperties, runProperties, null);
Expand Down Expand Up @@ -583,8 +588,8 @@ private void createGeneralAssayWithoutTransform(String assayName)
ReactAssayDesignerPage assayDesignerPage = _assayHelper.createAssayDesign("General", assayName);

log("Remove the batch fields we don't care about.");
assayDesignerPage.goToBatchFields().removeField("ParticipantVisitResolver")
.removeField("TargetStudy");
assayDesignerPage.goToBatchFields().removeField(AssayConstants.PARTICIPANT_VISIT_RESOLVER_FIELD_NAME)
.removeField(AssayConstants.TARGET_STUDY_FIELD_NAME);

assayDesignerPage.goToResultsFields()
.removeAllFields(false)
Expand Down Expand Up @@ -665,25 +670,25 @@ public void testExportXarToPipeline() throws Exception
ImportRunCommand run1 = new ImportRunCommand(assayId, RUN01_FILE);
run1.setName(RUN01_NAME);
run1.setComment(commentPrefix + RUN01_NAME);
run1.setProperties(Maps.of("instrumentSetting", instrumentSetting));
run1.setProperties(Maps.of(INSTRUMENT_SETTING_FIELD_NAME, instrumentSetting));
run1.execute(cn, exportProject);

ImportRunCommand run2 = new ImportRunCommand(assayId, RUN02_FILE);
run2.setName(RUN02_NAME);
run2.setComment(commentPrefix + RUN02_NAME);
run2.setProperties(Maps.of("instrumentSetting", instrumentSetting));
run2.setProperties(Maps.of(INSTRUMENT_SETTING_FIELD_NAME, instrumentSetting));
run2.execute(cn, exportProject);

ImportRunCommand run3 = new ImportRunCommand(assayId, RUN03_FILE);
run3.setName(RUN03_NAME);
run3.setComment(commentPrefix + RUN03_NAME);
run3.setProperties(Maps.of("instrumentSetting", instrumentSetting));
run3.setProperties(Maps.of(INSTRUMENT_SETTING_FIELD_NAME, instrumentSetting));
run3.execute(cn, exportProject);

ImportRunCommand run4 = new ImportRunCommand(assayId, RUN04_XLSX_FILE);
run4.setName(RUN04_NAME);
run4.setComment(commentPrefix + RUN04_NAME);
run4.setProperties(Maps.of("instrumentSetting", instrumentSetting));
run4.setProperties(Maps.of(INSTRUMENT_SETTING_FIELD_NAME, instrumentSetting));
run4.execute(cn, exportProject);

List<String> runColumns = Arrays.asList("adjustedM1", "M2");
Expand Down
3 changes: 2 additions & 1 deletion src/org/labkey/test/tests/DatasetExportTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.labkey.test.BaseWebDriverTest;
import org.labkey.test.Locator;
import org.labkey.test.categories.Daily;
import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.util.DataRegionTable;

import java.util.Arrays;
Expand Down Expand Up @@ -110,7 +111,7 @@ public void setupDataset() throws Exception
DataRegionTable assayResults = new DataRegionTable(super.getDataRegionId(), this);
assayResults.checkAllOnPage();
clickButton("Link to Study");
selectOptionByText(Locator.name("targetStudy"), "/" + getProjectName() + "/" + getFolderName() + " (" + getFolderName() + " Study)");
selectOptionByText(AssayConstants.TARGET_STUDY_FIELD_LOCATOR, "/" + getProjectName() + "/" + getFolderName() + " (" + getFolderName() + " Study)");
clickButton("Next");
clickButton("Link to Study");
}
Expand Down
3 changes: 2 additions & 1 deletion src/org/labkey/test/tests/DomainFieldTypeChangeTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.labkey.test.WebTestHelper;
import org.labkey.test.categories.Daily;
import org.labkey.test.components.DomainDesignerPage;
import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.components.domain.DomainFormPanel;
import org.labkey.test.pages.ReactAssayDesignerPage;
import org.labkey.test.pages.query.UpdateQueryRowPage;
Expand Down Expand Up @@ -178,7 +179,7 @@ public void testNonProvisionedDomainFieldChanges()
checkCheckbox(Locator.name("batchTestBoolean"));
clickButton("Next");

setFormElement(Locator.name("name"), runName);
setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, runName);
setFormElement(Locator.name("runTestInteger"), "12");
setFormElement(Locator.name("runTestDecimal"), "1.12");
setFormElement(Locator.name("runTestDate"), "01-03-2022");
Expand Down
3 changes: 2 additions & 1 deletion src/org/labkey/test/tests/FileAttachmentColumnTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.labkey.test.TestFileUtils;
import org.labkey.test.TestTimeoutException;
import org.labkey.test.categories.Daily;
import org.labkey.test.components.assay.AssayConstants;
import org.labkey.test.pages.admin.FolderManagementPage;
import org.labkey.test.pages.assay.AssayRunsPage;
import org.labkey.test.pages.files.FileContentPage;
Expand Down Expand Up @@ -282,7 +283,7 @@ public void testAssayFileFieldsUI() throws Exception
clickButton("Next"); // batch properties

// run properties
setFormElement(Locator.input("name"), runName);
setFormElement(AssayConstants.ASSAY_NAME_FIELD_LOCATOR, runName);
setFormElement(Locator.input(RUN_TXT_COL), "run text");
setFormElement(Locator.input(RUN_FILE_COL), runFileFieldFile);
checkRadioButton(Locator.inputById("Fileupload"));
Expand Down
Loading