diff --git a/src/org/labkey/test/pages/reports/ManageViewsPage.java b/src/org/labkey/test/pages/reports/ManageViewsPage.java index 810b70f5eb..6ed6bbb3a9 100644 --- a/src/org/labkey/test/pages/reports/ManageViewsPage.java +++ b/src/org/labkey/test/pages/reports/ManageViewsPage.java @@ -17,11 +17,17 @@ import org.labkey.test.Locator; import org.labkey.test.components.ChartQueryDialog; +import org.labkey.test.components.ext4.Window; import org.labkey.test.components.html.BootstrapMenu; import org.labkey.test.pages.LabKeyPage; import org.labkey.test.util.LogMethod; +import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.time.Duration; import static org.labkey.test.components.ext4.Window.Window; @@ -34,7 +40,7 @@ public ManageViewsPage(WebDriver driver) public void clickAddReport(String reportType) { - BootstrapMenu.find(getDriver(),"Add Report").clickSubMenu(true,reportType); + new BootstrapMenu.BootstrapMenuFinder(getDriver()).withButtonTextContaining("Add Report").find().clickSubMenu(true,reportType); } public ChartQueryDialog clickAddChart() @@ -89,4 +95,42 @@ public void viewReport(String reportName) mouseOver(reportLink); clickAndWait(reportLink); } + + public void createCategory(String categoryName) + { + createCategories(categoryName); + } + + public void createCategories(String... categoryNames) + { + Locator.linkWithText("Manage Categories").findElement(getDriver()).click(); + Window categoryWindow = new Window.WindowFinder(getDriver()).withTitle("Manage Categories").waitFor(); + for (String categoryName : categoryNames) + addCategory(categoryName, categoryWindow); + clickButton("Done", 0); + categoryWindow.waitForClose(); + } + + private void addCategory(String categoryName, Window categoryWindow) + { + int attempt = 0; + while (true) + { + categoryWindow.clickButton("New Category", 0); + WebElement newCategoryField = Locator.input("label").withAttributeContaining("id", "textfield").notHidden().waitForElement(categoryWindow, WAIT_FOR_JAVASCRIPT); + setFormElementJS(newCategoryField, categoryName); + fireEvent(newCategoryField, SeleniumEvent.blur); + new WebDriverWait(getDriver(), Duration.ofSeconds(2)).until(ExpectedConditions.invisibilityOf(newCategoryField)); + try + { + Locator.tagWithText("div", categoryName).waitForElement(categoryWindow, 2_000); + break; + } + catch (NoSuchElementException e) + { + if (++attempt >= 3) + throw e; + } + } + } } diff --git a/src/org/labkey/test/tests/SampleTypeLinkToStudyTest.java b/src/org/labkey/test/tests/SampleTypeLinkToStudyTest.java index 65e877753d..c4e4fc2f8b 100644 --- a/src/org/labkey/test/tests/SampleTypeLinkToStudyTest.java +++ b/src/org/labkey/test/tests/SampleTypeLinkToStudyTest.java @@ -24,12 +24,10 @@ import org.labkey.test.params.FieldDefinition; import org.labkey.test.params.experiment.SampleTypeDefinition; import org.labkey.test.util.DataRegionTable; -import org.labkey.test.util.Ext4Helper; import org.labkey.test.util.PortalHelper; import org.labkey.test.util.SampleTypeHelper; import org.labkey.test.util.StudyHelper; import org.labkey.test.util.TestDataGenerator; -import org.openqa.selenium.WebElement; import java.io.File; import java.io.IOException; @@ -773,17 +771,7 @@ private void createNewVisits(String label, String startRange, String endRange) private void createDatasetCategory(String projectName, String name) { goToProjectHome(projectName); - goToManageViews(); - Locator.linkWithText("Manage Categories").findElement(getDriver()).click(); - _extHelper.waitForExtDialog("Manage Categories"); - Window categoryWindow = new Window.WindowFinder(getDriver()).withTitle("Manage Categories").waitFor(); - categoryWindow.clickButton("New Category", 0); - WebElement newCategoryField = Locator.input("label").withAttributeContaining("id", "textfield").notHidden().waitForElement(getDriver(), WAIT_FOR_JAVASCRIPT); - setFormElementJS(newCategoryField, name); - fireEvent(newCategoryField, SeleniumEvent.blur); - waitForElement(Ext4Helper.Locators.window("Manage Categories").append("//div").withText(name)); - clickButton("Done", 0); - _extHelper.waitForExtDialogToDisappear("Manage Categories"); + goToManageViews().createCategory(name); } private String getCategory(String projectName, String datasetName)