package com.redheap.selenium.components; import com.redheap.selenium.junit.FirefoxDriverResource; import com.redheap.selenium.junit.PageProvider; import com.redheap.selenium.junit.SavePageSourceOnFailure; import com.redheap.selenium.junit.ScreenshotOnFailure; import com.redheap.selenium.junit.WebDriverResource; import com.redheap.selenium.page.Page; import java.io.File; import org.junit.ClassRule; import org.junit.Rule; import org.junit.rules.TestWatcher; public abstract class PageTestBase<P extends Page> { private static final String SYS_PROP = "adf.facesdemo.baseurl"; @ClassRule public static WebDriverResource driver = new FirefoxDriverResource(); // or new PhantomJSDriverResource(); @Rule public PageProvider<P> pages = new PageProvider(getPageClass(), getHomePage(), driver.getDriver()); @Rule public TestWatcher screenshotOnFailure = new ScreenshotOnFailure(driver.getDriver(), new File("errors")); @Rule public TestWatcher saveSourceOnFailure = new SavePageSourceOnFailure(driver.getDriver(), new File("errors")); protected abstract Class<P> getPageClass(); protected abstract String getJspxName(); private String getHomePage() { String baseUrl = System.getProperty(SYS_PROP); if (baseUrl == null) { throw new IllegalStateException("system property " + SYS_PROP + " should contain base URL, for example http://localhost:7101/faces-12.2.1.0.0"); } return baseUrl + "/faces/components/" + getJspxName(); } }