add screenshot after test

This commit is contained in:
Seraphym-Tuhai 2023-03-03 16:48:32 +02:00
parent 831ebcee6c
commit 99e389cec5
4 changed files with 16 additions and 42 deletions

View File

@ -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>

View File

@ -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");
} }
} }

View File

@ -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); }
} }
} }

View File

@ -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>