From 32052ad6712a5332c09d5c021c4cd953b41d28a4 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Mon, 27 Jul 2020 23:24:19 -0700 Subject: [PATCH 01/28] prepare next dev iteration --- pom.xml | 3 ++- reporters/klov/pom.xml | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index f554b70..7116b78 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.aventstack extentreports - 5.0.1 + 5.0.2-SNAPSHOT ExtentReports www.extentreports.com @@ -66,6 +66,7 @@ org.testng testng 7.1.0 + test diff --git a/reporters/klov/pom.xml b/reporters/klov/pom.xml index a81ec33..46ae21f 100644 --- a/reporters/klov/pom.xml +++ b/reporters/klov/pom.xml @@ -5,7 +5,7 @@ com.aventstack klov-reporter - 5.0.1 + 5.0.2-SNAPSHOT klov-reporter www.extentreports.com Reporter for Klov Server @@ -43,17 +43,17 @@ com.aventstack extentreports - 5.0.1 + 5.0.2-SNAPSHOT org.mongodb mongodb-driver - 3.3.0 + 3.6.4 org.mongodb bson - 3.3.0 + 3.6.4 org.apache.httpcomponents From d87c0ce6e181848f0a0e049210bfe1a05f4cd588 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Mon, 27 Jul 2020 23:26:44 -0700 Subject: [PATCH 02/28] fixes #222 Replacing Files from org.testng.reporters to java.nio --- .../extentreports/config/external/JsonConfigLoader.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/aventstack/extentreports/config/external/JsonConfigLoader.java b/src/main/java/com/aventstack/extentreports/config/external/JsonConfigLoader.java index 1275934..ab872d4 100644 --- a/src/main/java/com/aventstack/extentreports/config/external/JsonConfigLoader.java +++ b/src/main/java/com/aventstack/extentreports/config/external/JsonConfigLoader.java @@ -4,8 +4,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.lang.reflect.Type; - -import org.testng.reporters.Files; +import java.nio.file.Files; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -49,7 +48,7 @@ public void apply() { .registerTypeAdapter(instance.getClass(), creator) .create(); try { - String json = f != null ? Files.readFile(f) : this.json; + String json = f != null ? String.join("\n", Files.readAllLines(f.toPath())) : this.json; instance = (T) gson.fromJson(json, instance.getClass()); } catch (IOException e) { e.printStackTrace(); From 941660bb0919776ce469609d95a105ec18ab4dab Mon Sep 17 00:00:00 2001 From: anshooarora Date: Mon, 27 Jul 2020 23:27:12 -0700 Subject: [PATCH 03/28] Create AttribStatusDist.java --- .../extentreports/AttribStatusDist.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/java/com/aventstack/extentreports/AttribStatusDist.java diff --git a/src/main/java/com/aventstack/extentreports/AttribStatusDist.java b/src/main/java/com/aventstack/extentreports/AttribStatusDist.java new file mode 100644 index 0000000..2e80f42 --- /dev/null +++ b/src/main/java/com/aventstack/extentreports/AttribStatusDist.java @@ -0,0 +1,29 @@ +package com.aventstack.extentreports; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +import com.aventstack.extentreports.model.NamedAttribute; +import com.aventstack.extentreports.model.context.NamedAttributeContext; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class AttribStatusDist { + private String name; + private Map dist = new HashMap<>(); + + public AttribStatusDist(NamedAttributeContext context) { + name = context.getAttr().getName(); + dist = context.getStatusDist().entrySet() + .stream() + .collect(Collectors.toMap(e -> e.getKey().toLower(), e -> e.getValue())); + } +} \ No newline at end of file From 8890e2461fcd6e2d938ebbe728d660a53604b6c5 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Mon, 27 Jul 2020 23:27:49 -0700 Subject: [PATCH 04/28] Use a status Map to hold status counts for attributes --- .../model/context/NamedAttributeContext.java | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/aventstack/extentreports/model/context/NamedAttributeContext.java b/src/main/java/com/aventstack/extentreports/model/context/NamedAttributeContext.java index 7cead19..9180505 100644 --- a/src/main/java/com/aventstack/extentreports/model/context/NamedAttributeContext.java +++ b/src/main/java/com/aventstack/extentreports/model/context/NamedAttributeContext.java @@ -3,7 +3,9 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.aventstack.extentreports.Status; import com.aventstack.extentreports.model.NamedAttribute; @@ -19,10 +21,7 @@ public class NamedAttributeContext implements Serializ private final List testList = Collections.synchronizedList(new ArrayList<>()); private T attr; - private Integer passed = 0; - private Integer failed = 0; - private Integer skipped = 0; - private Integer others = 0; + private Map statusDist = new HashMap<>(); public NamedAttributeContext(T attribute, Test test) { this.attr = attribute; @@ -37,22 +36,35 @@ public void addTest(Test test) { } private synchronized void refresh(Test test) { - if (test.getStatus() == Status.PASS) - passed++; - else if (test.getStatus() == Status.FAIL) - failed++; - else if (test.getStatus() == Status.SKIP) - skipped++; - else - others++; + statusDist.merge(test.getStatus(), 1, Integer::sum); } public void refresh() { - passed = failed = skipped = others = 0; + statusDist.clear(); testList.forEach(this::refresh); } public Integer size() { - return passed + failed + skipped + others; + return statusDist.values().stream().reduce(0, Integer::sum); + } + + public Integer getPassed() { + return get(Status.PASS); + } + + private Integer get(Status s) { + return statusDist.get(s) == null ? 0 : statusDist.get(s); + } + + public Integer getFailed() { + return get(Status.FAIL); + } + + public Integer getSkipped() { + return get(Status.SKIP); + } + + public Integer getOthers() { + return get(Status.WARNING); } } From 929e099217a205f279923286abdd94838fbe524a Mon Sep 17 00:00:00 2001 From: anshooarora Date: Mon, 27 Jul 2020 23:29:15 -0700 Subject: [PATCH 05/28] closes #223 --- .../reporter/ExtentKlovReporter.java | 119 ++++++------------ 1 file changed, 40 insertions(+), 79 deletions(-) diff --git a/reporters/klov/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java b/reporters/klov/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java index 82ef7ae..ef0f261 100644 --- a/reporters/klov/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java +++ b/reporters/klov/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java @@ -16,8 +16,12 @@ import java.util.stream.Collectors; import org.bson.Document; +import org.bson.codecs.configuration.CodecRegistries; +import org.bson.codecs.configuration.CodecRegistry; +import org.bson.codecs.pojo.PojoCodecProvider; import org.bson.types.ObjectId; +import com.aventstack.extentreports.AttribStatusDist; import com.aventstack.extentreports.Status; import com.aventstack.extentreports.model.Author; import com.aventstack.extentreports.model.Category; @@ -45,7 +49,6 @@ import com.mongodb.MongoClient; import com.mongodb.MongoClientOptions; import com.mongodb.MongoClientURI; -import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; @@ -239,39 +242,6 @@ public ExtentKlovReporter initMongoDbConnection(List seeds) { return this; } - /** - * Initializes the Mongo DB connection with a list of {@link ServerAddress} - * and {@link MongoCredential} - * - * @param seeds - * A list of {@link ServerAddress} server addresses - * @param credentialsList - * A list of {@link MongoCredential} credentials - * @return a {@link ExtentKlovReporter} object - */ - public ExtentKlovReporter initMongoDbConnection(List seeds, List credentialsList) { - mongoClient = new MongoClient(seeds, credentialsList); - return this; - } - - /** - * Initializes the Mongo DB connection with a list of {@link ServerAddress}, - * {@link MongoCredential} and {@link MongoClientOptions} - * - * @param seeds - * A list of {@link ServerAddress} server addresses - * @param credentialsList - * A list of {@link MongoCredential} credentials - * @param options - * {@link MongoClientOptions} options - * @return a {@link ExtentKlovReporter} object - */ - public ExtentKlovReporter initMongoDbConnection(List seeds, List credentialsList, - MongoClientOptions options) { - mongoClient = new MongoClient(seeds, credentialsList, options); - return this; - } - /** * Initializes the Mongo DB connection with a list of {@link ServerAddress} * and {@link MongoClientOptions} @@ -287,39 +257,6 @@ public ExtentKlovReporter initMongoDbConnection(List seeds, Mongo return this; } - /** - * Initializes the Mongo DB connection with {@link ServerAddress} and a list - * of {@link MongoCredential} credentials - * - * @param addr - * {@link ServerAddress} server address - * @param credentialsList - * A list of {@link MongoCredential} credentials - * @return a {@link ExtentKlovReporter} object - */ - public ExtentKlovReporter initMongoDbConnection(ServerAddress addr, List credentialsList) { - mongoClient = new MongoClient(addr, credentialsList); - return this; - } - - /** - * Initializes the Mongo DB connection with a list of {@link ServerAddress}, - * {@link MongoCredential} and {@link MongoClientOptions} - * - * @param addr - * A list of {@link ServerAddress} server addresses - * @param credentialsList - * A list of {@link MongoCredential} credentials - * @param options - * {@link MongoClientOptions} options - * @return a {@link ExtentKlovReporter} object - */ - public ExtentKlovReporter initMongoDbConnection(ServerAddress addr, List credentialsList, - MongoClientOptions options) { - mongoClient = new MongoClient(addr, credentialsList, options); - return this; - } - /** * Initializes the Mongo DB connection with a {@link ServerAddress} and * {@link MongoClientOptions} @@ -466,13 +403,6 @@ public synchronized void flush(ReportEntity entity) { return; ReportStats stats = report.getStats(); - this.authorContext = report.getAuthorCtx(); - this.categoryContext = report.getCategoryCtx(); - this.deviceContext = report.getDeviceCtx(); - Set authorNameList = getCollectionKeys(authorNameObjectIdCollection); - Set categoryNameList = getCollectionKeys(categoryNameObjectIdCollection); - Set deviceNameList = getCollectionKeys(deviceNameObjectIdCollection); - Set exceptionNameList = getCollectionKeys(exceptionNameObjectIdCollection); Document doc = new Document("endTime", report.getEndTime()) .append("duration", report.timeTaken()) @@ -495,13 +425,42 @@ public synchronized void flush(ReportEntity entity) { .append("analysisStrategy", stats.getAnalysisStrategy().toString()) .append("bdd", testList.get(0).isBDD()); - if (authorNameList != null && !authorNameList.isEmpty()) + this.authorContext = report.getAuthorCtx(); + this.categoryContext = report.getCategoryCtx(); + this.deviceContext = report.getDeviceCtx(); + Set authorNameList = getCollectionKeys(authorNameObjectIdCollection); + Set categoryNameList = getCollectionKeys(categoryNameObjectIdCollection); + Set deviceNameList = getCollectionKeys(deviceNameObjectIdCollection); + Set exceptionNameList = getCollectionKeys(exceptionNameObjectIdCollection); + + if (authorNameList != null) { + // maintain for backward compatibility doc.append("authorNameList", authorNameList); - if (categoryNameList != null && !categoryNameList.isEmpty()) + Set> set = report.getAuthorCtx().getSet() + .stream() + .map(x -> new AttribStatusDist(x)) + .collect(Collectors.toSet()); + doc.append("authorInfo", set); + } + if (categoryNameList != null) { + // maintain for backward compatibility doc.append("categoryNameList", categoryNameList); - if (deviceNameList != null && !deviceNameList.isEmpty()) + Set> set = report.getCategoryCtx().getSet() + .stream() + .map(x -> new AttribStatusDist(x)) + .collect(Collectors.toSet()); + doc.append("categoryInfo", set); + } + if (deviceNameList != null && !deviceNameList.isEmpty()) { + // maintain for backward compatibility doc.append("deviceNameList", deviceNameList); - if (exceptionNameList != null && !exceptionNameList.isEmpty()) + Set> set = report.getDeviceCtx().getSet() + .stream() + .map(x -> new AttribStatusDist(x)) + .collect(Collectors.toSet()); + doc.append("deviceInfo", set); + } + if (exceptionNameList != null) doc.append("exceptions", exceptionNameList); reportCollection.updateOne(new Document("_id", reportId), new Document("$set", doc)); @@ -834,7 +793,9 @@ public void onComplete() { } private final void start() { - MongoDatabase db = mongoClient.getDatabase(DB_NAME); + CodecRegistry pojoCodecRegistry = CodecRegistries.fromRegistries(MongoClient.getDefaultCodecRegistry(), + CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build())); + MongoDatabase db = mongoClient.getDatabase(DB_NAME).withCodecRegistry(pojoCodecRegistry); initCollections(db); setupProject(); } From a41b03a6202e343610ea2454debec5f57e722cc5 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Tue, 28 Jul 2020 13:08:59 -0700 Subject: [PATCH 06/28] closes #224 propagate attributes down the tree --- src/main/java/com/aventstack/extentreports/model/Test.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/aventstack/extentreports/model/Test.java b/src/main/java/com/aventstack/extentreports/model/Test.java index d8d6146..e9ebb77 100644 --- a/src/main/java/com/aventstack/extentreports/model/Test.java +++ b/src/main/java/com/aventstack/extentreports/model/Test.java @@ -68,6 +68,9 @@ public final void addChild(Test child) { child.setParent(this); child.setLeaf(true); isLeaf = false; + child.authorSet.addAll(authorSet); + child.categorySet.addAll(categorySet); + child.deviceSet.addAll(deviceSet); end(child.getStatus()); children.add(child); } From 7d63308e6c3a7cd80068d9a979ff0e409fc2958b Mon Sep 17 00:00:00 2001 From: anshooarora Date: Tue, 28 Jul 2020 13:30:00 -0700 Subject: [PATCH 07/28] closes #225 --- .../templates/spark/macros/attr-common.ftl | 71 ++++++++++++++++ .../templates/spark/partials/author.ftl | 79 +----------------- .../templates/spark/partials/category.ftl | 79 +----------------- .../templates/spark/partials/device.ftl | 79 +----------------- .../templates/spark/partials/exception.ftl | 83 +------------------ .../templates/spark/spark.spa.ftl | 1 + 6 files changed, 76 insertions(+), 316 deletions(-) create mode 100644 src/main/resources/com/aventstack/extentreports/templates/spark/macros/attr-common.ftl diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/macros/attr-common.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/macros/attr-common.ftl new file mode 100644 index 0000000..3e06835 --- /dev/null +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/macros/attr-common.ftl @@ -0,0 +1,71 @@ +<#macro attrCommon view ctx> +<#if ctx?size != 0> +<#compress> +
+
+ +
+
    + <#list ctx as c> +
  • +
    + + <#if c.passed!=0>${c.passed} + <#if c.failed!=0>${c.failed} + <#if c.skipped!=0>${c.skipped} + <#if c.others!=0>${c.others} + +

    ${c.attr.name}

    +

    ${c.size()} tests

    +
    +
    +
    +

    ${c.attr.name}

    + <#if c.passed!=0>${c.passed} passed + <#if c.failed!=0>${c.failed} failed + <#if c.skipped!=0>${c.skipped} skipped + <#if c.others!=0>${c.others} others +
    + + + + + + + + + + <#list c.testList as test> + + + + + + + +
    StatusTimestampTestName
    ${test.status?string}${test.startTime?string[("HH:mm:ss a")]} + ${test.name} + <#if test.parent??> +
    + ${test.getFullName()} +
    + +
    +
    +
  • + +
