diff --git a/src/main/java/com/aventstack/extentreports/ExtentTest.java b/src/main/java/com/aventstack/extentreports/ExtentTest.java index 665d414..b405896 100644 --- a/src/main/java/com/aventstack/extentreports/ExtentTest.java +++ b/src/main/java/com/aventstack/extentreports/ExtentTest.java @@ -2,7 +2,9 @@ import java.io.Serializable; import java.util.Arrays; +import java.util.Date; +import com.aventstack.extentreports.gherkin.model.Feature; import com.aventstack.extentreports.gherkin.model.IGherkinFormatterModel; import com.aventstack.extentreports.markuputils.Markup; import com.aventstack.extentreports.markuputils.MarkupHelper; @@ -53,7 +55,7 @@ public class ExtentTest implements RunResult, Serializable { * An instance of {@link ExtentReports} to which this {@link ExtentTest} * belongs */ - private transient ExtentReports extent; + private final transient ExtentReports extent; /** * Internal model @@ -342,13 +344,9 @@ public ExtentTest generateLog(Status status, Markup markup) { *
* *
- * test.log(Status.FAIL, "details", MediaEntityBuilder.createScreenCaptureFromPath("screen.png").build());
+ * test.log(buildLog(Status.FAIL, "details"), MediaEntityBuilder.createScreenCaptureFromPath("screen.png").build());
*
*
- * @param status
- * {@link Status}
- * @param details
- * Details
* @param t
* A {@link Throwable} exception to be logged, enabling the
* Exception view of certain HTML reporters
@@ -357,12 +355,8 @@ public ExtentTest generateLog(Status status, Markup markup) {
*
* @return An {@link ExtentTest} object
*/
- public ExtentTest log(Status status, String details, Throwable t, Media media) {
- Assert.notNull(status, "Status must not be null");
- Log log = Log.builder()
- .status(status)
- .details(details == null ? "" : details)
- .build();
+ public ExtentTest log(Log log, Throwable t, Media media) {
+ Assert.notNull(log.getStatus(), "Status must not be null");
ExceptionInfo exceptionInfo = ExceptionInfoService.createExceptionInfo(t);
log.setException(exceptionInfo);
if (exceptionInfo != null)
@@ -376,6 +370,7 @@ public ExtentTest log(Status status, String details, Throwable t, Media media) {
return this;
}
+
/**
* Logs an event with {@link Status}, details and a media object:
* {@link ScreenCapture}
@@ -398,7 +393,11 @@ public ExtentTest log(Status status, String details, Throwable t, Media media) {
* @return An {@link ExtentTest} object
*/
public ExtentTest log(Status status, String details, Media media) {
- return log(status, details, null, media);
+ return log(buildLog(status, details, null), null, media);
+ }
+
+ public ExtentTest log(Log log){
+ return log(log, null, null);
}
/**
@@ -421,7 +420,7 @@ public ExtentTest log(Status status, String details, Media media) {
* @return An {@link ExtentTest} object
*/
public ExtentTest log(Status status, Media media) {
- return log(status, null, null, media);
+ return log(buildLog(status, null, null), null, media);
}
/**
@@ -438,6 +437,20 @@ public ExtentTest log(Status status, String details) {
return log(status, details, null);
}
+ /**
+ * Logs an event with {@link Status} and details
+ *
+ * @param status
+ * {@link Status}
+ * @param details
+ * Details
+ *
+ * @return An {@link ExtentTest} object
+ */
+// public ExtentTest log(Status status, String details, Date timestamp) {
+// return log(status, details, null);
+// }
+
/**
* Logs an event with {@link Status} and custom {@link Markup} such as:
*
@@ -482,7 +495,7 @@ public ExtentTest log(Status status, Markup markup) {
* @return An {@link ExtentTest} object
*/
public ExtentTest log(Status status, Throwable t, Media media) {
- return log(status, null, t, media);
+ return log(buildLog(status, null, null), t, media);
}
/**
@@ -499,6 +512,25 @@ public ExtentTest log(Status status, Throwable t) {
return log(status, t, null);
}
+ /**
+ * @param status {@link Status} status of the log
+ * @param details {@link String} details to be added to the log
+ * @param overrideLogDate if passed, the log will be overridden to this timestamp. Else it will be defaulted to the current time stamp
+ * @return {@link Log} Log object with the status, details and timestamp set
+ */
+ private Log buildLog(Status status, String details, Date overrideLogDate){
+ Assert.notNull(status, "Status must not be null");
+ Log log = Log.builder()
+ .status(status)
+ .details(details == null ? "" : details)
+ .build();
+ if(overrideLogDate != null){
+ log.setTimestamp(overrideLogDate);
+ }
+
+ return log;
+ }
+
/**
* Logs an Status.INFO event with details and a media object:
* {@link ScreenCapture}
@@ -1095,4 +1127,4 @@ public ExtentTest addScreenCaptureFromBase64String(String base64, String title)
public ExtentTest addScreenCaptureFromBase64String(String base64) {
return addScreenCaptureFromBase64String(base64, null);
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/aventstack/extentreports/append/RawEntityConverter.java b/src/main/java/com/aventstack/extentreports/append/RawEntityConverter.java
index 7598b90..359c16c 100644
--- a/src/main/java/com/aventstack/extentreports/append/RawEntityConverter.java
+++ b/src/main/java/com/aventstack/extentreports/append/RawEntityConverter.java
@@ -8,10 +8,7 @@
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.GherkinKeyword;
import com.aventstack.extentreports.MediaEntityBuilder;
-import com.aventstack.extentreports.model.Log;
-import com.aventstack.extentreports.model.Media;
-import com.aventstack.extentreports.model.ScreenCapture;
-import com.aventstack.extentreports.model.Test;
+import com.aventstack.extentreports.model.*;
public class RawEntityConverter {
private final ExtentReports extent;
@@ -53,14 +50,16 @@ else if (log.hasException())
extentTest.log(log.getStatus(), log.getException().getException());
else if (log.hasMedia())
addMedia(log, extentTest, null);
- else
- extentTest.log(log.getStatus(), log.getDetails());
+ else {
+ Log logToAdd = Log.builder().status(log.getStatus()).details(log.getDetails()).timestamp(log.getTimestamp()).build();
+ extentTest.log(logToAdd);
+ }
}
// assign attributes
- test.getAuthorSet().stream().map(x -> x.getName()).forEach(extentTest::assignAuthor);
- test.getCategorySet().stream().map(x -> x.getName()).forEach(extentTest::assignCategory);
- test.getDeviceSet().stream().map(x -> x.getName()).forEach(extentTest::assignDevice);
+ test.getAuthorSet().stream().map(NamedAttribute::getName).forEach(extentTest::assignAuthor);
+ test.getCategorySet().stream().map(NamedAttribute::getName).forEach(extentTest::assignCategory);
+ test.getDeviceSet().stream().map(NamedAttribute::getName).forEach(extentTest::assignDevice);
// handle nodes
for (Test node : test.getChildren()) {
diff --git a/src/test/java/com/aventstack/extentreports/ExtentTestLogTest.java b/src/test/java/com/aventstack/extentreports/ExtentTestLogTest.java
index d08215d..e03e7a3 100644
--- a/src/test/java/com/aventstack/extentreports/ExtentTestLogTest.java
+++ b/src/test/java/com/aventstack/extentreports/ExtentTestLogTest.java
@@ -2,6 +2,7 @@
import java.io.IOException;
+import com.aventstack.extentreports.model.Log;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -22,7 +23,8 @@ private Exception ex() {
@Test(expectedExceptions = IllegalArgumentException.class)
public void logWithStatusNull() {
- test().log(null, null, null, null);
+ Log log = Log.builder().status(null).details("").build();
+ test().log(log, null, null);
}
@Test