В тесте есть жесткие assert проверки, соответственно нужно чтобы во время их фэйла выполнялся скриншот:
public void takeScreenshot() throws IOException {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy hh_mm_ss");
File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(srcFile, new File("target\\snapshot\\"+sdf.format(date)+".png"));
}
Можно воспользоваться Rule. Пишете свой rule и ловите ошибку AssertionError. Делаете скриншот и пробрасываете ошибку дальше. Вам для этого нужно будет реализовать свой метод apply внутри rule.
public class ConfigDriver {
***
@Rule
public TakeElementScreenshot takeElementScreenshot = new TakeElementScreenshot(driver);
***
}
***
public class TakeElementScreenshot extends TestWatcher{
WebDriver driver;
public TakeElementScreenshot(WebDriver driver){
this.driver = driver;
}
@Override
public void failed(Throwable e, Description description){
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy hh_mm_ss");
File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(srcFile, new File("target\\snapshot\\"+sdf.format(date)+".png"));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}