+
+
+
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/author.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/author.ftl index e66eb55..b40b010 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/author.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/author.ftl @@ -1,80 +1,3 @@ <#if report.authorCtx.set?size != 0> -<#assign - authorCtx=report.authorCtx.set> -<#compress> -
-
- -
-
    - <#list authorCtx as ctx> -
  • -
    - - <#if ctx.passed!=0>${ctx.passed} - <#if ctx.failed!=0>${ctx.failed} - <#if ctx.skipped!=0>${ctx.skipped} - <#if ctx.others!=0>${ctx.others} - -

    ${ctx.attr.name}

    -

    ${ctx.size()} tests

    -
    -
    -
    -

    ${ctx.attr.name}

    - <#if ctx.passed!=0>${ctx.passed} passed - <#if ctx.failed!=0>${ctx.failed} failed - <#if ctx.skipped!=0>${ctx.skipped} skipped - <#if ctx.others!=0>${ctx.others} others -
    - - - - - - - - - - <#list ctx.testList as test> - - - - - - - -
    StatusTimestampTestName
    ${test.status?string}${test.startTime?string[("HH:mm:ss a")]} - ${test.name} - <#if test.parent??> -
    - ${test.getFullName()} -
    - -
    -
    -
  • - -
-
-
-
-
- -
-
-
-
-
-
- + <@attrCommon view="Users" ctx=report.authorCtx.set /> \ No newline at end of file diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/category.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/category.ftl index a5e606a..ccc89a6 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/category.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/category.ftl @@ -1,80 +1,3 @@ <#if report.categoryCtx.set?size != 0> -<#assign - categoryCtx=report.categoryCtx.set> -<#compress> -
-
- -
-
    - <#list categoryCtx as ctx> -
  • -
    - - <#if ctx.passed!=0>${ctx.passed} - <#if ctx.failed!=0>${ctx.failed} - <#if ctx.skipped!=0>${ctx.skipped} - <#if ctx.others!=0>${ctx.others} - -

    ${ctx.attr.name}

    -

    ${ctx.size()} tests

    -
    -
    -
    -

    ${ctx.attr.name}

    - <#if ctx.passed!=0>${ctx.passed} passed - <#if ctx.failed!=0>${ctx.failed} failed - <#if ctx.skipped!=0>${ctx.skipped} skipped - <#if ctx.others!=0>${ctx.others} others -
    - - - - - - - - - - <#list ctx.testList as test> - - - - - - - -
    StatusTimestampTestName
    ${test.status?string}${test.startTime?string[("HH:mm:ss a")]} - ${test.name} - <#if test.parent??> -
    - ${test.getFullName()} -
    - -
    -
    -
  • - -
