Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
832 views
in Technique[技术] by (71.8m points)

event listener - Screenshots is not attached Allure + Cucumber + TestNg + EventListener

  1. Using Cucumber EventListener, I am trying to capture the screenshots in Allure report, but screenshots is not attached in the report.

Below are my CustomEventListener Code:

public class CListener extends TestRunner implements EventListener {

@Override
public void setEventPublisher(EventPublisher eventPublisher) {
    eventPublisher.registerHandlerFor(TestStepFinished.class, this::stepFinished);
}

private void stepFinished(TestStepFinished event) {
    PickleStepTestStep steps = (PickleStepTestStep) event.getTestStep();
    String stepName = steps.getStep().getText();
    if (event.getResult().getStatus().toString().equalsIgnoreCase("PASSED")) {
        takeScreenshot(webDriver, event.getResult().getStatus().toString(), stepName);
    } else if (event.getResult().getStatus().toString().equalsIgnoreCase("FAILED")) {
        takeScreenshot(webDriver, event.getResult().getStatus().toString(), stepName);
    }
    Allure.addAttachment(stepName, new ByteArrayInputStream(((TakesScreenshot) webDriver).getScreenshotAs(OutputType.BYTES)));
}

private void takeScreenshot(WebDriver driver, String filePath, String screenName) {
    File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
    try {
        FileUtils.copyFile(scrFile, new File("Screenshots\" + filePath + "\" + screenName + ".png"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}
  1. Runner Class:

     @CucumberOptions(
             features = {"classpath:Login.feature"},
             plugin = {
                       "summary",
                       "pretty", 
                       "io.qameta.allure.cucumber6jvm.AllureCucumber6Jvm","utilities.CListener"},
             glue = {"steps"}
     )
     public class TestRunner extends AbstractTestNGCucumberTests {
     public static WebDriver webDriver;
    
     @BeforeSuite
     public void setup() {
         WebDriverManager.chromedriver().setup();
         webDriver = new ChromeDriver();
         webDriver.manage().window().maximize();
     }
    
     @AfterSuite
     public void tearDown() {
         if (webDriver != null) {
             webDriver.quit();
             System.out.println("hello: inside teardown");
         }
       }
     }
    

Sample code implementation can be found here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...