package net.rrm.ehour.it;
import org.junit.rules.MethodRule;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.io.File;
import java.io.FileOutputStream;
class ScreenshotTestRule implements MethodRule {
private final RemoteWebDriver driver;
public ScreenshotTestRule(RemoteWebDriver driver) {
this.driver = driver;
}
public Statement apply(final Statement statement, final FrameworkMethod frameworkMethod, final Object o) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
try {
statement.evaluate();
} catch (Throwable t) {
captureScreenshot(frameworkMethod.getName());
throw t;
}
}
public void captureScreenshot(String fileName) {
try {
new File("target/surefire-reports/").mkdirs();
FileOutputStream out = new FileOutputStream("target/surefire-reports/screenshot-" + fileName + ".png");
out.write(driver.getScreenshotAs(OutputType.BYTES));
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
};
}
}