diff --git a/CHANGELOG.md b/CHANGELOG.md index e7aba3a..d05ab71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [4.1.5](https://github.com/extent-framework/extentreports-java/compare/v4.1.4...v4.1.5) +#### Fixes +* [#139] BDD: Feature must not be eligible to increment counts for TestAttributeContext, part of fix of [cucumber4-adapter#50](https://github.com/extent-framework/extentreports-cucumber4-adapter/issues/50) +* [#143] Fix issue with a long node name breaking view (Spark) +* [#144] Fix Skipped status colors in charts +* [#145] ExtentKlovReporter adds BasicConfiguration + ## [4.1.4](https://github.com/extent-framework/extentreports-java/compare/v4.1.3...v4.1.4) #### Improvements * [#114] ExtentSparkReporter to display hierarchical name in tags view diff --git a/pom-nexus.xml b/pom-nexus.xml index 7aa8e5c..6949428 100644 --- a/pom-nexus.xml +++ b/pom-nexus.xml @@ -5,7 +5,7 @@ com.aventstack extentreports - 4.1.4 + 4.1.5 extentreports www.extentreports.com diff --git a/pom.xml b/pom.xml index f1d2aeb..da95f98 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.aventstack extentreports - 4.1.4 + 4.1.5 extentreports www.extentreports.com diff --git a/src/main/java/com/aventstack/extentreports/model/context/TestAttributeTestContext.java b/src/main/java/com/aventstack/extentreports/model/context/TestAttributeTestContext.java index 9354028..560bda6 100644 --- a/src/main/java/com/aventstack/extentreports/model/context/TestAttributeTestContext.java +++ b/src/main/java/com/aventstack/extentreports/model/context/TestAttributeTestContext.java @@ -7,6 +7,7 @@ import com.aventstack.extentreports.Status; import com.aventstack.extentreports.model.Attribute; import com.aventstack.extentreports.model.Test; +import com.aventstack.extentreports.model.context.filter.TestAttributeContextFilters; public class TestAttributeTestContext implements Serializable { @@ -29,6 +30,8 @@ public void setTest(Test test) { } private void updateTestStatusCounts(Test test) { + if (!TestAttributeContextFilters.testHasStatusIncrEligibility(test)) + return; if (test.getStatus() == Status.PASS) { passed++; } else if (test.getStatus() == Status.FAIL || test.getStatus() == Status.FATAL) { diff --git a/src/main/java/com/aventstack/extentreports/model/context/filter/TestAttributeContextFilters.java b/src/main/java/com/aventstack/extentreports/model/context/filter/TestAttributeContextFilters.java new file mode 100644 index 0000000..87d15a8 --- /dev/null +++ b/src/main/java/com/aventstack/extentreports/model/context/filter/TestAttributeContextFilters.java @@ -0,0 +1,12 @@ +package com.aventstack.extentreports.model.context.filter; + +import com.aventstack.extentreports.model.Test; + +public class TestAttributeContextFilters { + + public static boolean testHasStatusIncrEligibility(Test test) { + return test.isBehaviorDrivenType() && test.getBehaviorDrivenTypeName().equalsIgnoreCase("feature") ? false + : true; + } + +} diff --git a/src/main/java/com/aventstack/extentreports/model/service/TestService.java b/src/main/java/com/aventstack/extentreports/model/service/TestService.java index d967747..24a3abb 100644 --- a/src/main/java/com/aventstack/extentreports/model/service/TestService.java +++ b/src/main/java/com/aventstack/extentreports/model/service/TestService.java @@ -14,31 +14,31 @@ public static Boolean testHasAttributes(Test test) { } public static Boolean testHasAuthor(Test test) { - return !test.getAuthorContext().isEmpty(); + return test != null && !test.getAuthorContext().isEmpty(); } public static Boolean testHasCategory(Test test) { - return !test.getCategoryContext().isEmpty(); + return test != null && !test.getCategoryContext().isEmpty(); } public static Boolean testHasDevice(Test test) { - return !test.getDeviceContext().isEmpty(); + return test != null && !test.getDeviceContext().isEmpty(); } public static Boolean testHasException(Test test) { - return !test.getExceptionInfoContext().isEmpty(); + return test != null && !test.getExceptionInfoContext().isEmpty(); } public static Boolean testHasChildren(Test test) { - return !test.getNodeContext().isEmpty(); + return test != null && !test.getNodeContext().isEmpty(); } public static Boolean testHasLog(Test test) { - return !test.getLogContext().isEmpty(); + return test != null && !test.getLogContext().isEmpty(); } public static Boolean testHasScreenCapture(Test test) { - return !test.getScreenCaptureContext().isEmpty(); + return test != null && !test.getScreenCaptureContext().isEmpty(); } public static Boolean testHasScreenCapture(Test test, Boolean deep) { @@ -54,7 +54,7 @@ public static Boolean testHasScreenCapture(Test test, Boolean deep) { } public static Boolean isTestBehaviorDriven(Test test) { - return test.getBddType() != null; + return test != null && test.getBddType() != null; } public static String getBehaviorDrivenTypeName(Class bddType) diff --git a/src/main/java/com/aventstack/extentreports/reporter/ConfigurableReporter.java b/src/main/java/com/aventstack/extentreports/reporter/ConfigurableReporter.java index e179883..f696599 100644 --- a/src/main/java/com/aventstack/extentreports/reporter/ConfigurableReporter.java +++ b/src/main/java/com/aventstack/extentreports/reporter/ConfigurableReporter.java @@ -120,8 +120,14 @@ protected void init(String[] configFilePath, BasicConfiguration userConfig) { } protected void loadInternalReporterConfiguration(String[] configFilePath) { + if (configFilePath == null || configFilePath.length == 0) + return; + ClassLoader loader = getClass().getClassLoader(); - Arrays.stream(configFilePath).map(x -> loader.getResourceAsStream(x)).filter(x -> x != null).findFirst() + Arrays.stream(configFilePath) + .map(x -> loader.getResourceAsStream(x)) + .filter(x -> x != null) + .findFirst() .ifPresent(x -> loadConfig(x)); } diff --git a/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java b/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java index 95dbb03..bf069ab 100644 --- a/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java +++ b/src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java @@ -36,6 +36,7 @@ import com.aventstack.extentreports.model.context.TestAttributeTestContextStore; import com.aventstack.extentreports.model.service.LogService; import com.aventstack.extentreports.model.service.TestService; +import com.aventstack.extentreports.reporter.configuration.ExtentKlovReporterConfiguration; import com.aventstack.extentreports.utils.IntUtil; import com.aventstack.extentreports.utils.MongoUtil; import com.mongodb.MongoClient; @@ -64,6 +65,8 @@ public class ExtentKlovReporter extends ConfigurableReporter { private static final String DB_NAME = "klov"; private static final String DEFAULT_PROJECT_NAME = "Default"; + private ExtentKlovReporterConfiguration config = new ExtentKlovReporterConfiguration(this); + private String url; private List testList; private ReportStatusStats stats; @@ -250,14 +253,23 @@ public ExtentKlovReporter initKlovServerConnection(String url) { return this; } + public void loadInitializationParams(InputStream is) { + init(null, config); + loadConfig(is); + loadInitializationParams(); + } + public void loadInitializationParams(String propertiesPath) throws FileNotFoundException { + init(null, config); File f = new File(propertiesPath); - InputStream stream = new FileInputStream(f); - loadConfig(stream); - loadInitializationParams(); + if (f.exists()) { + InputStream stream = new FileInputStream(f); + loadInitializationParams(stream); + } } public void loadInitializationParams(Properties props) { + init(null, config); loadConfig(props); loadInitializationParams(); } diff --git a/src/main/java/com/aventstack/extentreports/reporter/configuration/ExtentKlovReporterConfiguration.java b/src/main/java/com/aventstack/extentreports/reporter/configuration/ExtentKlovReporterConfiguration.java new file mode 100644 index 0000000..c222c0a --- /dev/null +++ b/src/main/java/com/aventstack/extentreports/reporter/configuration/ExtentKlovReporterConfiguration.java @@ -0,0 +1,11 @@ +package com.aventstack.extentreports.reporter.configuration; + +import com.aventstack.extentreports.reporter.AbstractReporter; + +public class ExtentKlovReporterConfiguration extends RichViewReporterConfiguration { + + public ExtentKlovReporterConfiguration(AbstractReporter reporter) { + super(reporter); + } + +} 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 aaf555d..7693bd7 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 @@ -217,7 +217,8 @@ td { padding: 0 16px 20px 16px; } .bdd-report .accordion .node { - + width: 90%; + max-width: 90%; } .bdd-report .accordion .node-description { font-weight: 400; diff --git a/src/main/resources/com/aventstack/extentreports/offline/spark/js/spark-script.js b/src/main/resources/com/aventstack/extentreports/offline/spark/js/spark-script.js index c853841..9d33a0f 100644 --- a/src/main/resources/com/aventstack/extentreports/offline/spark/js/spark-script.js +++ b/src/main/resources/com/aventstack/extentreports/offline/spark/js/spark-script.js @@ -243,7 +243,7 @@ function drawChart(ctx, config) { statusGroup.passParent, statusGroup.failParent, statusGroup.fatalParent, statusGroup.errorParent, statusGroup.warningParent, statusGroup.skipParent ], backgroundColor: [ - "#00af00", "#F7464A", "#8b0000", "#ff6347", "#FDB45C", "#1e90ff" + "#00af00", "#F7464A", "#8b0000", "#ff6347", "#FDB45C", "#ff9900" ] }], labels: [ "Pass", "Fail", "Fatal", "Error", "Warning", "Skip" ] @@ -268,7 +268,7 @@ function drawChart(ctx, config) { statusGroup.passChild, statusGroup.failChild, statusGroup.fatalChild, statusGroup.errorChild, statusGroup.warningChild, statusGroup.skipChild,statusGroup.infoChild ], backgroundColor: [ - "#00af00", "#F7464A", "#8b0000", "#ff6347", "#FDB45C", "#1e90ff", "#46BFBD" + "#00af00", "#F7464A", "#8b0000", "#ff6347", "#FDB45C", "#ff9900", "#46BFBD" ] }], labels: [ "Pass", "Fail", "Fatal", "Error", "Warning", "Skip", "Info" ] @@ -293,7 +293,7 @@ function drawChart(ctx, config) { statusGroup.passGrandChild, statusGroup.failGrandChild, statusGroup.fatalGrandChild, statusGroup.errorGrandChild, statusGroup.warningGrandChild, statusGroup.skipGrandChild, statusGroup.infoGrandChild ], backgroundColor: [ - "#00af00", "#F7464A", "#8b0000", "#ff6347", "#FDB45C", "#1e90ff", "#46BFBD" + "#00af00", "#F7464A", "#8b0000", "#ff6347", "#FDB45C", "#ff9900", "#46BFBD" ] }], labels: [ "Pass", "Fail", "Fatal", "Error", "Warning", "Skip", "Info" ] @@ -318,7 +318,7 @@ function drawChart(ctx, config) { statusGroup.passEvents, statusGroup.failEvents, statusGroup.fatalEvents, statusGroup.errorEvents, statusGroup.warningEvents, statusGroup.skipEvents, statusGroup.infoEvents ], backgroundColor: [ - "#00af00", "#F7464A", "#8b0000", "#ff6347", "#FDB45C", "#1e90ff", "#46BFBD" + "#00af00", "#F7464A", "#8b0000", "#ff6347", "#FDB45C", "#ff9900", "#46BFBD" ] }], labels: [ "Pass", "Fail", "Fatal", "Error", "Warning", "Skip", "Info" ] diff --git a/src/main/resources/com/aventstack/extentreports/view/spark/partials/head.ftl b/src/main/resources/com/aventstack/extentreports/view/spark/partials/head.ftl index 0a8de70..3a9c00a 100644 --- a/src/main/resources/com/aventstack/extentreports/view/spark/partials/head.ftl +++ b/src/main/resources/com/aventstack/extentreports/view/spark/partials/head.ftl @@ -1,4 +1,4 @@ -<#assign resourceCDN=config.getConfig('resourceCDN') cdnURI="cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@" csscommit="74cc0d02f0116d1b5665bd07f6aea22c71033efe" jscommit="b00a2d0486596e73dd7326beacf352c639623a0e" iconcommit="b00a2d0486596e73dd7326beacf352c639623a0e"> +<#assign resourceCDN=config.getConfig('resourceCDN') cdnURI="cdn.jsdelivr.net/gh/extent-framework/extent-github-cdn@" csscommit="7e408aed24af91e1ad76f49a74ecfa0ef1d97cfb" jscommit="ac7abbc71b4bb073da00153a5a3fdbcfe0c95e2a" iconcommit="b00a2d0486596e73dd7326beacf352c639623a0e"> <#if resourceCDN=="extentreports"> <#assign cdnURI="extentreports.com/resx" csscommit="" jscommit="" iconcommit="">