Screenshots are not appearing in Selenium Java TestNg project. I have used the below version of dependencies in pom.xml.
<code><selenium.version>4.22.0</selenium.version>
<testng.version>7.10.2</testng.version>
<allure.version>2.28.0</allure.version>
<aspectj.version>1.9.19</aspectj.version>
</code>
<code><selenium.version>4.22.0</selenium.version>
<testng.version>7.10.2</testng.version>
<allure.version>2.28.0</allure.version>
<aspectj.version>1.9.19</aspectj.version>
</code>
<selenium.version>4.22.0</selenium.version>
<testng.version>7.10.2</testng.version>
<allure.version>2.28.0</allure.version>
<aspectj.version>1.9.19</aspectj.version>
In Listener class, I have created the below methods to capture screenshot and to attach screenshot on test failure.
<code>@Attachment(type = "image/png")
public byte[] saveFailureScreenshot(WebDriver driver){
return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}
@Attachment(value = "{0}", type = "text/plain")
public static String saveTextLog(String message){
return message;
}
@Override
public void onTestFailure(ITestResult result) {
Logs.error("Exception occurred: " + result.getThrowable());
Logs.error("************ Test Case failed************"+getTestMethodName(result));
WebDriver driver = getDriver();
if(driver != null){
Logs.info("Capturing screenshot for "+getTestMethodName(result));
saveFailureScreenshot(driver);
ITestListener.super.onTestFailure(result);
}
saveTextLog(getTestMethodName(result)+ " failed and screenshot captured.");
}
</code>
<code>@Attachment(type = "image/png")
public byte[] saveFailureScreenshot(WebDriver driver){
return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}
@Attachment(value = "{0}", type = "text/plain")
public static String saveTextLog(String message){
return message;
}
@Override
public void onTestFailure(ITestResult result) {
Logs.error("Exception occurred: " + result.getThrowable());
Logs.error("************ Test Case failed************"+getTestMethodName(result));
WebDriver driver = getDriver();
if(driver != null){
Logs.info("Capturing screenshot for "+getTestMethodName(result));
saveFailureScreenshot(driver);
ITestListener.super.onTestFailure(result);
}
saveTextLog(getTestMethodName(result)+ " failed and screenshot captured.");
}
</code>
@Attachment(type = "image/png")
public byte[] saveFailureScreenshot(WebDriver driver){
return ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
}
@Attachment(value = "{0}", type = "text/plain")
public static String saveTextLog(String message){
return message;
}
@Override
public void onTestFailure(ITestResult result) {
Logs.error("Exception occurred: " + result.getThrowable());
Logs.error("************ Test Case failed************"+getTestMethodName(result));
WebDriver driver = getDriver();
if(driver != null){
Logs.info("Capturing screenshot for "+getTestMethodName(result));
saveFailureScreenshot(driver);
ITestListener.super.onTestFailure(result);
}
saveTextLog(getTestMethodName(result)+ " failed and screenshot captured.");
}
But reports are generated without screenshots.