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