-
-
-
-
- -
-
-
-
-
-
- + <@attrCommon view="Category" ctx=report.categoryCtx.set /> \ No newline at end of file diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/device.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/device.ftl index b39015a..2d4de47 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/device.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/device.ftl @@ -1,80 +1,3 @@ <#if report.deviceCtx.set?size != 0> -<#assign - deviceCtx=report.deviceCtx.set> -<#compress> -
-
- -
-
    - <#list deviceCtx as ctx> -
  • -
    - - <#if ctx.passed!=0>${ctx.passed} - <#if ctx.failed!=0>${ctx.failed} - <#if ctx.skipped!=0>${ctx.skipped} - <#if ctx.others!=0>${ctx.others} - -

    ${ctx.attr.name}

    -

    ${ctx.size()} tests

    -
    -
    -
    -

    ${ctx.attr.name}

    - <#if ctx.passed!=0>${ctx.passed} passed - <#if ctx.failed!=0>${ctx.failed} failed - <#if ctx.skipped!=0>${ctx.skipped} skipped - <#if ctx.others!=0>${ctx.others} others -
    - - - - - - - - - - <#list ctx.testList as test> - - - - - - - -
    StatusTimestampTestName
    ${test.status?string}${test.startTime?string[("HH:mm:ss a")]} - ${test.name} - <#if test.parent??> -
    - ${test.getFullName()} -
    - -
    -
    -
  • - -
-
-
-
-
- -
-
-
-
-
-
- + <@attrCommon view="Device" ctx=report.deviceCtx.set /> \ No newline at end of file diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/exception.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/exception.ftl index 2c2c214..dd91c01 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/exception.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/exception.ftl @@ -1,84 +1,3 @@ <#if report.exceptionInfoCtx.set?size != 0> -<#assign - exceptionInfoCtx=report.exceptionInfoCtx.set> -<#compress> -
-
- -
-
    - <#list exceptionInfoCtx as context> -
  • -
    -
    -

    ${context.attr.name}

    -

    ${context.testList?size} tests

    -
    -
    -
    -
    -

    ${context.attr.name}

    -
    - - - - - - - - - - <#list context.testList as test> - - - - - - - -
    StatusTimestampTestName
    ${test.status?string}${test.startTime?string[("HH:mm:ss a")]} - ${test.name} - <#if test.parent??> -
    - ${test.parent.name} -
    - -
    -
    -
  • - -
