diff --git a/src/org/labkey/test/components/html/BootstrapMenu.java b/src/org/labkey/test/components/html/BootstrapMenu.java index 8781ac0716..a4e5ee3270 100644 --- a/src/org/labkey/test/components/html/BootstrapMenu.java +++ b/src/org/labkey/test/components/html/BootstrapMenu.java @@ -20,6 +20,7 @@ import org.labkey.test.components.react.BaseBootstrapMenu; import org.labkey.test.util.LogMethod; import org.labkey.test.util.LoggedParam; +import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -118,6 +119,14 @@ public void clickSubMenu(boolean wait, @LoggedParam String ... subMenuLabels) clickSubMenu(wait ? getWrapper().getDefaultWaitForPage() : 0, subMenuLabels); } + public boolean menuItemIsDisabled(String text) + { + if (findVisibleMenuItemOrNull(text) == null) + throw new NoSuchElementException("Menu item not found: " + text); + + return findDisabledMenuItemOrNull(text) != null; + } + @Override protected Locator getToggleLocator() { diff --git a/src/org/labkey/test/components/react/QueryChartDialog.java b/src/org/labkey/test/components/react/QueryChartDialog.java index cc028eae8f..3782d5396f 100644 --- a/src/org/labkey/test/components/react/QueryChartDialog.java +++ b/src/org/labkey/test/components/react/QueryChartDialog.java @@ -394,8 +394,9 @@ public QueryChartPanel clickCreateChart() { WebDriverWrapper.waitFor(this::isCreateChartButtonEnabled, "the create chart button did not become enabled", 2000); + String name = getName(); dismiss("Create Chart"); - return _queryGrid.getChartPanel(); + return _queryGrid.getChartPanel(name); } /* @@ -405,8 +406,9 @@ public QueryChartPanel clickSaveChart() { WebDriverWrapper.waitFor(this::isSaveChartButtonEnabled, "the Save chart button did not become enabled", 2000); + String name = getName(); dismiss("Save Chart"); - return _queryGrid.getChartPanel(); + return _queryGrid.getChartPanel(name); } /* diff --git a/src/org/labkey/test/components/react/QueryChartPanel.java b/src/org/labkey/test/components/react/QueryChartPanel.java index 6f4b856508..53c67f2005 100644 --- a/src/org/labkey/test/components/react/QueryChartPanel.java +++ b/src/org/labkey/test/components/react/QueryChartPanel.java @@ -100,11 +100,13 @@ public static class QueryChartPanelFinder extends WebDriverComponentFinder menuItems = elementCache().chartsMenu.findVisibleMenuItems(); + + Optional menuItem = menuItems.stream().filter(item -> item.getText().contains(name)).findFirst(); + + if (menuItem.isEmpty()) { + throw new NoSuchElementException(String.format("Could not find chart menu item %s", name)); + } + + WebElement checkbox = menuItem.get().findElement(Locator.byClass("chart-menu-checkbox")); + + return checkbox.getAttribute("class").contains("fa-check-square"); + } + /* - gets a chart panel that is already being shown + gets a chart panel that is already being shown for a given chart name */ - public QueryChartPanel getChartPanel() + public QueryChartPanel getChartPanel(String name) { - return new QueryChartPanel.QueryChartPanelFinder(getDriver(), this).waitFor(this); + return new QueryChartPanel.QueryChartPanelFinder(getDriver(), this, name).waitFor(this); } public WebElement showRReport(String reportName) @@ -743,9 +771,9 @@ public WebElement showRReport(String reportName) return elementCache().rReport(); } - public void closeChart() + public void closeChart(String name) { - getChartPanel().clickClose(); + getChartPanel(name).clickClose(); } @Override