I am writing some tests that all follow the same pattern, I feel like repeating myself over and over again, how can I reduce the repetition? The (almost) repeating part is in constructor and the class level variables:
VariablesPage
public class VariablesPage extends LoadableComponent<VariablesPage> {
private final TestHelpers helpers;
private WebDriver driver;
@FindBy(xpath = "//a[@title=\"Define new variable\"]")
private WebElement btnAddNewVariable;
public VariablesPage() throws Exception {
helpers = new TestHelpers();
driver = helpers.getWebDriver();
helpers.setHar(VariablesPage.class.getSimpleName());
PageFactory.initElements(driver, this);
isLoaded();
helpers.getHar();
}
@Override
protected void load() {
}
@Override
protected void isLoaded() throws Error {
helpers.waitUntil(btnAddNewVariable);
}
}
addStepsPage
public class AddStepsPage extends LoadableComponent<AddStepsPage> {
private final TestHelpers helpers;
private WebDriver driver;
@FindBy(xpath = "//div[@class=\"body sequential\"]")
private WebElement divStepsBody;
public AddStepsPage() throws Exception {
helpers = new TestHelpers();
driver = helpers.getWebDriver();
helpers.setHar(AddStepsPage.class.getSimpleName());
PageFactory.initElements(driver, this);
isLoaded();
helpers.getHar();
}
@Override
protected void load() {
}
@Override
protected void isLoaded() throws Error {
helpers.waitUntil(divStepsBody);
}
}