How do I remove duplicate scenario in report after rerun failed ones?

501 Views Asked by At

I use cucumber 6.6.0 and extentreports-cucumber6-adapter 2.4.0 to generate report. pom.xml like below:

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>6.6.0</version>
    </dependency>

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-testng</artifactId>
        <version>6.6.0</version>
    </dependency>

    <dependency>
        <groupId>tech.grasshopper</groupId>
        <artifactId>extentreports-cucumber6-adapter</artifactId>
        <version>2.4.0</version>
        <scope>test</scope>
    </dependency>

And I add retry function to rerun fail scenario and override onFinish function to remove duplicate ones. retry.java

public class RetryListener implements IAnnotationTransformer {
    @Override
    public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor,
                          Method testMethod) {
        IRetryAnalyzer retry = annotation.getRetryAnalyzer();
        if (retry == null) {
            annotation.setRetryAnalyzer(Retry.class);
        }
    }
}

onFinish()

public class TestngListener extends TestListenerAdapter {
@Override
    public void onFinish(ITestContext testContext) {
        super.onFinish(testContext);
        Iterator<ITestResult> listOfFailedTests = testContext.getFailedTests().getAllResults().iterator();
        while (listOfFailedTests.hasNext()) {
            ITestResult failedTest = listOfFailedTests.next();
            ITestNGMethod method = failedTest.getMethod();
            if (testContext.getFailedTests().getResults(method).size() > 1) {
                listOfFailedTests.remove();
            }else if(testContext.getPassedTests().getResults(method).size() > 0) {
                listOfFailedTests.remove();
            }
        }
    }
}

Then I run two scenario in two feature without rerun , the report shows: 2 features failed, 2 scenarios failed

But if I rerun the fail ones ,it will show : 2 features failed, 4 scenarios failed

So How do I remove duplicate scenario in report after rerun failed ones? Thanks for your kindly help.

0

There are 0 best solutions below