-
-
-
-
- -
-
-
-
-
-
- + <@attrCommon view="Exception" ctx=report.exceptionInfoCtx.set /> \ No newline at end of file diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/spark.spa.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/spark.spa.ftl index b240ff0..c2d5458 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/spark.spa.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/spark.spa.ftl @@ -3,6 +3,7 @@ <#include "macros/attributes.ftl"> <#include "macros/log.ftl"> <#include "macros/recurse_nodes.ftl"> +<#include "macros/attr-common.ftl"> <#assign isbdd=false From a25e20a531d068a0759f49fe983d7f91f5a03fc3 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Tue, 28 Jul 2020 13:32:30 -0700 Subject: [PATCH 08/28] #225 update author --- .../extentreports/templates/spark/partials/author.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/author.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/author.ftl index b40b010..a128fbd 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/author.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/author.ftl @@ -1,3 +1,3 @@ <#if report.authorCtx.set?size != 0> - <@attrCommon view="Users" ctx=report.authorCtx.set /> + <@attrCommon view="Author" ctx=report.authorCtx.set /> \ No newline at end of file From 2e46d4c02a8b8bba96eb2d597747fee102193b61 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Tue, 28 Jul 2020 13:46:43 -0700 Subject: [PATCH 09/28] dark theme improvements --- .../offline/spark/css/spark-style.css | 20 +++++++++---------- .../templates/spark/partials/head.ftl | 2 +- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/main/resources/com/aventstack/extentreports/offline/spark/css/spark-style.css b/src/main/resources/com/aventstack/extentreports/offline/spark/css/spark-style.css index 7cac554..1b09cfd 100644 --- a/src/main/resources/com/aventstack/extentreports/offline/spark/css/spark-style.css +++ b/src/main/resources/com/aventstack/extentreports/offline/spark/css/spark-style.css @@ -202,7 +202,7 @@ img { right: 0; } .bdd-report .node { - padding: 20px 15px 0; + padding: 15px 15px 0; } .bdd-report .test-view .card .card-body { padding: 0 16px 20px 16px; @@ -453,6 +453,7 @@ textarea { **/ .dark .header, body.dark { background-color: #08111c; + color: #ddd; } .dark .side-nav, .dark .test-list { background-color: #19222d !important; @@ -474,13 +475,13 @@ textarea { background-color: #19221c !important; } .dark .test-detail .name, .dark p { - color: rgba(141,164,191,.95) !important; + color: #ddd !important; } .dark .test-wrapper, .dark .test-content, .dark .dashboard-view .container-fluid { background-color: #243140; } .dark .card, .dark .media>li, .dark .badge-default, .dark.bdd-report .card-body.l1, .dark .table-bordered td, .dark .table-bordered th, .dark textarea { - color: rgba(141,164,191,.95) !important; + color: #ddd !important; border: 1px solid #494949 !important; } .dark .card, .dark tr.bg-gray, .dark .table, .dark table, dark tr, .dark th, .dark td, .dark .table-striped>tbody>tr:nth-of-type(odd) { @@ -489,18 +490,15 @@ textarea { .dark .side-nav .side-nav-inner .side-nav-menu, .dark .file-icon, .dark pre, .dark .code-block { border-right: 1px solid #494949 !important; } -.dark .node { - color: #999; -} -.dark, .dark .table>thead>tr>th, .dark h1, .dark h2, .dark h3, .dark h4, .dark .font-weight-light, .dark .card-title, .dark .detail-head h4 { - color: #999; +.dark, .dark .node, .dark .table>thead>tr>th, .dark h1, .dark h2, .dark h3, .dark h4, .dark .font-weight-light, .dark .card-title, .dark .detail-head h4 { + color: #ddd; } .dark pre, .dark .code-block { background: transparent; - color: rgba(180,200,220,.95) !important; + color: #ddd !important; } -.dark .step, .dark .step pre, .dark .step textarea { - color: #fff !important; +.dark .side-nav-menu li a, .dark .step, .dark .step pre, .dark .step textarea { + color: #eee !important; } @media only screen and (min-width: 992px) { diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/head.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/head.ftl index 1f8d737..1fb5422 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/head.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/head.ftl @@ -2,7 +2,7 @@ <#assign resourceCDN=config.resourceCDN cdnURI="cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@" - csscommit="83e4e8776725a49f9e738b19d1e718e7404d6c19" + csscommit=29e68753bc6b941da6639f317e34da1d2aa9fdfb jscommit="5cf22a596531402644b8523470526952516f345f" iconcommit="b00a2d0486596e73dd7326beacf352c639623a0e"> <#if resourceCDN=="extentreports"> From 73ca77e687d62896aab45c3a92bfdbbb35c9baef Mon Sep 17 00:00:00 2001 From: anshooarora Date: Tue, 28 Jul 2020 13:50:58 -0700 Subject: [PATCH 10/28] fix template: wrap sha in double quotes --- .../aventstack/extentreports/templates/spark/partials/head.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/head.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/head.ftl index 1fb5422..4ec2081 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/head.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/head.ftl @@ -2,7 +2,7 @@ <#assign resourceCDN=config.resourceCDN cdnURI="cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@" - csscommit=29e68753bc6b941da6639f317e34da1d2aa9fdfb + csscommit="29e68753bc6b941da6639f317e34da1d2aa9fdfb" jscommit="5cf22a596531402644b8523470526952516f345f" iconcommit="b00a2d0486596e73dd7326beacf352c639623a0e"> <#if resourceCDN=="extentreports"> From 3a978d674ee22dc9b9ce3f9350d100ee52517c0a Mon Sep 17 00:00:00 2001 From: anshooarora Date: Tue, 28 Jul 2020 14:05:27 -0700 Subject: [PATCH 11/28] Create ExtentTestAttributesHierarchyTest.java --- .../ExtentTestAttributesHierarchyTest.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/test/java/com/aventstack/extentreports/ExtentTestAttributesHierarchyTest.java diff --git a/src/test/java/com/aventstack/extentreports/ExtentTestAttributesHierarchyTest.java b/src/test/java/com/aventstack/extentreports/ExtentTestAttributesHierarchyTest.java new file mode 100644 index 0000000..6aa9f67 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/ExtentTestAttributesHierarchyTest.java @@ -0,0 +1,46 @@ +package com.aventstack.extentreports; + +import java.util.Set; +import java.util.stream.Collectors; + +import org.testng.Assert; +import org.testng.annotations.Test; + +public class ExtentTestAttributesHierarchyTest { + + @Test + public void checkTagHierarchy() { + ExtentReports extent = new ExtentReports(); + ExtentTest t = extent.createTest("Test") + .assignCategory("Tag1") + .createNode("Level1") + .assignCategory("Tag2") + .createNode("Level2") + .assignCategory("Tag3"); + Set parentTags = t.getModel().getParent().getParent().getCategorySet() + .stream() + .map(x -> x.getName()) + .collect(Collectors.toSet()); + Set childTags = t.getModel().getParent().getCategorySet() + .stream() + .map(x -> x.getName()) + .collect(Collectors.toSet()); + Set grandchildTags = t.getModel().getCategorySet() + .stream() + .map(x -> x.getName()) + .collect(Collectors.toSet()); + // grandchild, assigned to self + Assert.assertTrue(grandchildTags.contains("Tag3")); + // grandchild, from parent [Level2] + Assert.assertTrue(grandchildTags.contains("Tag2")); + // grandchild, from ancestor [Level1] + Assert.assertTrue(grandchildTags.contains("Tag1")); + // child, assigned to self + Assert.assertTrue(childTags.contains("Tag2")); + // child, propagated from parent + Assert.assertTrue(childTags.contains("Tag1")); + // parent + Assert.assertTrue(parentTags.contains("Tag1")); + } + +} From 7fc3d8f790668f1d5941fe9129488f2bb0ee968f Mon Sep 17 00:00:00 2001 From: anshooarora Date: Wed, 29 Jul 2020 21:39:36 -0700 Subject: [PATCH 12/28] remove conversion --- .../java/com/aventstack/extentreports/ExtentReports.java | 3 +-- .../com/aventstack/extentreports/ReactiveSubject.java | 9 ++------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/aventstack/extentreports/ExtentReports.java b/src/main/java/com/aventstack/extentreports/ExtentReports.java index 1e92e89..844fd23 100644 --- a/src/main/java/com/aventstack/extentreports/ExtentReports.java +++ b/src/main/java/com/aventstack/extentreports/ExtentReports.java @@ -3,7 +3,6 @@ import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.util.Arrays; import java.util.List; import com.aventstack.extentreports.gherkin.GherkinDialectManager; @@ -67,7 +66,7 @@ public class ExtentReports extends AbstractProcessor implements Writable, Analys */ @SuppressWarnings("rawtypes") public void attachReporter(ExtentObserver... observer) { - attachReporter(Arrays.asList(observer)); + super.attachReporter(observer); } /** diff --git a/src/main/java/com/aventstack/extentreports/ReactiveSubject.java b/src/main/java/com/aventstack/extentreports/ReactiveSubject.java index de53bae..665eaba 100644 --- a/src/main/java/com/aventstack/extentreports/ReactiveSubject.java +++ b/src/main/java/com/aventstack/extentreports/ReactiveSubject.java @@ -1,7 +1,5 @@ package com.aventstack.extentreports; -import java.util.List; - import com.aventstack.extentreports.model.Author; import com.aventstack.extentreports.model.Category; import com.aventstack.extentreports.model.Device; @@ -33,12 +31,9 @@ abstract class ReactiveSubject { private final PublishSubject mediaSubject = PublishSubject.create(); private final PublishSubject attribSubject = PublishSubject.create(); - protected ReactiveSubject() { - } - @SuppressWarnings({"rawtypes", "unchecked"}) - protected final void attachReporter(List observerList) { - for (ExtentObserver o : observerList) { + protected void attachReporter(ExtentObserver... observers) { + for (ExtentObserver o : observers) { if (o instanceof ReportObserver) reportSubject.subscribe(((ReportObserver) o).getReportObserver()); if (o instanceof TestObserver) From cc36c5f363eccf1127ac4ee2704c6061b52764df Mon Sep 17 00:00:00 2001 From: Anshoo Arora Date: Thu, 30 Jul 2020 09:59:27 -0700 Subject: [PATCH 13/28] Update Readme.md --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index b14ed08..f769908 100644 --- a/Readme.md +++ b/Readme.md @@ -2,7 +2,7 @@ ### Documentation ### -* Documentation for ExtentReports 5.x is hosted on GitHub at [ExtentReports Wiki](https://github.com/extent-framework/extentreports-java/wiki). +* Documentation (still in progress) for ExtentReports 5.x is hosted on GitHub at [ExtentReports Wiki](https://github.com/extent-framework/extentreports-java/wiki). * For versions 4 and below, visit [extentreports.com](http://extentreports.com/). ### Contributing ### From 41a89aabfe9a5d76f34ee9ad5a665ba1094189df Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 21:14:29 -0700 Subject: [PATCH 14/28] fixes #226 --- .../extentreports/templates/spark/partials/dashboard.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/dashboard.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/dashboard.ftl index 718a72f..d98d6b3 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/dashboard.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/dashboard.ftl @@ -192,8 +192,8 @@ <#list report.systemEnvInfo as info> - ${info.name} - ${info.value} + <#if info.name??>${info.name} + <#if info.value??>${info.value} From 76b246ec92bffdb5f010bf06169fb26b1f51f74f Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 21:15:42 -0700 Subject: [PATCH 15/28] change test duration format to mm:ss:SSS --- .../extentreports/templates/spark/partials/test.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/test.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/test.ftl index 0d36d69..d12a3d4 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/test.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/test.ftl @@ -59,7 +59,7 @@

