package org.jboss.windup.testutil.html; import java.nio.file.Path; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.htmlunit.HtmlUnitDriver; import org.openqa.selenium.remote.DesiredCapabilities; /** * Contains utility methods for assisting tests in interacting with the generated reports. * * @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a> */ public class TestReportUtil { private final WebDriver driver; public TestReportUtil() { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setBrowserName("firefox"); capabilities.setJavascriptEnabled(true); this.driver = new HtmlUnitDriver(capabilities); } /** * Loads the given page w/ the {@link WebDriver} */ public void loadPage(Path filePath) { getDriver().get(filePath.toUri().toString()); } protected WebDriver getDriver() { return driver; } /** * Checks that the table contains a row with the given first two columns */ boolean checkValueInTable(WebElement element, String... columnValues) { List<WebElement> rowElements = element.findElements(By.xpath(".//tr")); boolean foundExpectedResult = false; for (WebElement rowElement : rowElements) { boolean rowMatches = true; for (int i = 0; i < columnValues.length; i++) { String expectedValue = columnValues[i]; List<WebElement> tdElements = rowElement.findElements(By.xpath("./td[position() = " + (i + 1) + "]")); if (tdElements.size() != 1) { rowMatches = false; break; } String actualValue = tdElements.get(0).getText().trim(); if (!actualValue.trim().equals(expectedValue.trim())) { rowMatches = false; break; } } if (rowMatches) { foundExpectedResult = true; break; } } return foundExpectedResult; } }