Skip to content

Commit 3547127

Browse files
committed
closes #386 - enhancement: keepLastRetryOnly
1 parent de8019b commit 3547127

File tree

4 files changed

+47
-4
lines changed

4 files changed

+47
-4
lines changed

src/main/java/com/aventstack/extentreports/AbstractProcessor.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,20 @@
1414
import com.aventstack.extentreports.model.service.MediaService;
1515
import com.aventstack.extentreports.model.service.TestService;
1616

17-
import lombok.Getter;
18-
import lombok.Setter;
17+
import lombok.Data;
1918

20-
@Getter
21-
@Setter
19+
@Data
2220
public abstract class AbstractProcessor extends ReactiveSubject {
2321
private String[] mediaResolverPath;
2422
private boolean usingNaturalConf = true;
23+
protected boolean keepLastRetryOnly;
2524

2625
@Override
2726
protected void onTestCreated(Test test) {
27+
if (keepLastRetryOnly) {
28+
getReport().findTest(test.getName())
29+
.ifPresent(x -> getReport().removeTest(x));
30+
}
2831
getReport().getTestList().add(test);
2932
super.onTestCreated(test);
3033
}
@@ -39,6 +42,10 @@ protected void onTestRemoved(Test test) {
3942
}
4043

4144
protected void onNodeCreated(Test node) {
45+
if (keepLastRetryOnly) {
46+
getReport().findTest(node.getName())
47+
.ifPresent(x -> getReport().removeTest(x));
48+
}
4249
super.onTestCreated(node);
4350
}
4451

src/main/java/com/aventstack/extentreports/ExtentReports.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,16 @@ public void setGherkinDialect(String language) throws UnsupportedEncodingExcepti
446446
GherkinDialectManager.setLanguage(language);
447447
}
448448

449+
/**
450+
* This setting allows only 1 instance of a test or node to be present in the report. To maintain
451+
* uniqueness, the name of the test is used.
452+
*
453+
* @param keepLastRetryOnly true - keeps only the last executed test instance
454+
*/
455+
public void keepLastRetryOnly(final boolean keepLastRetryOnly) {
456+
super.keepLastRetryOnly = keepLastRetryOnly;
457+
}
458+
449459
/**
450460
* Returns an instance of {@link ReportStats} with counts of tests executed
451461
* by their status (pass, fail, skip etc)

src/main/java/com/aventstack/extentreports/model/Report.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ public Optional<Test> findTest(List<Test> list, String name) {
108108
return test;
109109
}
110110
}
111+
112+
public Optional<Test> findTest(final String name) {
113+
return findTest(testList, name);
114+
}
111115

112116
public List<ExceptionInfo> aggregateExceptions(List<Test> testList) {
113117
synchronized (testList) {

src/test/java/com/aventstack/extentreports/ExtentReportsTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,26 @@ public void addTestRunnerOutputList() {
106106
Assert.assertEquals(extent.getReport().getLogs().size(), 2);
107107
Arrays.stream(logs).forEach(x -> Assert.assertTrue(extent.getReport().getLogs().contains(x)));
108108
}
109+
110+
@org.testng.annotations.Test
111+
public void keepLastRetryOnlyTestEnabled() {
112+
final ExtentReports extent = new ExtentReports();
113+
extent.keepLastRetryOnly(true);
114+
final int numberOfTests = 5;
115+
for (int i = 0; i < numberOfTests; i++) {
116+
extent.createTest("test");
117+
}
118+
Assert.assertEquals(extent.getReport().getTestList().size(), 1);
119+
}
120+
121+
@org.testng.annotations.Test
122+
public void keepLastRetryOnlyTestDisabled() {
123+
final ExtentReports extent = new ExtentReports();
124+
extent.keepLastRetryOnly(false);
125+
final int numberOfTests = 5;
126+
for (int i = 0; i < numberOfTests; i++) {
127+
extent.createTest("test");
128+
}
129+
Assert.assertEquals(extent.getReport().getTestList().size(), numberOfTests);
130+
}
109131
}

0 commit comments

Comments
 (0)