add screenshot after test
This commit is contained in:
parent
831ebcee6c
commit
99e389cec5
@ -212,8 +212,7 @@
|
|||||||
<version>${allure-maven.version}</version>
|
<version>${allure-maven.version}</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<reportVersion>${allure-testng.version}</reportVersion>
|
<reportVersion>${allure-testng.version}</reportVersion>
|
||||||
<allureDownloadUrl>https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
|
<propertiesFilePath>src/test/resources/allure.properties</propertiesFilePath>
|
||||||
${allure-testng.version}/allure-commandline-${allure-testng.version}.zip</allureDownloadUrl>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|||||||
@ -19,11 +19,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.openqa.selenium.WebDriver;
|
import org.openqa.selenium.WebDriver;
|
||||||
import org.testng.ITestListener;
|
import org.testng.ITestListener;
|
||||||
import org.testng.ITestResult;
|
import org.testng.ITestResult;
|
||||||
import org.testng.internal.ConstructorOrMethod;
|
|
||||||
import org.thingsboard.server.msa.ui.base.AbstractDriverBaseTest;
|
|
||||||
|
|
||||||
import static org.testng.internal.Utils.log;
|
|
||||||
import static org.thingsboard.server.msa.ui.base.AbstractDriverBaseTest.captureScreen;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class TestListener implements ITestListener {
|
public class TestListener implements ITestListener {
|
||||||
@ -41,13 +36,7 @@ public class TestListener implements ITestListener {
|
|||||||
@Override
|
@Override
|
||||||
public void onTestSuccess(ITestResult result) {
|
public void onTestSuccess(ITestResult result) {
|
||||||
log.info("<<<=== Test completed successfully: " + result.getName());
|
log.info("<<<=== Test completed successfully: " + result.getName());
|
||||||
ConstructorOrMethod consOrMethod = result.getMethod().getConstructorOrMethod();
|
|
||||||
DisableUIListeners disable = consOrMethod.getMethod().getDeclaringClass().getAnnotation(DisableUIListeners.class);
|
|
||||||
if (disable != null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
driver = ((AbstractDriverBaseTest) result.getInstance()).getDriver();
|
|
||||||
captureScreen(driver, "success");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,13 +45,6 @@ public class TestListener implements ITestListener {
|
|||||||
@Override
|
@Override
|
||||||
public void onTestFailure(ITestResult result) {
|
public void onTestFailure(ITestResult result) {
|
||||||
log.info("<<<=== Test failed: " + result.getName());
|
log.info("<<<=== Test failed: " + result.getName());
|
||||||
ConstructorOrMethod consOrMethod = result.getMethod().getConstructorOrMethod();
|
|
||||||
DisableUIListeners disable = consOrMethod.getMethod().getDeclaringClass().getAnnotation(DisableUIListeners.class);
|
|
||||||
if (disable != null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
driver = ((AbstractDriverBaseTest) result.getInstance()).getDriver();
|
|
||||||
captureScreen(driver, "failure");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -71,12 +53,5 @@ public class TestListener implements ITestListener {
|
|||||||
@Override
|
@Override
|
||||||
public void onTestSkipped(ITestResult result) {
|
public void onTestSkipped(ITestResult result) {
|
||||||
log.info("<<<=== Test skipped: " + result.getName());
|
log.info("<<<=== Test skipped: " + result.getName());
|
||||||
ConstructorOrMethod consOrMethod = result.getMethod().getConstructorOrMethod();
|
|
||||||
DisableUIListeners disable = consOrMethod.getMethod().getDeclaringClass().getAnnotation(DisableUIListeners.class);
|
|
||||||
if (disable != null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
driver = ((AbstractDriverBaseTest) result.getInstance()).getDriver();
|
|
||||||
captureScreen(driver, "skipped");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,12 +15,10 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.msa.ui.base;
|
package org.thingsboard.server.msa.ui.base;
|
||||||
|
|
||||||
import com.google.common.io.Files;
|
|
||||||
import io.github.bonigarcia.wdm.WebDriverManager;
|
import io.github.bonigarcia.wdm.WebDriverManager;
|
||||||
import io.qameta.allure.Attachment;
|
import io.qameta.allure.Allure;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.io.FileUtils;
|
|
||||||
import org.openqa.selenium.Dimension;
|
import org.openqa.selenium.Dimension;
|
||||||
import org.openqa.selenium.JavascriptExecutor;
|
import org.openqa.selenium.JavascriptExecutor;
|
||||||
import org.openqa.selenium.OutputType;
|
import org.openqa.selenium.OutputType;
|
||||||
@ -43,8 +41,9 @@ import org.thingsboard.server.common.data.page.PageLink;
|
|||||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
import org.thingsboard.server.common.data.rule.RuleChain;
|
||||||
import org.thingsboard.server.msa.AbstractContainerTest;
|
import org.thingsboard.server.msa.AbstractContainerTest;
|
||||||
import org.thingsboard.server.msa.ContainerTestSuite;
|
import org.thingsboard.server.msa.ContainerTestSuite;
|
||||||
|
import org.thingsboard.server.msa.WebDriverFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -67,7 +66,7 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
|
|||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@BeforeMethod
|
@BeforeMethod
|
||||||
public void openBrowser() {
|
public void startUp() {
|
||||||
log.info("===>>> Setup driver");
|
log.info("===>>> Setup driver");
|
||||||
testRestClient.login(TENANT_EMAIL, TENANT_PASSWORD);
|
testRestClient.login(TENANT_EMAIL, TENANT_PASSWORD);
|
||||||
ChromeOptions options = new ChromeOptions();
|
ChromeOptions options = new ChromeOptions();
|
||||||
@ -85,7 +84,8 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@AfterMethod
|
@AfterMethod
|
||||||
public void closeBrowser() {
|
public void teardown() {
|
||||||
|
captureScreen(driver);
|
||||||
log.info("<<<=== Teardown");
|
log.info("<<<=== Teardown");
|
||||||
driver.quit();
|
driver.quit();
|
||||||
}
|
}
|
||||||
@ -157,11 +157,11 @@ abstract public class AbstractDriverBaseTest extends AbstractContainerTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SneakyThrows
|
|
||||||
@Attachment(value = "Page screenshot", type = "image/png")
|
public static void captureScreen(WebDriver driver) {
|
||||||
public static byte[] captureScreen(WebDriver driver, String dirPath) {
|
if (driver != null) {
|
||||||
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
|
Allure.addAttachment("Page screenshot",
|
||||||
FileUtils.copyFile(screenshot, new File("./target/allure-results/screenshots/" + dirPath + "//" + screenshot.getName()));
|
new ByteArrayInputStream(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES)));
|
||||||
return Files.toByteArray(screenshot);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
4
pom.xml
4
pom.xml
@ -146,8 +146,8 @@
|
|||||||
<aerogear-otp.version>1.0.0</aerogear-otp.version>
|
<aerogear-otp.version>1.0.0</aerogear-otp.version>
|
||||||
<selenium.version>4.6.0</selenium.version>
|
<selenium.version>4.6.0</selenium.version>
|
||||||
<webdrivermanager.version>5.2.0</webdrivermanager.version>
|
<webdrivermanager.version>5.2.0</webdrivermanager.version>
|
||||||
<allure-testng.version>2.19.0</allure-testng.version>
|
<allure-testng.version>2.21.0</allure-testng.version>
|
||||||
<allure-maven.version>2.8</allure-maven.version>
|
<allure-maven.version>2.10.0</allure-maven.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user