Skip to content

Commit 8fe5720

Browse files
authored
Wait for dataregion to update between search operations (#353)
1 parent 5d4f173 commit 8fe5720

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

panoramapublic/test/src/org/labkey/test/components/panoramapublic/PanoramaPublicSearchWebPart.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,17 @@
88
import org.openqa.selenium.Keys;
99
import org.openqa.selenium.WebDriver;
1010
import org.openqa.selenium.WebElement;
11+
import org.openqa.selenium.support.ui.ExpectedConditions;
12+
import org.openqa.selenium.support.ui.WebDriverWait;
13+
14+
import java.time.Duration;
1115

1216
public class PanoramaPublicSearchWebPart extends BodyWebPart<PanoramaPublicSearchWebPart.ElementCache>
1317
{
1418
private static String title = "Panorama Public Search";
1519

20+
private final WebDriverWait tabWait = new WebDriverWait(getDriver(), Duration.ofSeconds(1));
21+
1622
public PanoramaPublicSearchWebPart(WebDriver driver, String title)
1723
{
1824
super(driver, title);
@@ -121,41 +127,49 @@ public PanoramaPublicSearchWebPart setSmallMoleculeExactMatch(boolean value)
121127
public PanoramaPublicSearchWebPart gotoExperimentSearch()
122128
{
123129
elementCache().experimentSearchTab.click();
130+
tabWait.until(ExpectedConditions.visibilityOf(elementCache().author.getComponentElement()));
124131
return this;
125132
}
126133

127134
public PanoramaPublicSearchWebPart gotoProteinSearch()
128135
{
129136
elementCache().proteinTab.click();
137+
tabWait.until(ExpectedConditions.visibilityOf(elementCache().protein.getComponentElement()));
130138
return this;
131139
}
132140

133141
public PanoramaPublicSearchWebPart gotoPeptideSearch()
134142
{
135143
elementCache().peptideTab.click();
144+
tabWait.until(ExpectedConditions.visibilityOf(elementCache().peptide.getComponentElement()));
136145
return this;
137146
}
138147

139148
public PanoramaPublicSearchWebPart gotoSmallMoleculeSearch()
140149
{
141150
elementCache().smallMoleculeTab.click();
151+
tabWait.until(ExpectedConditions.visibilityOf(elementCache().smallMolecule.getComponentElement()));
142152
return this;
143153
}
144154

145155
public DataRegionTable search()
146156
{
147-
elementCache().search.click();
148-
getWrapper().sleep(500); // for dataregion table to load after every search
149-
return new DataRegionTable.DataRegionFinder(getDriver()).refindWhenNeeded(this);
157+
return doAndWaitForUpdate(() -> elementCache().search.click());
150158
}
151159

152160
public DataRegionTable clearAll()
153161
{
154-
elementCache().clearAll.click();
162+
return doAndWaitForUpdate(() -> elementCache().clearAll.click());
163+
}
164+
165+
private DataRegionTable doAndWaitForUpdate(Runnable runnable)
166+
{
167+
// Can't use `DataRegionTable.doAndWaitForUpdate`. Doesn't reuse the same data region.
168+
getWrapper().doAndWaitForPageSignal(runnable, DataRegionTable.UPDATE_SIGNAL);
155169
return new DataRegionTable.DataRegionFinder(getDriver()).refindWhenNeeded(this);
156170
}
157171

158-
protected class ElementCache extends BodyWebPart.ElementCache
172+
protected class ElementCache extends BodyWebPart<?>.ElementCache
159173
{
160174
//Experiment search
161175
final WebElement experimentSearchTab = Locator.tagWithText("label", "Experiment Search").findWhenNeeded(this);

0 commit comments

Comments
 (0)