${test.name}

-

${test.startTime?string("HH:mm:ss a")} / ${test.timeTaken()/1000} secs

+

${test.startTime?string("HH:mm:ss a")} / ${test.timeTaken()?number_to_time?string("mm:ss:SSS")}

<#compress> @@ -70,7 +70,7 @@
${test.name}
${test.startTime?string("MM.dd.yyyy HH:mm:ss")} ${test.endTime?string("MM.dd.yyyy HH:mm:ss")} - ${test.timeTaken()/1000} secs + ${test.timeTaken()?number_to_time?string("mm:ss:SSS")}
<#if test.hasAttributes()>
<@attributes test=test />
From 5ff734c8ea7bc2bdd551db565667936a94068db8 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 21:15:42 -0700 Subject: [PATCH 16/28] change test duration format to mm:ss:SSS #220 --- .../extentreports/templates/spark/partials/test.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/test.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/test.ftl index 0d36d69..d12a3d4 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/partials/test.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/partials/test.ftl @@ -59,7 +59,7 @@

${test.name}

-

${test.startTime?string("HH:mm:ss a")} / ${test.timeTaken()/1000} secs

+

${test.startTime?string("HH:mm:ss a")} / ${test.timeTaken()?number_to_time?string("mm:ss:SSS")}

<#compress> @@ -70,7 +70,7 @@
${test.name}
${test.startTime?string("MM.dd.yyyy HH:mm:ss")} ${test.endTime?string("MM.dd.yyyy HH:mm:ss")} - ${test.timeTaken()/1000} secs + ${test.timeTaken()?number_to_time?string("mm:ss:SSS")}
<#if test.hasAttributes()>
<@attributes test=test />
From eaa5e6525654270dc0bc881d16682716679eed6d Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 21:23:48 -0700 Subject: [PATCH 17/28] closes @227 --- src/main/java/com/aventstack/extentreports/Status.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/aventstack/extentreports/Status.java b/src/main/java/com/aventstack/extentreports/Status.java index cf3e389..00b0c7d 100644 --- a/src/main/java/com/aventstack/extentreports/Status.java +++ b/src/main/java/com/aventstack/extentreports/Status.java @@ -11,7 +11,7 @@ @Getter public enum Status { - INFO("Info", 10), PASS("Pass", 20), SKIP("Skip", 30), WARNING("Warning", 40), FAIL("Fail", 50); + INFO("Info", 10), PASS("Pass", 20), WARNING("Warning", 30), SKIP("Skip", 40), FAIL("Fail", 50); private final Integer level; private final String name; @@ -21,16 +21,16 @@ public enum Status { this.level = level; } - private static void resolveHierarchy(List status) { - status.sort((Status s1, Status s2) -> s1.getLevel().compareTo(s2.getLevel())); - } - public static List getResolvedHierarchy(List status) { List list = new ArrayList<>(status); resolveHierarchy(list); return list; } + private static void resolveHierarchy(List status) { + status.sort((Status s1, Status s2) -> s1.getLevel().compareTo(s2.getLevel())); + } + public static Status max(Collection status) { return status.stream().max(Comparator.comparing(Status::getLevel)).orElse(PASS); } From 613c9c8747ebd5099d856ef193695a37e686d216 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 21:24:02 -0700 Subject: [PATCH 18/28] #227 updates test --- .../com/aventstack/extentreports/ExtentTestLogHierarchyTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/aventstack/extentreports/ExtentTestLogHierarchyTest.java b/src/test/java/com/aventstack/extentreports/ExtentTestLogHierarchyTest.java index daecfd0..80a4dc3 100644 --- a/src/test/java/com/aventstack/extentreports/ExtentTestLogHierarchyTest.java +++ b/src/test/java/com/aventstack/extentreports/ExtentTestLogHierarchyTest.java @@ -48,7 +48,6 @@ public void warning() { ExtentTest test = test(); test.pass("Pass"); test.info("Info"); - test.skip("Skip"); test.warning("Warning"); Assert.assertEquals(test.getStatus(), Status.WARNING); } From 72924875ff212e79b72314f07a9691b7923f99f7 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 21:28:15 -0700 Subject: [PATCH 19/28] adds check on template vars --- .../extentreports/templates/commons/commons-variables.ftl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/com/aventstack/extentreports/templates/commons/commons-variables.ftl b/src/main/resources/com/aventstack/extentreports/templates/commons/commons-variables.ftl index 3911a18..9e4c4fe 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/commons/commons-variables.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/commons/commons-variables.ftl @@ -1,8 +1,8 @@ <#assign config=this.config() - theme=config.theme?lower_case + theme="" timeStampFormat=config.timeStampFormat - offline=config.offlineMode + offline=false reportType="" parentHeading="Tests" childHeading="Steps" @@ -12,6 +12,8 @@ chartHeight="90" chartBoxHeight="94" displayEvents=true> +<#if config.theme??><#assign theme=config.theme?lower_case> +<#if config.offlineMode??><#assign offline=config.offlineMode> <#if report.stats.analysisStrategy=="SUITE"> <#assign parentHeading="Suite" From a910ee3f5048f7bd412246d719ab851ee6f514f4 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 21:23:48 -0700 Subject: [PATCH 20/28] closes #227 --- src/main/java/com/aventstack/extentreports/Status.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/aventstack/extentreports/Status.java b/src/main/java/com/aventstack/extentreports/Status.java index cf3e389..00b0c7d 100644 --- a/src/main/java/com/aventstack/extentreports/Status.java +++ b/src/main/java/com/aventstack/extentreports/Status.java @@ -11,7 +11,7 @@ @Getter public enum Status { - INFO("Info", 10), PASS("Pass", 20), SKIP("Skip", 30), WARNING("Warning", 40), FAIL("Fail", 50); + INFO("Info", 10), PASS("Pass", 20), WARNING("Warning", 30), SKIP("Skip", 40), FAIL("Fail", 50); private final Integer level; private final String name; @@ -21,16 +21,16 @@ public enum Status { this.level = level; } - private static void resolveHierarchy(List status) { - status.sort((Status s1, Status s2) -> s1.getLevel().compareTo(s2.getLevel())); - } - public static List getResolvedHierarchy(List status) { List list = new ArrayList<>(status); resolveHierarchy(list); return list; } + private static void resolveHierarchy(List status) { + status.sort((Status s1, Status s2) -> s1.getLevel().compareTo(s2.getLevel())); + } + public static Status max(Collection status) { return status.stream().max(Comparator.comparing(Status::getLevel)).orElse(PASS); } From 2fc88a74c05bf62af2dce80a938e9c791b621b7d Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 21:24:02 -0700 Subject: [PATCH 21/28] #227 updates test --- .../com/aventstack/extentreports/ExtentTestLogHierarchyTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/aventstack/extentreports/ExtentTestLogHierarchyTest.java b/src/test/java/com/aventstack/extentreports/ExtentTestLogHierarchyTest.java index daecfd0..80a4dc3 100644 --- a/src/test/java/com/aventstack/extentreports/ExtentTestLogHierarchyTest.java +++ b/src/test/java/com/aventstack/extentreports/ExtentTestLogHierarchyTest.java @@ -48,7 +48,6 @@ public void warning() { ExtentTest test = test(); test.pass("Pass"); test.info("Info"); - test.skip("Skip"); test.warning("Warning"); Assert.assertEquals(test.getStatus(), Status.WARNING); } From 81969b47f1356b90fd4624a4e520d21b7d54b8f0 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 21:28:15 -0700 Subject: [PATCH 22/28] adds check on template vars --- .../extentreports/templates/commons/commons-variables.ftl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/resources/com/aventstack/extentreports/templates/commons/commons-variables.ftl b/src/main/resources/com/aventstack/extentreports/templates/commons/commons-variables.ftl index 3911a18..9e4c4fe 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/commons/commons-variables.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/commons/commons-variables.ftl @@ -1,8 +1,8 @@ <#assign config=this.config() - theme=config.theme?lower_case + theme="" timeStampFormat=config.timeStampFormat - offline=config.offlineMode + offline=false reportType="" parentHeading="Tests" childHeading="Steps" @@ -12,6 +12,8 @@ chartHeight="90" chartBoxHeight="94" displayEvents=true> +<#if config.theme??><#assign theme=config.theme?lower_case> +<#if config.offlineMode??><#assign offline=config.offlineMode> <#if report.stats.analysisStrategy=="SUITE"> <#assign parentHeading="Suite" From d2ca4ea2202f51ebb07e13d5e421c95e3d90d64a Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 21:39:43 -0700 Subject: [PATCH 23/28] fixes #220 --- .../extentreports/templates/spark/macros/recurse_nodes.ftl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/com/aventstack/extentreports/templates/spark/macros/recurse_nodes.ftl b/src/main/resources/com/aventstack/extentreports/templates/spark/macros/recurse_nodes.ftl index 0fe770c..e938fc1 100644 --- a/src/main/resources/com/aventstack/extentreports/templates/spark/macros/recurse_nodes.ftl +++ b/src/main/resources/com/aventstack/extentreports/templates/spark/macros/recurse_nodes.ftl @@ -10,6 +10,7 @@
+ <@attributes test=node /> <#if TestService.testHasScreenCapture(node, true)>
From 59da07ecdbfe29726657cf5825ec514bd3909d8a Mon Sep 17 00:00:00 2001 From: anshooarora Date: Sun, 2 Aug 2020 22:30:20 -0700 Subject: [PATCH 24/28] #220 add tests --- .../extentreports/reporter/SparkTagTest.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/test/java/com/aventstack/extentreports/reporter/SparkTagTest.java diff --git a/src/test/java/com/aventstack/extentreports/reporter/SparkTagTest.java b/src/test/java/com/aventstack/extentreports/reporter/SparkTagTest.java new file mode 100644 index 0000000..e5ee949 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/reporter/SparkTagTest.java @@ -0,0 +1,40 @@ +package com.aventstack.extentreports.reporter; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import org.testng.Assert; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.ExtentReports; + +public class SparkTagTest { + private static final String PATH = "target/spark.html"; + private static final String TAG = "TAG#1234"; + + private ExtentReports extent; + + @BeforeMethod + public void before() { + extent = new ExtentReports(); + extent.attachReporter(new ExtentSparkReporter(PATH)); + } + + @Test + public void testTag() throws IOException { + extent.createTest("Test").assignCategory(TAG); + extent.flush(); + Assert.assertTrue(Files.readAllLines(new File(PATH).toPath()).stream() + .anyMatch(x -> x.contains(TAG))); + } + + @Test + public void nodeTag() throws IOException { + extent.createTest("Test").createNode("Node").assignCategory(TAG); + extent.flush(); + Assert.assertTrue(Files.readAllLines(new File(PATH).toPath()).stream() + .anyMatch(x -> x.contains(TAG))); + } +} From 5979b059e1b94bdbe9bb513b62ee90c4767a6628 Mon Sep 17 00:00:00 2001 From: Anshoo Arora Date: Wed, 5 Aug 2020 16:42:31 -0700 Subject: [PATCH 25/28] closes #231 --- .../aventstack/extentreports/reporter/ExtentKlovReporter.java | 3 ++- src/main/java/com/aventstack/extentreports/ExtentTest.java | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/reporters/klov/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java b/reporters/klov/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java index ef0f261..ef16465 100644 --- a/reporters/klov/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java +++ b/reporters/klov/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java @@ -655,7 +655,8 @@ public synchronized void onLogAdded(Test test, Log log) { doc = new Document("testCount", testCount); exceptionCollection.updateOne(new Document("_id", docException.getObjectId("_id")), new Document("$set", doc)); - doc = new Document("exception", exceptionNameObjectIdCollection.get(ex.getName())); + doc = new Document("exception", exceptionNameObjectIdCollection.get(ex.getName())) + .append("exceptionName", ex.getName()); testCollection.updateOne(new Document("_id", test.getInfoMap().get(ID_KEY)), new Document("$set", doc)); updateTestDesc(test); } diff --git a/src/main/java/com/aventstack/extentreports/ExtentTest.java b/src/main/java/com/aventstack/extentreports/ExtentTest.java index 1d8a392..73f20ae 100644 --- a/src/main/java/com/aventstack/extentreports/ExtentTest.java +++ b/src/main/java/com/aventstack/extentreports/ExtentTest.java @@ -366,6 +366,8 @@ public ExtentTest log(Status status, String details, Throwable t, Media media) { ExceptionInfo exceptionInfo = ExceptionInfoService.createExceptionInfo(t); log.setException(exceptionInfo); log.addMedia(media); + if (exceptionInfo != null) + model.getExceptions().add(exceptionInfo); model.addLog(log); extent.onLogCreated(log, model); return this; From 8f2a2627f735a7276ed882942eb902f7a7cba9ce Mon Sep 17 00:00:00 2001 From: anshooarora Date: Wed, 5 Aug 2020 16:46:28 -0700 Subject: [PATCH 26/28] #224 - attribute: conditional propagation --- .../com/aventstack/extentreports/model/Test.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/aventstack/extentreports/model/Test.java b/src/main/java/com/aventstack/extentreports/model/Test.java index e9ebb77..d7eacf2 100644 --- a/src/main/java/com/aventstack/extentreports/model/Test.java +++ b/src/main/java/com/aventstack/extentreports/model/Test.java @@ -68,9 +68,11 @@ public final void addChild(Test child) { child.setParent(this); child.setLeaf(true); isLeaf = false; - child.authorSet.addAll(authorSet); - child.categorySet.addAll(categorySet); - child.deviceSet.addAll(deviceSet); + if (!child.isBDD() || child.isBDD() && child.bddType == Scenario.class) { + child.authorSet.addAll(authorSet); + child.categorySet.addAll(categorySet); + child.deviceSet.addAll(deviceSet); + } end(child.getStatus()); children.add(child); } @@ -152,8 +154,8 @@ public final String getFullName() { } public final void addMedia(Media m) { - if (m != null && (m.getPath() != null || m.getResolvedPath() != null - || ((ScreenCapture) m).getBase64() != null)) + if (m != null + && (m.getPath() != null || m.getResolvedPath() != null || ((ScreenCapture) m).getBase64() != null)) media.add(m); end(status); } @@ -213,4 +215,4 @@ private void computeStatus(Test t) { } } } -} +} \ No newline at end of file From e3344206823140ecfac67f0057a5e533ac573577 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Wed, 5 Aug 2020 16:46:50 -0700 Subject: [PATCH 27/28] #224 adds import --- src/main/java/com/aventstack/extentreports/model/Test.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/aventstack/extentreports/model/Test.java b/src/main/java/com/aventstack/extentreports/model/Test.java index d7eacf2..c3a36fa 100644 --- a/src/main/java/com/aventstack/extentreports/model/Test.java +++ b/src/main/java/com/aventstack/extentreports/model/Test.java @@ -16,6 +16,7 @@ import com.aventstack.extentreports.Status; import com.aventstack.extentreports.gherkin.model.IGherkinFormatterModel; +import com.aventstack.extentreports.gherkin.model.Scenario; import com.aventstack.extentreports.gherkin.model.ScenarioOutline; import lombok.AllArgsConstructor; From b7bbc21f0f655e328b1b750bb2def0999848e911 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Wed, 5 Aug 2020 17:07:21 -0700 Subject: [PATCH 28/28] prepare release 5.0.2 --- CHANGELOG.md | 58 +++++++++++++++++++++++++++--------------- pom.xml | 29 ++++++++++++++++++++- reporters/klov/pom.xml | 31 ++++++++++++++++++++-- 3 files changed, 94 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2ecbcc..ad49532 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,34 +1,50 @@ +## [5.0.2](https://github.com/extent-framework/extentreports-java/compare/v5.0.1...v5.0.2) + +#### Issues Resolved +- [#103](/issues/103) Add missing lightbox for base64 screenshots +- [#220](/issues/220) Add missing tags for child tests +- [#222](/issues/222) Removed TestNG from main scope and added under `test` +- [#226](/issues/226) Perform null check for SystemEnvInfo elements +- [#227](/issues/227) Change SKIP priority to be higher than WARN + +#### New Features +- [#223](/issues/223) Added attribute (tag) details for Klov +- [#224](/issues/224) All tags will be propagated down the test tree. An attribute assigned to a parent test + would automatically be assigned to a child test also. +- [#225](/issues/225) All attribute views (Author, Device, Tag) now use the same template +- [#231](/issues/231) Exceptions from log will be assigned to its owning test + ## [5.0.1](https://github.com/extent-framework/extentreports-java/compare/v5.0.0...v5.0.1) #### Issues Resolved -- [#103](../issues/103) Clicking base64 images does not fire lightbox +- [#103](/issues/103) Clicking base64 images does not fire lightbox - KlovReporter uses the ExtentReports 5.0.0-SNAPSHOT dependency, revert to RELEASE -- [#191](../issues/191) Navigation from Attributes/Exceptions views to test for BDD +- [#191](/issues/191) Navigation from Attributes/Exceptions views to test for BDD ## [5.0.0](https://github.com/extent-framework/extentreports-java/compare/v4.1.6...v5.0.0) #### New Features -- [#47](../issues/47) Anchors for each test -- [#150](../issues/150) Unused status from charts will not be displayed -- [#152](../issues/152) Spark: Author view -- [#153](../issues/153) Spark: Device view -- [#157](../issues/157) Spark: Add TestRunnerLogs view -- [#168](../issues/168) Spark: Navigation from attributes pages (tags, exception) to Tests View -- [#173](../issues/173) Spark: Allow configuration to select view order, Dashboard view as primary -- [#176](../issues/176) Apply Status filters to report -- [#177](../issues/177) Minified templates (> 10% reduction in file size) -- [#184](../issues/184) Reporter::loadExternalConfiguration with json file -- [#188](../issues/188) Display upto 4 `pre` blocks on a single row -- [#191](../issues/191) Navigation from Tags/Exception pages to nested steps -- [#213](../issues/213) Toggle theme from URI component using '#theme=' -- [#215](../issues/215) A test removed from the report will also be removed from MongoDB (Klov) +- [#47](/issues/47) Anchors for each test +- [#150](/issues/150) Unused status from charts will not be displayed +- [#152](/issues/152) Spark: Author view +- [#153](/issues/153) Spark: Device view +- [#157](/issues/157) Spark: Add TestRunnerLogs view +- [#168](/issues/168) Spark: Navigation from attributes pages (tags, exception) to Tests View +- [#173](/issues/173) Spark: Allow configuration to select view order, Dashboard view as primary +- [#176](/issues/176) Apply Status filters to report +- [#177](/issues/177) Minified templates (> 10% reduction in file size) +- [#184](/issues/184) Reporter::loadExternalConfiguration with json file +- [#188](/issues/188) Display upto 4 `pre` blocks on a single row +- [#191](/issues/191) Navigation from Tags/Exception pages to nested steps +- [#213](/issues/213) Toggle theme from URI component using '#theme=' +- [#215](/issues/215) A test removed from the report will also be removed from MongoDB (Klov) #### Issues Resolved -- [#131](../issues/131) Merging two html extent Reports works but Category view gets overwritten -- [#161](../issues/161) Merging ExtentSpark 4.1.5 Reports causing the existing base64 image removed -- [#169](../issues/169) Fix SparkReporter shortcuts -- [#197](../issues/197) MarkupHelper::codeBlock has extra indentation on the first line -- [#208](../issues/208) Show title text for screencaptures +- [#131](/issues/131) Merging two html extent Reports works but Category view gets overwritten +- [#161](/issues/161) Merging ExtentSpark 4.1.5 Reports causing the existing base64 image removed +- [#169](/issues/169) Fix SparkReporter shortcuts +- [#197](/issues/197) MarkupHelper::codeBlock has extra indentation on the first line +- [#208](/issues/208) Show title text for screencaptures ## [4.1.7](https://github.com/extent-framework/extentreports-java/compare/v4.1.6...v4.1.7) #### Fixes diff --git a/pom.xml b/pom.xml index 7116b78..fdbe0e0 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.aventstack extentreports - 5.0.2-SNAPSHOT + 5.0.2 ExtentReports www.extentreports.com @@ -104,6 +104,20 @@ maven-resources-plugin 3.1.0 + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + org.jacoco jacoco-maven-plugin @@ -128,6 +142,19 @@ + release-sign-artifacts + + + performRelease + true + + + + 41414BBD + + anshooarora + + diff --git a/reporters/klov/pom.xml b/reporters/klov/pom.xml index 46ae21f..7b1ab35 100644 --- a/reporters/klov/pom.xml +++ b/reporters/klov/pom.xml @@ -5,7 +5,7 @@ com.aventstack klov-reporter - 5.0.2-SNAPSHOT + 5.0.2 klov-reporter www.extentreports.com Reporter for Klov Server @@ -43,7 +43,7 @@ com.aventstack extentreports - 5.0.2-SNAPSHOT + 5.0.2 org.mongodb @@ -101,11 +101,38 @@ maven-resources-plugin 3.1.0 + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + release-sign-artifacts + + + performRelease + true + + + + 41414BBD + + anshooarora + +