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