package com.tyndalehouse.step.e2e.tests; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.WebDriverWait; import com.google.common.base.Predicate; import com.tyndalehouse.step.e2e.fragments.PageOperations; import com.tyndalehouse.step.e2e.fragments.Passage; import com.tyndalehouse.step.e2e.framework.WebDriverTest; public class StepBookmarkTest extends WebDriverTest { @Test public void testBookmarkButton() { doBookmarkButtonTest(0, "Mark 4"); doBookmarkButtonTest(1, "John 7"); } @Test public void testBookmarkMenuItem() { doBookmarkMenuItemTest(0, "Mark 5"); doBookmarkMenuItemTest(1, "John 8"); } private void doBookmarkMenuItemTest(final int passageId, final String reference) { final Passage passage = PageOperations.loadPassage(this.getDriver(), passageId, "ESV-THE", reference, true); final WebElement topMenu = this.getDriver().findElements(By.linkText("Tools")).get(1 + passageId); new Actions(this.getDriver()).moveToElement(topMenu).perform(); final WebElement menuItem = passage.findWithinPassage("a.bookmarkPassageMenuItem"); new WebDriverWait(this.getDriver(), 5).until(new Predicate<WebDriver>() { @Override public boolean apply(final WebDriver input) { return menuItem.isDisplayed(); } }); menuItem.click(); checkBookmarkLoaded(reference); } private void doBookmarkButtonTest(final int passageId, final String reference) { final Passage passage = PageOperations.loadPassage(this.getDriver(), passageId, "ESV-THE", reference, true); final WebElement bookmark = passage.findWithinPassage(".bookmarkPassageLink"); bookmark.click(); checkBookmarkLoaded(reference); } private void checkBookmarkLoaded(final String reference) { final WebDriverWait wait = new WebDriverWait(this.getDriver(), 5); wait.until(new Predicate<WebDriver>() { @Override public boolean apply(final WebDriver input) { return StepBookmarkTest.this.getDriver().findElement(By.cssSelector(".bookmarkItem")).getText() .trim().equals(reference); } }); } }