Skip to content

Commit

Permalink
Wait for dataregion to update between search operations (#353)
Browse files Browse the repository at this point in the history
  • Loading branch information
labkey-tchad authored Jun 8, 2023
1 parent 5d4f173 commit 8fe5720
Showing 1 changed file with 19 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,17 @@
import org.openqa.selenium.Keys;
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;

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

private final WebDriverWait tabWait = new WebDriverWait(getDriver(), Duration.ofSeconds(1));

public PanoramaPublicSearchWebPart(WebDriver driver, String title)
{
super(driver, title);
Expand Down Expand Up @@ -121,41 +127,49 @@ public PanoramaPublicSearchWebPart setSmallMoleculeExactMatch(boolean value)
public PanoramaPublicSearchWebPart gotoExperimentSearch()
{
elementCache().experimentSearchTab.click();
tabWait.until(ExpectedConditions.visibilityOf(elementCache().author.getComponentElement()));
return this;
}

public PanoramaPublicSearchWebPart gotoProteinSearch()
{
elementCache().proteinTab.click();
tabWait.until(ExpectedConditions.visibilityOf(elementCache().protein.getComponentElement()));
return this;
}

public PanoramaPublicSearchWebPart gotoPeptideSearch()
{
elementCache().peptideTab.click();
tabWait.until(ExpectedConditions.visibilityOf(elementCache().peptide.getComponentElement()));
return this;
}

public PanoramaPublicSearchWebPart gotoSmallMoleculeSearch()
{
elementCache().smallMoleculeTab.click();
tabWait.until(ExpectedConditions.visibilityOf(elementCache().smallMolecule.getComponentElement()));
return this;
}

public DataRegionTable search()
{
elementCache().search.click();
getWrapper().sleep(500); // for dataregion table to load after every search
return new DataRegionTable.DataRegionFinder(getDriver()).refindWhenNeeded(this);
return doAndWaitForUpdate(() -> elementCache().search.click());
}

public DataRegionTable clearAll()
{
elementCache().clearAll.click();
return doAndWaitForUpdate(() -> elementCache().clearAll.click());
}

private DataRegionTable doAndWaitForUpdate(Runnable runnable)
{
// Can't use `DataRegionTable.doAndWaitForUpdate`. Doesn't reuse the same data region.
getWrapper().doAndWaitForPageSignal(runnable, DataRegionTable.UPDATE_SIGNAL);
return new DataRegionTable.DataRegionFinder(getDriver()).refindWhenNeeded(this);
}

protected class ElementCache extends BodyWebPart.ElementCache
protected class ElementCache extends BodyWebPart<?>.ElementCache
{
//Experiment search
final WebElement experimentSearchTab = Locator.tagWithText("label", "Experiment Search").findWhenNeeded(this);
Expand Down

0 comments on commit 8fe5720

Please sign in to comment.