Using hamcrest matchers is a preferred way to writing assertions. See Matchers class for an inspiration of how those can look like. Note the convenience (typesafe) Matcher superclass we use to avoid unnecessary verbosity:
public static Matcher<WebDriver> hasContent(final Pattern pattern) {
return new Matcher<WebDriver>("Text matching %s", pattern) {
@Override
protected boolean matchesSafely(WebDriver item) {
return pattern.matcher(pageText(item)).find();
}
@Override
protected void describeMismatchSafely(WebDriver item, Description mismatchDescription) {
mismatchDescription.appendText("was ")
.appendValue(item.getCurrentUrl())
.appendText("\n")
.appendValue(pageText(item));
}
private String pageText(WebDriver item) {
return item.findElement(by.xpath("/html")).getText();
}
};
}
General purpose matchers should be available as static methods of the Matchers
class.
Plugin specific matchers should be defined in JUnit class or in dedicated *Matcher
class.