From cba41f07509230e8d07600c86f4b86dcfd51a66b Mon Sep 17 00:00:00 2001 From: anshooarora Date: Mon, 26 Nov 2018 10:35:08 -0500 Subject: [PATCH 01/11] fixes #12 --- .../view/v3html/test-view/v3-html-test-view-charts.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/com/aventstack/extentreports/view/v3html/test-view/v3-html-test-view-charts.ftl b/src/main/resources/com/aventstack/extentreports/view/v3html/test-view/v3-html-test-view-charts.ftl index 197c2b1..882f23c 100644 --- a/src/main/resources/com/aventstack/extentreports/view/v3html/test-view/v3-html-test-view-charts.ftl +++ b/src/main/resources/com/aventstack/extentreports/view/v3html/test-view/v3-html-test-view-charts.ftl @@ -42,7 +42,7 @@
${ grandChildViewChartsHeading }
-
+
From b7ab95a8bb48276e0154fcbab6faf21563966d96 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Wed, 5 Dec 2018 20:52:47 -0500 Subject: [PATCH 02/11] Create .travis.yml --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..3481207 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: java +jdk: + - oraclejdk8 +services: + - mongodb \ No newline at end of file From 533c80861f7941d0e92a1832c1fca19de71b61d8 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Wed, 5 Dec 2018 21:00:18 -0500 Subject: [PATCH 03/11] Update Readme.md --- Readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Readme.md b/Readme.md index 622c9dc..b867ab2 100644 --- a/Readme.md +++ b/Readme.md @@ -2,6 +2,7 @@ [![Join the chat at https://gitter.im/anshooarora/extentreports](https://badges.gitter.im/anshooarora/extentreports.svg)](https://gitter.im/anshooarora/extentreports?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Maven Central](https://img.shields.io/maven-central/v/com.aventstack/extentreports.svg?maxAge=300)](http://search.maven.org/#search|ga|1|g:"com.aventstack") +[![Build Status](https://travis-ci.com/extent-framework/extentreports.svg?branch=master)](https://travis-ci.com/extent-framework/extentreports) This version is Java8 only. From 9afb164945b0d12bb6d0f6bacdb2db820023643c Mon Sep 17 00:00:00 2001 From: anshooarora Date: Wed, 5 Dec 2018 21:09:43 -0500 Subject: [PATCH 04/11] Create stale.yml --- .github/stale.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000..bcfbbea --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,21 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 + +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 + +# Issues with these labels will never be considered stale +exemptLabels: + - Slow Burner +# Label to use when marking an issue as stale + +staleLabel: Stale +# Comment to post when marking an issue as stale. Set to `false` to disable + +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed in a week if no further activity occurs. +# Comment to post when closing a stale issue. Set to `false` to disable + +closeComment: > + This issue has been automatically closed because of inactivity. From 541e11afd335db08cd585526dfa9957b0d48c8d3 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Wed, 5 Dec 2018 21:14:27 -0500 Subject: [PATCH 05/11] Update Readme.md --- Readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Readme.md b/Readme.md index b867ab2..c39b365 100644 --- a/Readme.md +++ b/Readme.md @@ -3,6 +3,7 @@ [![Join the chat at https://gitter.im/anshooarora/extentreports](https://badges.gitter.im/anshooarora/extentreports.svg)](https://gitter.im/anshooarora/extentreports?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Maven Central](https://img.shields.io/maven-central/v/com.aventstack/extentreports.svg?maxAge=300)](http://search.maven.org/#search|ga|1|g:"com.aventstack") [![Build Status](https://travis-ci.com/extent-framework/extentreports.svg?branch=master)](https://travis-ci.com/extent-framework/extentreports) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/dbdc8c04b0f84489a738f064f28a82fa)](https://www.codacy.com/app/anshooarora/extentreports?utm_source=github.com&utm_medium=referral&utm_content=extent-framework/extentreports&utm_campaign=Badge_Grade) This version is Java8 only. From a7f63e0793e871fc03f09444efb7ced8e2b5d3db Mon Sep 17 00:00:00 2001 From: anshooarora Date: Fri, 7 Dec 2018 15:20:36 -0500 Subject: [PATCH 06/11] add codecov, update travis, use jacoco --- .travis.yml | 5 +++- codecov.yml | 4 +++ pom-nexus.xml | 20 +++++++++++++++ pom.xml | 70 +++++++++++++++------------------------------------ 4 files changed, 48 insertions(+), 51 deletions(-) create mode 100644 codecov.yml diff --git a/.travis.yml b/.travis.yml index 3481207..451f169 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,4 +2,7 @@ language: java jdk: - oraclejdk8 services: - - mongodb \ No newline at end of file + - mongodb +after_success: + - bash <(curl -s https://codecov.io/bash) + \ No newline at end of file diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000..c2faf31 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,4 @@ +ignore: + - "src/main/java/com/aventstack/extentreports/reporter/ExtentKlovReporter.java" + - "src/main/java/com/aventstack/extentreports/mediastorage/impl*" + \ No newline at end of file diff --git a/pom-nexus.xml b/pom-nexus.xml index 04667c0..ded61ea 100644 --- a/pom-nexus.xml +++ b/pom-nexus.xml @@ -97,6 +97,7 @@ + src/main/java org.apache.maven.plugins @@ -126,6 +127,25 @@ + + org.jacoco + jacoco-maven-plugin + 0.7.9 + + + + prepare-agent + + + + report + test + + report + + + + diff --git a/pom.xml b/pom.xml index 193d6b9..3092335 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,7 @@ + src/main/java org.apache.maven.plugins @@ -112,59 +113,28 @@ maven-resources-plugin 2.7 + + org.jacoco + jacoco-maven-plugin + 0.7.9 + + + + prepare-agent + + + + report + test + + report + + + + - - - release-sign-artifacts - - - performRelease - true - - - - 7A7DAF8A - - anshooarora - - - - - - - - org.apache.maven.plugins - maven-source-plugin - 2.3 - - - attach-sources - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.3 - - - attach-javadocs - - jar - - - - - - - - - ossrh From 0a42008b44f29212cb4ab0be301cddf583eda3f5 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Fri, 7 Dec 2018 15:59:03 -0500 Subject: [PATCH 07/11] make codacy happy --- .../ExceptionTestContextImpl.java | 4 +- .../extentreports/ExtentObservable.java | 20 +-- .../extentreports/ExtentReports.java | 3 + .../aventstack/extentreports/ExtentTest.java | 30 +++- .../extentreports/MediaEntityBuilder.java | 2 +- .../extentreports/ReportAggregates.java | 126 +++++++++------ .../ReportAggregatesBuilder.java | 14 +- .../extentreports/ReportStatusStats.java | 12 +- .../TestAttributeTestContextProvider.java | 2 +- .../aventstack/extentreports/TestRemover.java | 2 + .../gherkin/GherkinDialectProvider.java | 3 +- .../extentreports/gherkin/model/And.java | 5 +- .../extentreports/gherkin/model/Asterisk.java | 3 +- .../gherkin/model/Background.java | 3 +- .../extentreports/gherkin/model/But.java | 3 +- .../extentreports/gherkin/model/Feature.java | 3 +- .../extentreports/gherkin/model/Given.java | 5 +- .../extentreports/gherkin/model/Scenario.java | 5 +- .../gherkin/model/ScenarioOutline.java | 5 +- .../extentreports/gherkin/model/Then.java | 5 +- .../extentreports/gherkin/model/When.java | 5 +- .../extentreports/markuputils/CodeBlock.java | 7 +- .../extentreports/markuputils/Label.java | 2 + .../extentreports/markuputils/Markup.java | 4 +- .../extentreports/markuputils/Table.java | 2 + .../model/AbstractStructure.java | 9 +- .../model/ExceptionTestContext.java | 2 +- .../extentreports/model/IAddsMedia.java | 19 +++ .../aventstack/extentreports/model/Media.java | 2 +- .../extentreports/model/ScreenCapture.java | 8 +- .../aventstack/extentreports/model/Test.java | 3 +- .../model/TestAttributeTestContext.java | 4 - .../reporter/BasicFileReporter.java | 22 +-- .../reporter/ExtentHtmlReporter.java | 41 +++-- .../reporter/ExtentLoggerReporter.java | 60 ++++--- .../reporter/ReportAppendable.java | 4 +- .../configuration/BasicConfiguration.java | 2 +- .../ExtentHtmlReporterConfiguration.java | 73 +-------- .../ExtentLoggerFormatterConfiguration.java | 64 +------- .../RichViewReporterConfiguration.java | 88 ++++++++++ .../extentreports/utils/DateUtil.java | 9 +- .../extentreports/utils/FileUtil.java | 3 +- .../extentreports/utils/IntUtils.java | 21 +-- .../extentreports/utils/StringUtil.java | 2 +- .../extentreports/viewdefs/Icon.java | 5 +- .../extentreports/viewdefs/MaterialIcon.java | 5 +- .../extentreports/viewdefs/TWBSColor.java | 5 +- .../offline/commons/js/dashboard.js | 7 + .../offline/logger/js/logger-scripts.js | 2 +- .../view/commons/commons-dashboard.ftl | 6 +- .../view/commons/commons-variables.ftl | 2 + .../partials/logger-nav-right-items.ftl | 2 +- .../view/v3html/test-view/v3-html-bdd.ftl | 153 +++++++++--------- .../v3html/test-view/v3-html-test-view.ftl | 19 ++- .../view/v3html/v3-html-head.ftl | 2 +- src/main/resources/logger.properties | 2 +- 56 files changed, 481 insertions(+), 440 deletions(-) create mode 100644 src/main/java/com/aventstack/extentreports/reporter/configuration/RichViewReporterConfiguration.java diff --git a/src/main/java/com/aventstack/extentreports/ExceptionTestContextImpl.java b/src/main/java/com/aventstack/extentreports/ExceptionTestContextImpl.java index 1e479ec..502ca35 100644 --- a/src/main/java/com/aventstack/extentreports/ExceptionTestContextImpl.java +++ b/src/main/java/com/aventstack/extentreports/ExceptionTestContextImpl.java @@ -29,9 +29,7 @@ public void setExceptionContext(ExceptionInfo ei, Test test) { List testList = exOptionalTestContext.get().getTestList(); boolean b = testList.stream() - .filter(t -> t.getID() == test.getID()) - .findFirst() - .isPresent(); + .anyMatch(t -> t.getID() == test.getID()); if (!b) { exOptionalTestContext.get().setTest(test); diff --git a/src/main/java/com/aventstack/extentreports/ExtentObservable.java b/src/main/java/com/aventstack/extentreports/ExtentObservable.java index d38aeb9..255df5f 100644 --- a/src/main/java/com/aventstack/extentreports/ExtentObservable.java +++ b/src/main/java/com/aventstack/extentreports/ExtentObservable.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; -import java.util.HashMap; +import java.util.EnumMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -120,7 +120,7 @@ abstract class ExtentObservable * } * */ - private List testRunnerLogs = new ArrayList<>();; + private List testRunnerLogs = new ArrayList<>(); /** * A list of all tests created @@ -165,7 +165,7 @@ abstract class ExtentObservable /** * Contains status as keys, which are translated over to statusList */ - private Map statusMap = new HashMap<>(); + private Map statusMap = new EnumMap<>(Status.class); protected ExtentObservable() { } @@ -204,17 +204,10 @@ protected List getReporterCollection() { * * @param test a {@link Test} object */ - protected synchronized void saveTest(Test test) { - reporterInitialized(); + protected synchronized void saveTest(Test test) { testList.add(test); reporterList.forEach(x -> x.onTestStarted(test)); } - - private void reporterInitialized() { - /*if (reporterList.isEmpty()) - throw new IllegalStateException("No reporters started"); - */ - } /** * Removes the test and notifies all started reporters @@ -431,8 +424,7 @@ private void endTest(Test test) { *
  • A database being updated (eg. case of KlovReporter)
  • * */ - protected synchronized void flush() { - reporterInitialized(); + protected synchronized void flush() { collectRunInfo(); notifyReporters(); } @@ -482,7 +474,7 @@ private synchronized void collectRunInfo() { * the timestamps assigned to tests */ private void updateReportStartTimeForManualConfigurationSetting() { - if (usesManualConfiguration) { + if (usesManualConfiguration && !testList.isEmpty()) { Date minDate = testList.stream() .map(t -> t.getStartTime()) .min(Date::compareTo) diff --git a/src/main/java/com/aventstack/extentreports/ExtentReports.java b/src/main/java/com/aventstack/extentreports/ExtentReports.java index 8f78baa..18e437c 100644 --- a/src/main/java/com/aventstack/extentreports/ExtentReports.java +++ b/src/main/java/com/aventstack/extentreports/ExtentReports.java @@ -270,6 +270,7 @@ public synchronized void removeTest(ExtentTest test) { *
  • ConsoleLogger: no action taken
  • * */ + @Override public synchronized void flush() { super.flush(); } @@ -358,6 +359,7 @@ public void setReportUsesManualConfiguration(boolean useManualConfig) { * @param strategy {@link AnalysisStrategy} determines the type of analysis (dashboard) * created for the reporter. Not all reporters will support this setting. */ + @Override public void setAnalysisStrategy(AnalysisStrategy strategy) { super.setAnalysisStrategy(strategy); } @@ -393,6 +395,7 @@ public void setGherkinDialect(String language) throws UnsupportedEncodingExcepti * * @return an instance of {@link ReportStatusStats} */ + @Override public ReportStatusStats getStats() { return super.getStats(); } diff --git a/src/main/java/com/aventstack/extentreports/ExtentTest.java b/src/main/java/com/aventstack/extentreports/ExtentTest.java index b918ea9..e412e19 100644 --- a/src/main/java/com/aventstack/extentreports/ExtentTest.java +++ b/src/main/java/com/aventstack/extentreports/ExtentTest.java @@ -49,7 +49,7 @@ public class ExtentTest /** * An instance of {@link ExtentReports} to which this {@link ExtentTest} belongs */ - private ExtentReports extent; + private transient ExtentReports extent; /** * Internal model @@ -1062,6 +1062,9 @@ public ExtentTest debug(Markup m) { * @return {@link ExtentTest} object */ public ExtentTest assignCategory(String... category) { + if (category == null) + return this; + Arrays.stream(category) .filter(StringUtil::isNotNullOrEmpty) .forEach(c -> { @@ -1113,6 +1116,9 @@ public ExtentTest assignDevice(String... device) { @Override public ExtentTest addScreenCaptureFromPath(String imagePath, String title) throws IOException { + if (imagePath == null || imagePath.isEmpty()) + throw new IllegalArgumentException("imagePath cannot be null or empty"); + ScreenCapture screenCapture = new ScreenCapture(); screenCapture.setPath(imagePath); if (title != null) { @@ -1140,6 +1146,28 @@ private ExtentTest addScreenCapture(ScreenCapture screenCapture) { public ExtentTest addScreenCaptureFromPath(String imagePath) throws IOException { return addScreenCaptureFromPath(imagePath, null); } + + @Override + public ExtentTest addScreenCaptureFromBase64String(String s, String title) { + ScreenCapture screenCapture = new ScreenCapture(); + screenCapture.setBase64String(s); + screenCapture.setName(title); + screenCapture.setMediaType(MediaType.IMG); + + if (test.getObjectId() != null) + screenCapture.setTestObjectId(test.getObjectId()); + + try { + extent.addScreenCapture(test, screenCapture); + } catch (IOException e) {} + + return addScreenCapture(screenCapture); + } + + @Override + public ExtentTest addScreenCaptureFromBase64String(String s) { + return addScreenCaptureFromBase64String(s, null); + } @Override public ExtentTest addScreencastFromPath(String screencastPath) throws IOException { diff --git a/src/main/java/com/aventstack/extentreports/MediaEntityBuilder.java b/src/main/java/com/aventstack/extentreports/MediaEntityBuilder.java index 0f73e6d..7c11ca6 100644 --- a/src/main/java/com/aventstack/extentreports/MediaEntityBuilder.java +++ b/src/main/java/com/aventstack/extentreports/MediaEntityBuilder.java @@ -12,7 +12,7 @@ */ public class MediaEntityBuilder { - private static ThreadLocal media = new ThreadLocal(); + private static ThreadLocal media = new ThreadLocal<>(); private static class MediaBuilderInstance { static final MediaEntityBuilder INSTANCE = new MediaEntityBuilder(); diff --git a/src/main/java/com/aventstack/extentreports/ReportAggregates.java b/src/main/java/com/aventstack/extentreports/ReportAggregates.java index 601b07f..94b9219 100644 --- a/src/main/java/com/aventstack/extentreports/ReportAggregates.java +++ b/src/main/java/com/aventstack/extentreports/ReportAggregates.java @@ -1,6 +1,5 @@ package com.aventstack.extentreports; -import java.util.ArrayList; import java.util.List; import com.aventstack.extentreports.model.Author; @@ -15,7 +14,7 @@ public class ReportAggregates { private List testList; - private List testRunnerLogs; + private List testRunnerLogs; private TestAttributeTestContextProvider categoryContext; private TestAttributeTestContextProvider authorContext; private TestAttributeTestContextProvider deviceContext; @@ -24,59 +23,80 @@ public class ReportAggregates { private ReportStatusStats reportStatusStats; private List statusList; - public ReportAggregates(List testList, List testRunnerLogs, - TestAttributeTestContextProvider categoryContext, TestAttributeTestContextProvider authorContext, - TestAttributeTestContextProvider deviceContext, ExceptionTestContextImpl exceptionContext, - SystemAttributeContext systemAttributeContext, ReportStatusStats reportStatusStats, List statusList) { - this.testList = new ArrayList<>(testList); - this.testRunnerLogs = testRunnerLogs; - this.categoryContext = categoryContext; - this.authorContext = authorContext; - this.deviceContext = deviceContext; - this.exceptionContext = exceptionContext; - this.systemAttributeContext = systemAttributeContext; - this.reportStatusStats = reportStatusStats; - this.statusList = new ArrayList<>(statusList); - } - - public List getTestList() { - return testList; - } - - public List getTestRunnerLogs() { - return testRunnerLogs; - } - - public TestAttributeTestContextProvider getCategoryContext() { - return categoryContext; - } - - public TestAttributeTestContextProvider getAuthorContext() { - return authorContext; - } - - public TestAttributeTestContextProvider getDeviceContext() { - return deviceContext; - } - - public ExceptionTestContextImpl getExceptionContext() { - return exceptionContext; - } - - public SystemAttributeContext getSystemAttributeContext() { - return systemAttributeContext; - } - - public ReportStatusStats getReportStatusStats() { - return reportStatusStats; - } - - public List getStatusList() { - return statusList; - } - public Status getStatus() { return Status.getHighestStatus(getStatusList()); } + public List getTestList() { + return testList; + } + + public void setTestList(List testList) { + this.testList = testList; + } + + public List getTestRunnerLogs() { + return testRunnerLogs; + } + + public void setTestRunnerLogs(List testRunnerLogs) { + this.testRunnerLogs = testRunnerLogs; + } + + public TestAttributeTestContextProvider getCategoryContext() { + return categoryContext; + } + + public void setCategoryContext(TestAttributeTestContextProvider categoryContext) { + this.categoryContext = categoryContext; + } + + public TestAttributeTestContextProvider getAuthorContext() { + return authorContext; + } + + public void setAuthorContext(TestAttributeTestContextProvider authorContext) { + this.authorContext = authorContext; + } + + public TestAttributeTestContextProvider getDeviceContext() { + return deviceContext; + } + + public void setDeviceContext(TestAttributeTestContextProvider deviceContext) { + this.deviceContext = deviceContext; + } + + public ExceptionTestContextImpl getExceptionContext() { + return exceptionContext; + } + + public void setExceptionContext(ExceptionTestContextImpl exceptionContext) { + this.exceptionContext = exceptionContext; + } + + public SystemAttributeContext getSystemAttributeContext() { + return systemAttributeContext; + } + + public void setSystemAttributeContext(SystemAttributeContext systemAttributeContext) { + this.systemAttributeContext = systemAttributeContext; + } + + public ReportStatusStats getReportStatusStats() { + return reportStatusStats; + } + + public void setReportStatusStats(ReportStatusStats reportStatusStats) { + this.reportStatusStats = reportStatusStats; + } + + public List getStatusList() { + return statusList; + } + + public void setStatusList(List statusList) { + this.statusList = statusList; + } + } diff --git a/src/main/java/com/aventstack/extentreports/ReportAggregatesBuilder.java b/src/main/java/com/aventstack/extentreports/ReportAggregatesBuilder.java index 6edfcc2..4b9ae78 100644 --- a/src/main/java/com/aventstack/extentreports/ReportAggregatesBuilder.java +++ b/src/main/java/com/aventstack/extentreports/ReportAggregatesBuilder.java @@ -24,9 +24,17 @@ public class ReportAggregatesBuilder { private List statusList; public ReportAggregates build() { - return new ReportAggregates(testList, testRunnerLogs, categoryContext, - authorContext, deviceContext, exceptionContext, systemAttributeContext, - reportStatusStats, statusList); + ReportAggregates aggregates = new ReportAggregates(); + aggregates.setTestList(testList); + aggregates.setTestRunnerLogs(testRunnerLogs); + aggregates.setCategoryContext(categoryContext); + aggregates.setAuthorContext(authorContext); + aggregates.setDeviceContext(deviceContext); + aggregates.setExceptionContext(exceptionContext); + aggregates.setSystemAttributeContext(systemAttributeContext); + aggregates.setReportStatusStats(reportStatusStats); + aggregates.setStatusList(statusList); + return aggregates; } public ReportAggregatesBuilder setTestList(List testList) { diff --git a/src/main/java/com/aventstack/extentreports/ReportStatusStats.java b/src/main/java/com/aventstack/extentreports/ReportStatusStats.java index 4703460..5236617 100644 --- a/src/main/java/com/aventstack/extentreports/ReportStatusStats.java +++ b/src/main/java/com/aventstack/extentreports/ReportStatusStats.java @@ -107,7 +107,7 @@ public float getParentPercentageFail() { return p*100; } public float getParentPercentageOthers() { - float p = getParentCount() > 0 ? ((float)getParentCountWarning()+(float)getParentCountError()+(float)getParentCountSkip())/(float)getParentCount() : 0; + float p = getParentCount() > 0 ? ((float)getParentCountWarning()+(float)getParentCountError())/(float)getParentCount() : 0; return p*100; } public float getParentPercentageSkip() { @@ -217,11 +217,8 @@ private void updateGroupCountsSuiteStrategy(Test test) { test.getNodeContext().getAll().forEach(x -> { incrementItemCountByStatus(ItemLevel.CHILD, x.getStatus()); - if (x.hasChildren()) { - x.getNodeContext().getAll().forEach(n -> { - incrementItemCountByStatus(ItemLevel.GRANDCHILD, n.getStatus()); - }); - } + if (x.hasChildren()) + x.getNodeContext().getAll().forEach(n -> incrementItemCountByStatus(ItemLevel.GRANDCHILD, n.getStatus())); }); } } @@ -241,8 +238,9 @@ private void updateGroupCountsBDD(Test test) { n.getNodeContext().getAll().forEach(z -> incrementItemCountByStatus(ItemLevel.GRANDCHILD, z.getStatus())); } - else + else { incrementItemCountByStatus(ItemLevel.GRANDCHILD, n.getStatus()); + } }); } }); diff --git a/src/main/java/com/aventstack/extentreports/TestAttributeTestContextProvider.java b/src/main/java/com/aventstack/extentreports/TestAttributeTestContextProvider.java index b32f4af..d24b48a 100644 --- a/src/main/java/com/aventstack/extentreports/TestAttributeTestContextProvider.java +++ b/src/main/java/com/aventstack/extentreports/TestAttributeTestContextProvider.java @@ -42,7 +42,7 @@ public void setAttributeContext(T attr, Test test) { testOptionalTestContext.get().refreshTestStatusCounts(); } else { - TestAttributeTestContext testAttrContext = new TestAttributeTestContext(attr); + TestAttributeTestContext testAttrContext = new TestAttributeTestContext<>(attr); testAttrContext.setTest(test); testAttrCollection.add(testAttrContext); } diff --git a/src/main/java/com/aventstack/extentreports/TestRemover.java b/src/main/java/com/aventstack/extentreports/TestRemover.java index 94f41c3..e442fd2 100644 --- a/src/main/java/com/aventstack/extentreports/TestRemover.java +++ b/src/main/java/com/aventstack/extentreports/TestRemover.java @@ -13,6 +13,8 @@ class TestRemover { */ private static boolean removed = false; + private TestRemover() { } + /** * Remove a test using its unique ID from a list * diff --git a/src/main/java/com/aventstack/extentreports/gherkin/GherkinDialectProvider.java b/src/main/java/com/aventstack/extentreports/gherkin/GherkinDialectProvider.java index 205d8c2..32c815b 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/GherkinDialectProvider.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/GherkinDialectProvider.java @@ -25,7 +25,6 @@ public class GherkinDialectProvider { private static GherkinDialect currentDialect; private static Map>> dialects; - private static Map> map; private static String language; static { @@ -64,7 +63,7 @@ public static String getLanguage() { */ public static void setLanguage(String lang) throws UnsupportedEncodingException { language = lang; - map = dialects.get(GherkinDialectProvider.language); + Map> map = dialects.get(GherkinDialectProvider.language); if (map == null) throw new UnsupportedEncodingException("Invalid language [" + language + "]. See list of supported languages: " + GHERKIN_LANGUAGES_JSON_URL); diff --git a/src/main/java/com/aventstack/extentreports/gherkin/model/And.java b/src/main/java/com/aventstack/extentreports/gherkin/model/And.java index 33ca122..fdf6983 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/model/And.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/model/And.java @@ -6,9 +6,10 @@ public class And implements IGherkinFormatterModel, Serializable { private static final long serialVersionUID = 8543289653944756660L; - + private static final String VALUE = "And"; + public static String getGherkinName() { - return "And"; + return VALUE; } @Override diff --git a/src/main/java/com/aventstack/extentreports/gherkin/model/Asterisk.java b/src/main/java/com/aventstack/extentreports/gherkin/model/Asterisk.java index fc55d28..05fe3af 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/model/Asterisk.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/model/Asterisk.java @@ -6,9 +6,10 @@ public class Asterisk implements IGherkinFormatterModel, Serializable { private static final long serialVersionUID = 7251419811428200133L; + private static final String VALUE = "*"; public static String getGherkinName() { - return "*"; + return VALUE; } @Override diff --git a/src/main/java/com/aventstack/extentreports/gherkin/model/Background.java b/src/main/java/com/aventstack/extentreports/gherkin/model/Background.java index 7157963..e646aaa 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/model/Background.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/model/Background.java @@ -6,9 +6,10 @@ public class Background implements IGherkinFormatterModel, Serializable { private static final long serialVersionUID = -955371501488725151L; + private static final String VALUE = "Background"; public static String getGherkinName() { - return "Background"; + return VALUE; } @Override diff --git a/src/main/java/com/aventstack/extentreports/gherkin/model/But.java b/src/main/java/com/aventstack/extentreports/gherkin/model/But.java index e0e1a3a..c7f66b6 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/model/But.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/model/But.java @@ -6,9 +6,10 @@ public class But implements IGherkinFormatterModel, Serializable { private static final long serialVersionUID = 3420514631996827220L; + private static final String VALUE = "But"; public static String getGherkinName() { - return "But"; + return VALUE; } @Override diff --git a/src/main/java/com/aventstack/extentreports/gherkin/model/Feature.java b/src/main/java/com/aventstack/extentreports/gherkin/model/Feature.java index d480ec1..4d55c8b 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/model/Feature.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/model/Feature.java @@ -6,9 +6,10 @@ public class Feature implements IGherkinFormatterModel, Serializable { private static final long serialVersionUID = -4719215211721789414L; + private static final String VALUE = "Feature"; public static String getGherkinName() { - return "Feature"; + return VALUE; } @Override diff --git a/src/main/java/com/aventstack/extentreports/gherkin/model/Given.java b/src/main/java/com/aventstack/extentreports/gherkin/model/Given.java index 64932fc..5ac6eca 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/model/Given.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/model/Given.java @@ -6,9 +6,10 @@ public class Given implements IGherkinFormatterModel, Serializable { private static final long serialVersionUID = 939197985263690070L; - + private static final String VALUE = "Given"; + public static String getGherkinName() { - return "Given"; + return VALUE; } @Override diff --git a/src/main/java/com/aventstack/extentreports/gherkin/model/Scenario.java b/src/main/java/com/aventstack/extentreports/gherkin/model/Scenario.java index 1baacc2..8f85f55 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/model/Scenario.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/model/Scenario.java @@ -6,9 +6,10 @@ public class Scenario implements IGherkinFormatterModel, Serializable { private static final long serialVersionUID = 7401124129196617280L; - + private static final String VALUE = "Scenario"; + public static String getGherkinName() { - return "Scenario"; + return VALUE; } @Override diff --git a/src/main/java/com/aventstack/extentreports/gherkin/model/ScenarioOutline.java b/src/main/java/com/aventstack/extentreports/gherkin/model/ScenarioOutline.java index 8089862..481c890 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/model/ScenarioOutline.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/model/ScenarioOutline.java @@ -6,9 +6,10 @@ public class ScenarioOutline implements IGherkinFormatterModel, Serializable { private static final long serialVersionUID = -2058398543903906031L; - + private static final String VALUE = "Scenario Outline"; + public static String getGherkinName() { - return "Scenario Outline"; + return VALUE; } @Override diff --git a/src/main/java/com/aventstack/extentreports/gherkin/model/Then.java b/src/main/java/com/aventstack/extentreports/gherkin/model/Then.java index 3caa778..427a738 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/model/Then.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/model/Then.java @@ -6,9 +6,10 @@ public class Then implements IGherkinFormatterModel, Serializable { private static final long serialVersionUID = 2493591502473169772L; - + private static final String VALUE = "Then"; + public static String getGherkinName() { - return "Then"; + return VALUE; } @Override diff --git a/src/main/java/com/aventstack/extentreports/gherkin/model/When.java b/src/main/java/com/aventstack/extentreports/gherkin/model/When.java index 4cde5f2..5da0d15 100644 --- a/src/main/java/com/aventstack/extentreports/gherkin/model/When.java +++ b/src/main/java/com/aventstack/extentreports/gherkin/model/When.java @@ -6,9 +6,10 @@ public class When implements IGherkinFormatterModel, Serializable { private static final long serialVersionUID = 8337259741948416898L; - + private static final String VALUE = "When"; + public static String getGherkinName() { - return "When"; + return VALUE; } @Override diff --git a/src/main/java/com/aventstack/extentreports/markuputils/CodeBlock.java b/src/main/java/com/aventstack/extentreports/markuputils/CodeBlock.java index 25051c5..ea8a18a 100644 --- a/src/main/java/com/aventstack/extentreports/markuputils/CodeBlock.java +++ b/src/main/java/com/aventstack/extentreports/markuputils/CodeBlock.java @@ -3,7 +3,9 @@ import java.util.concurrent.atomic.AtomicInteger; class CodeBlock implements Markup { - + + private static final long serialVersionUID = -5532095355983830164L; + private static final AtomicInteger id = new AtomicInteger(0); private String code; @@ -25,12 +27,11 @@ public void setCodeBlock(String code, CodeLanguage lang) { public String getMarkup() { if (lang == CodeLanguage.JSON) { int index = id.getAndIncrement(); - String markup = "
    " + + return "
    " + ""; - return markup; } String lhs = " - <#else> -
    ${log.details}
    - - <#if log.hasScreenCapture()>${log.screenCaptureContext.last.source} - - <#if child.hasChildren()> -
      - <#list child.nodeContext.all as gc> -
    • -
      ${MaterialIcon.getIcon(gc.status)}${gc.name}
      - <#if gc.screenCaptureList?? && gc.screenCaptureList?size != 0> -
        - <#list gc.screenCaptureList as sc> -
      • panorama
      • - -
      - - <#if gc.description?? && gc.description?has_content> - ${gc.description} - - <#list gc.logContext.all as log> - <#if log.exceptionInfo??> - <#else>
      ${log.details}
      - <#if log.hasScreenCapture()>${log.screenCaptureContext.last.source} - -
    • - -
    - - - - - + <#if node.hasCategory()> +
    + <#list node.categoryContext.all as category> + ${category.name} + +
    + + ${node.runDuration} +
    +
    ${MaterialIcon.getIcon(node.status)} ${node.getBehaviorDrivenType().getSimpleName()}: ${node.name}
    + <#if node.screenCaptureList?? && node.screenCaptureList?size != 0> +
      + <#list node.screenCaptureList as sc> +
    • panorama
    • + +
    + + <#if node.description?? && node.description?has_content> + ${node.description} + +
    + <#if node.hasChildren()> +
      + <#list node.nodeContext.all as child> +
    • +
      ${MaterialIcon.getIcon(child.status)}${child.name}
      + <#if child.screenCaptureList?? && child.screenCaptureList?size != 0> +
        + <#list child.screenCaptureList as sc> +
      • panorama
      • + +
      + + <#if child.description?? && child.description?has_content> + ${child.description} + + <#list child.logContext.all as log> + <#if log.exceptionInfo??> + + <#else> +
      ${log.details}
      + + + <#if child.hasChildren()> +
        + <#list child.nodeContext.all as gc> +
      • +
        ${MaterialIcon.getIcon(gc.status)}${gc.name}
        + <#if gc.screenCaptureList?? && gc.screenCaptureList?size != 0> +
          + <#list gc.screenCaptureList as sc> +
        • panorama
        • + +
        + + <#if gc.description?? && gc.description?has_content> + ${gc.description} + + <#list gc.logContext.all as log> + <#if log.exceptionInfo??> + <#else>
        ${log.details}
        + + +
      • + +
      + +
    • + +
    +
    \ No newline at end of file diff --git a/src/main/resources/com/aventstack/extentreports/view/v3html/test-view/v3-html-test-view.ftl b/src/main/resources/com/aventstack/extentreports/view/v3html/test-view/v3-html-test-view.ftl index 9cf7565..1244956 100644 --- a/src/main/resources/com/aventstack/extentreports/view/v3html/test-view/v3-html-test-view.ftl +++ b/src/main/resources/com/aventstack/extentreports/view/v3html/test-view/v3-html-test-view.ftl @@ -113,17 +113,16 @@
    -
    -
    - info_outline - check_circle - cancel - cancel - error - warning - redo - clear + +
    diff --git a/src/main/resources/com/aventstack/extentreports/view/v3html/v3-html-head.ftl b/src/main/resources/com/aventstack/extentreports/view/v3html/v3-html-head.ftl index d9855df..487b2c4 100644 --- a/src/main/resources/com/aventstack/extentreports/view/v3html/v3-html-head.ftl +++ b/src/main/resources/com/aventstack/extentreports/view/v3html/v3-html-head.ftl @@ -10,7 +10,7 @@ - + ${ config.getValue('documentTitle') } diff --git a/src/main/resources/logger.properties b/src/main/resources/logger.properties index 4b447b7..fbedad5 100644 --- a/src/main/resources/logger.properties +++ b/src/main/resources/logger.properties @@ -1,6 +1,6 @@ encoding=utf-8 protocol=https -theme= +theme=standard documentTitle=ExtentReports reportName=ExtentReports timeStampFormat=MMM d, yyyy hh:mm:ss a From 05c459e53aaf9e2265289823fe49612e4cafd380 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Fri, 7 Dec 2018 16:00:05 -0500 Subject: [PATCH 08/11] add tests --- .../extentreports/api/BddAttributesTest.java | 88 +++++- .../api/BddWithStepStatusHierarchyTest.java | 20 +- .../api/GherkinDialectTests.java | 34 ++ .../extentreports/api/GherkinNameTest.java | 130 ++++++++ .../api/MediaEntityBuilderTest.java | 35 +++ .../api/NodeWithoutLogsTest.java | 25 ++ .../listenertests/ListenerTest.java | 6 +- .../ListenerTestsIReporterTest.java | 6 +- .../ListenerTestsITestListenerTest.java | 6 +- .../mediastorage/LocalMediaStorageTest.java | 52 +++ .../extentreports/model/BddLevelsTest.java | 135 ++++++++ .../extentreports/model/LogModelTest.java | 58 ++++ .../extentreports/model/MarkupHelperTest.java | 91 ++++++ .../extentreports/model/TestIdsTest.java | 29 ++ .../extentreports/model/TestMediaTest.java | 58 ++++ .../extentreports/model/TestModelTest.java | 296 ++++++++++++++++++ ...tmlBasicFileReporterConfigurationTest.java | 110 +++++++ .../HtmlConfigurableReporterTest.java | 65 ++++ ...HtmlRichViewReporterConfigurationTest.java | 75 +++++ ...erBasicFileReporterConfigurationTest2.java | 110 +++++++ .../LoggerConfigurableReporterTest.java | 65 ++++ ...ggerRichViewReporterConfigurationTest.java | 75 +++++ .../reporter/OfficeReportTest.java | 46 +++ .../viewdefs/ViewDefsIconOverrideTest.java | 18 ++ .../viewdefs/ViewDefsIconTest.java | 52 +++ .../ViewDefsTWBSColorOverrideTest.java | 18 ++ .../viewdefs/ViewDefsTWBSColorTest.java | 92 ++++++ src/test/resources/1.png | Bin 3040 -> 1713 bytes src/test/resources/html-config.xml | 49 +++ src/test/resources/logger-config.xml | 49 +++ src/test/resources/logo.png | Bin 0 -> 1713 bytes 31 files changed, 1871 insertions(+), 22 deletions(-) create mode 100644 src/test/java/com/aventstack/extentreports/api/GherkinDialectTests.java create mode 100644 src/test/java/com/aventstack/extentreports/api/GherkinNameTest.java create mode 100644 src/test/java/com/aventstack/extentreports/api/MediaEntityBuilderTest.java create mode 100644 src/test/java/com/aventstack/extentreports/api/NodeWithoutLogsTest.java create mode 100644 src/test/java/com/aventstack/extentreports/mediastorage/LocalMediaStorageTest.java create mode 100644 src/test/java/com/aventstack/extentreports/model/BddLevelsTest.java create mode 100644 src/test/java/com/aventstack/extentreports/model/LogModelTest.java create mode 100644 src/test/java/com/aventstack/extentreports/model/MarkupHelperTest.java create mode 100644 src/test/java/com/aventstack/extentreports/model/TestIdsTest.java create mode 100644 src/test/java/com/aventstack/extentreports/model/TestMediaTest.java create mode 100644 src/test/java/com/aventstack/extentreports/model/TestModelTest.java create mode 100644 src/test/java/com/aventstack/extentreports/reporter/HtmlBasicFileReporterConfigurationTest.java create mode 100644 src/test/java/com/aventstack/extentreports/reporter/HtmlConfigurableReporterTest.java create mode 100644 src/test/java/com/aventstack/extentreports/reporter/HtmlRichViewReporterConfigurationTest.java create mode 100644 src/test/java/com/aventstack/extentreports/reporter/LoggerBasicFileReporterConfigurationTest2.java create mode 100644 src/test/java/com/aventstack/extentreports/reporter/LoggerConfigurableReporterTest.java create mode 100644 src/test/java/com/aventstack/extentreports/reporter/LoggerRichViewReporterConfigurationTest.java create mode 100644 src/test/java/com/aventstack/extentreports/reporter/OfficeReportTest.java create mode 100644 src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsIconOverrideTest.java create mode 100644 src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsIconTest.java create mode 100644 src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsTWBSColorOverrideTest.java create mode 100644 src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsTWBSColorTest.java create mode 100644 src/test/resources/html-config.xml create mode 100644 src/test/resources/logger-config.xml create mode 100644 src/test/resources/logo.png diff --git a/src/test/java/com/aventstack/extentreports/api/BddAttributesTest.java b/src/test/java/com/aventstack/extentreports/api/BddAttributesTest.java index 382370b..2240cd7 100644 --- a/src/test/java/com/aventstack/extentreports/api/BddAttributesTest.java +++ b/src/test/java/com/aventstack/extentreports/api/BddAttributesTest.java @@ -7,29 +7,103 @@ import com.aventstack.extentreports.Base; import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.gherkin.model.And; +import com.aventstack.extentreports.gherkin.model.Asterisk; +import com.aventstack.extentreports.gherkin.model.Background; +import com.aventstack.extentreports.gherkin.model.But; import com.aventstack.extentreports.gherkin.model.Feature; +import com.aventstack.extentreports.gherkin.model.Given; import com.aventstack.extentreports.gherkin.model.Scenario; +import com.aventstack.extentreports.gherkin.model.ScenarioOutline; +import com.aventstack.extentreports.gherkin.model.Then; +import com.aventstack.extentreports.gherkin.model.When; public class BddAttributesTest extends Base { @Test - public void initialTestIsOfBddType(Method method) { + public void featureIsOfBddType(Method method) { ExtentTest feature = extent.createTest(Feature.class, method.getName()); - Assert.assertTrue(feature.getModel().isBehaviorDrivenType()); Assert.assertEquals(feature.getModel().getBehaviorDrivenType(), Feature.class); } @Test - public void testIsOfBddTypeWithBddChild(Method method) { + public void scenarioIsOfBddTypeWithBddChild(Method method) { ExtentTest feature = extent.createTest(Feature.class, method.getName()); ExtentTest scenario = feature.createNode(Scenario.class, "Scenario"); - - Assert.assertTrue(feature.getModel().isBehaviorDrivenType()); - Assert.assertEquals(feature.getModel().getBehaviorDrivenType(), Feature.class); - Assert.assertTrue(scenario.getModel().isBehaviorDrivenType()); Assert.assertEquals(scenario.getModel().getBehaviorDrivenType(), Scenario.class); } + @Test + public void scenarioOutlineIsOfBddTypeWithBddChild(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenarioOutline = feature.createNode(ScenarioOutline.class, "ScenarioOutline"); + Assert.assertTrue(scenarioOutline.getModel().isBehaviorDrivenType()); + Assert.assertEquals(scenarioOutline.getModel().getBehaviorDrivenType(), ScenarioOutline.class); + } + + @Test + public void andIsOfBddTypeWithBddChild(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Scenario"); + ExtentTest and = scenario.createNode(And.class, "And"); + Assert.assertTrue(and.getModel().isBehaviorDrivenType()); + Assert.assertEquals(and.getModel().getBehaviorDrivenType(), And.class); + } + + @Test + public void asteriskIsOfBddTypeWithBddChild(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Scenario"); + ExtentTest asterisk = scenario.createNode(Asterisk.class, "Asterisk"); + Assert.assertTrue(asterisk.getModel().isBehaviorDrivenType()); + Assert.assertEquals(asterisk.getModel().getBehaviorDrivenType(), Asterisk.class); + } + + @Test + public void backgroundIsOfBddTypeWithBddChild(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Scenario"); + ExtentTest background = scenario.createNode(Background.class, "Background"); + Assert.assertTrue(background.getModel().isBehaviorDrivenType()); + Assert.assertEquals(background.getModel().getBehaviorDrivenType(), Background.class); + } + + @Test + public void butIsOfBddTypeWithBddChild(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Scenario"); + ExtentTest but = scenario.createNode(But.class, "But"); + Assert.assertTrue(but.getModel().isBehaviorDrivenType()); + Assert.assertEquals(but.getModel().getBehaviorDrivenType(), But.class); + } + + @Test + public void givenIsOfBddTypeWithBddChild(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Scenario"); + ExtentTest given = scenario.createNode(Given.class, "Given"); + Assert.assertTrue(given.getModel().isBehaviorDrivenType()); + Assert.assertEquals(given.getModel().getBehaviorDrivenType(), Given.class); + } + + @Test + public void thenIsOfBddTypeWithBddChild(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Scenario"); + ExtentTest then = scenario.createNode(Then.class, "Then"); + Assert.assertTrue(then.getModel().isBehaviorDrivenType()); + Assert.assertEquals(then.getModel().getBehaviorDrivenType(), Then.class); + } + + @Test + public void whenIsOfBddTypeWithBddChild(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Scenario"); + ExtentTest when = scenario.createNode(When.class, "When"); + Assert.assertTrue(when.getModel().isBehaviorDrivenType()); + Assert.assertEquals(when.getModel().getBehaviorDrivenType(), When.class); + } + } diff --git a/src/test/java/com/aventstack/extentreports/api/BddWithStepStatusHierarchyTest.java b/src/test/java/com/aventstack/extentreports/api/BddWithStepStatusHierarchyTest.java index 152559b..d42c327 100644 --- a/src/test/java/com/aventstack/extentreports/api/BddWithStepStatusHierarchyTest.java +++ b/src/test/java/com/aventstack/extentreports/api/BddWithStepStatusHierarchyTest.java @@ -1,23 +1,31 @@ package com.aventstack.extentreports.api; +import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; -import com.aventstack.extentreports.gherkin.model.And; -import com.aventstack.extentreports.gherkin.model.But; -import com.aventstack.extentreports.gherkin.model.Given; -import com.aventstack.extentreports.gherkin.model.Scenario; -import com.aventstack.extentreports.gherkin.model.Then; -import com.aventstack.extentreports.gherkin.model.When; import org.testng.Assert; +import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import com.aventstack.extentreports.Base; import com.aventstack.extentreports.ExtentTest; import com.aventstack.extentreports.GherkinKeyword; import com.aventstack.extentreports.Status; +import com.aventstack.extentreports.gherkin.GherkinDialectProvider; +import com.aventstack.extentreports.gherkin.model.And; +import com.aventstack.extentreports.gherkin.model.But; +import com.aventstack.extentreports.gherkin.model.Given; +import com.aventstack.extentreports.gherkin.model.Scenario; +import com.aventstack.extentreports.gherkin.model.Then; +import com.aventstack.extentreports.gherkin.model.When; public class BddWithStepStatusHierarchyTest extends Base { + @BeforeClass + public void beforeClass() throws UnsupportedEncodingException { + GherkinDialectProvider.setLanguage("en"); + } + @Test(expectedExceptions = ClassNotFoundException.class) public void throwClassNotFoundExceptionWithInvalidKeyword(Method method) throws ClassNotFoundException { ExtentTest feature = extent.createTest(method.getName()); diff --git a/src/test/java/com/aventstack/extentreports/api/GherkinDialectTests.java b/src/test/java/com/aventstack/extentreports/api/GherkinDialectTests.java new file mode 100644 index 0000000..3c2b7f4 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/api/GherkinDialectTests.java @@ -0,0 +1,34 @@ +package com.aventstack.extentreports.api; + +import java.io.UnsupportedEncodingException; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.gherkin.GherkinDialectProvider; + +public class GherkinDialectTests { + + private static final String DEFAULT_LANGUAGE = "en"; + + @Test + public void defaultDialectTest() { + Assert.assertTrue(GherkinDialectProvider.getDefaultLanguage().equals(DEFAULT_LANGUAGE)); + } + + @Test + public void defaultLanguageTest() { + Assert.assertTrue(GherkinDialectProvider.getLanguage().equals(DEFAULT_LANGUAGE)); + } + + @Test(expectedExceptions=UnsupportedEncodingException.class) + public void invalidLanguageTest() throws UnsupportedEncodingException { + GherkinDialectProvider.setLanguage("invalid"); + } + + @Test + public void testLanguageSettingTest() throws UnsupportedEncodingException { + GherkinDialectProvider.setLanguage("de"); + Assert.assertTrue(GherkinDialectProvider.getLanguage().equals("de")); + } +} diff --git a/src/test/java/com/aventstack/extentreports/api/GherkinNameTest.java b/src/test/java/com/aventstack/extentreports/api/GherkinNameTest.java new file mode 100644 index 0000000..2ab6317 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/api/GherkinNameTest.java @@ -0,0 +1,130 @@ +package com.aventstack.extentreports.api; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.gherkin.model.And; +import com.aventstack.extentreports.gherkin.model.Asterisk; +import com.aventstack.extentreports.gherkin.model.Background; +import com.aventstack.extentreports.gherkin.model.But; +import com.aventstack.extentreports.gherkin.model.Feature; +import com.aventstack.extentreports.gherkin.model.Given; +import com.aventstack.extentreports.gherkin.model.Scenario; +import com.aventstack.extentreports.gherkin.model.ScenarioOutline; +import com.aventstack.extentreports.gherkin.model.Then; +import com.aventstack.extentreports.gherkin.model.When; + +public class GherkinNameTest { + + private static final String AND = "And"; + private static final String ASTERISK = "*"; + private static final String BACKGROUND = "Background"; + private static final String BUT = "But"; + private static final String FEATURE = "Feature"; + private static final String GIVEN = "Given"; + private static final String SCENARIO = "Scenario"; + private static final String SCENARIO_OUTLINE = "Scenario Outline"; + private static final String THEN = "Then"; + private static final String WHEN = "When"; + + @Test + public void testAndGherkinName() { + Assert.assertTrue(And.getGherkinName().equals(AND)); + } + + @Test + public void testAndToString() { + Assert.assertTrue(new And().toString().equals(AND)); + } + + @Test + public void testAsteriskGherkinName() { + Assert.assertTrue(Asterisk.getGherkinName().equals(ASTERISK)); + } + + @Test + public void testAsteriskToString() { + Assert.assertTrue(new Asterisk().toString().equals(ASTERISK)); + } + + @Test + public void testBackgroundGherkinName() { + Assert.assertTrue(Background.getGherkinName().equals(BACKGROUND)); + } + + @Test + public void testBackgroundToString() { + Assert.assertTrue(new Background().toString().equals(BACKGROUND)); + } + + @Test + public void testButGherkinName() { + Assert.assertTrue(But.getGherkinName().equals(BUT)); + } + + @Test + public void testButToString() { + Assert.assertTrue(new But().toString().equals(BUT)); + } + + @Test + public void testFeatureGherkinName() { + Assert.assertTrue(Feature.getGherkinName().equals(FEATURE)); + } + + @Test + public void testFeatureToString() { + Assert.assertTrue(new Feature().toString().equals(FEATURE)); + } + + @Test + public void testGivenGherkinName() { + Assert.assertTrue(Given.getGherkinName().equals(GIVEN)); + } + + @Test + public void testGivenToString() { + Assert.assertTrue(new Given().toString().equals(GIVEN)); + } + + @Test + public void testScenarioGherkinName() { + Assert.assertTrue(Scenario.getGherkinName().equals(SCENARIO)); + } + + @Test + public void testScenarioToString() { + Assert.assertTrue(new Scenario().toString().equals(SCENARIO)); + } + + @Test + public void testScenarioOutlineGherkinName() { + Assert.assertTrue(ScenarioOutline.getGherkinName().equals(SCENARIO_OUTLINE)); + } + + @Test + public void testScenarioOutlineToString() { + Assert.assertTrue(new ScenarioOutline().toString().equals(SCENARIO_OUTLINE)); + } + + @Test + public void testThenGherkinName() { + Assert.assertTrue(Then.getGherkinName().equals(THEN)); + } + + @Test + public void testThenToString() { + Assert.assertTrue(new Then().toString().equals(THEN)); + } + + @Test + public void testWhenGherkinName() { + Assert.assertTrue(When.getGherkinName().equals(WHEN)); + } + + @Test + public void testWhenToString() { + Assert.assertTrue(new When().toString().equals(WHEN)); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/api/MediaEntityBuilderTest.java b/src/test/java/com/aventstack/extentreports/api/MediaEntityBuilderTest.java new file mode 100644 index 0000000..dc6ddec --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/api/MediaEntityBuilderTest.java @@ -0,0 +1,35 @@ +package com.aventstack.extentreports.api; + +import java.io.IOException; +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.MediaEntityBuilder; + +public class MediaEntityBuilderTest extends Base { + + private static final String IMG_PATH = "src/test/resources/logo.png"; + + @Test + public void testLogMediaEntity(Method method) throws IOException { + ExtentTest t = extent.createTest(method.getName()).pass("details", MediaEntityBuilder.createScreenCaptureFromPath(IMG_PATH).build()); + Assert.assertTrue(t.getModel().getLogContext().getFirst().hasScreenCapture()); + } + + @Test + public void testLogMediaEntityWithTitle(Method method) throws IOException { + ExtentTest t = extent.createTest(method.getName()).pass("details", MediaEntityBuilder.createScreenCaptureFromPath(IMG_PATH, "title").build()); + Assert.assertTrue(t.getModel().getLogContext().getFirst().hasScreenCapture()); + } + + @Test + public void testLogMediaEntityBase64(Method method) throws IOException { + ExtentTest t = extent.createTest(method.getName()).pass("details", MediaEntityBuilder.createScreenCaptureFromBase64String("base64").build()); + Assert.assertTrue(t.getModel().getLogContext().getFirst().hasScreenCapture()); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/api/NodeWithoutLogsTest.java b/src/test/java/com/aventstack/extentreports/api/NodeWithoutLogsTest.java new file mode 100644 index 0000000..c476ab6 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/api/NodeWithoutLogsTest.java @@ -0,0 +1,25 @@ +package com.aventstack.extentreports.api; + +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.Status; + +public class NodeWithoutLogsTest extends Base { + + @Test + public void verifyNodeAndParentHasPassStatusIfNoLogsAdded(Method method) { + ExtentTest test = extent.createTest(method.getName()); + ExtentTest node = test.createNode("Child"); + + Assert.assertEquals(node.getModel().getLevel(), 1); + Assert.assertEquals(test.getModel().getLogContext().size(), 0); + Assert.assertEquals(test.getStatus(), Status.PASS); + Assert.assertEquals(node.getModel().getLogContext().size(), 0); + Assert.assertEquals(node.getStatus(), Status.PASS); + } +} diff --git a/src/test/java/com/aventstack/extentreports/listenertests/ListenerTest.java b/src/test/java/com/aventstack/extentreports/listenertests/ListenerTest.java index 54460f1..b03f9c9 100644 --- a/src/test/java/com/aventstack/extentreports/listenertests/ListenerTest.java +++ b/src/test/java/com/aventstack/extentreports/listenertests/ListenerTest.java @@ -15,19 +15,19 @@ public class ListenerTest { @Test(groups = "pass") public void passTest() { Reporter.log("Started passTest"); - try { Thread.sleep(2000); } catch(Exception e) { } + try { Thread.sleep(20); } catch(Exception e) { } Assert.assertEquals(Status.PASS, Status.PASS); } @Test(expectedExceptions = SkipException.class, groups = "skip") public void skipTest() { - try { Thread.sleep(2000); } catch(Exception e) { } + try { Thread.sleep(20); } catch(Exception e) { } throw new SkipException("Intentionally skipped test."); } @Test(expectedExceptions = RuntimeException.class, groups = "fail") public void failTest() { - try { Thread.sleep(2000); } catch(Exception e) { } + try { Thread.sleep(20); } catch(Exception e) { } throw new RuntimeException("Intentionally failed test."); } diff --git a/src/test/java/com/aventstack/extentreports/listenertests/ListenerTestsIReporterTest.java b/src/test/java/com/aventstack/extentreports/listenertests/ListenerTestsIReporterTest.java index 257e55a..b4edd2e 100644 --- a/src/test/java/com/aventstack/extentreports/listenertests/ListenerTestsIReporterTest.java +++ b/src/test/java/com/aventstack/extentreports/listenertests/ListenerTestsIReporterTest.java @@ -15,19 +15,19 @@ public class ListenerTestsIReporterTest { @Test(groups = "pass") public void passTest() { Reporter.log("Started passTest"); - try { Thread.sleep(2000); } catch(Exception e) { } + try { Thread.sleep(20); } catch(Exception e) { } Assert.assertEquals(Status.PASS, Status.PASS); } @Test(expectedExceptions = SkipException.class, groups = "skip") public void skipTest() { - try { Thread.sleep(2000); } catch(Exception e) { } + try { Thread.sleep(20); } catch(Exception e) { } throw new SkipException("Intentionally skipped test."); } @Test(expectedExceptions = RuntimeException.class, groups = "fail") public void failTest() { - try { Thread.sleep(2000); } catch(Exception e) { } + try { Thread.sleep(20); } catch(Exception e) { } throw new RuntimeException("Intentionally failed test."); } diff --git a/src/test/java/com/aventstack/extentreports/listenertests/ListenerTestsITestListenerTest.java b/src/test/java/com/aventstack/extentreports/listenertests/ListenerTestsITestListenerTest.java index e3b4245..04975f5 100644 --- a/src/test/java/com/aventstack/extentreports/listenertests/ListenerTestsITestListenerTest.java +++ b/src/test/java/com/aventstack/extentreports/listenertests/ListenerTestsITestListenerTest.java @@ -15,19 +15,19 @@ public class ListenerTestsITestListenerTest { @Test(groups = "pass") public void passTest() { Reporter.log("Started passTest"); - try { Thread.sleep(2000); } catch(Exception e) { } + try { Thread.sleep(20); } catch(Exception e) { } Assert.assertEquals(Status.PASS, Status.PASS); } @Test(expectedExceptions = SkipException.class, groups = "skip") public void skipTest() { - try { Thread.sleep(2000); } catch(Exception e) { } + try { Thread.sleep(20); } catch(Exception e) { } throw new SkipException("Intentionally skipped test."); } @Test(expectedExceptions = RuntimeException.class, groups = "fail") public void failTest() { - try { Thread.sleep(2000); } catch(Exception e) { } + try { Thread.sleep(20); } catch(Exception e) { } throw new RuntimeException("Intentionally failed test."); } diff --git a/src/test/java/com/aventstack/extentreports/mediastorage/LocalMediaStorageTest.java b/src/test/java/com/aventstack/extentreports/mediastorage/LocalMediaStorageTest.java new file mode 100644 index 0000000..c671ba3 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/mediastorage/LocalMediaStorageTest.java @@ -0,0 +1,52 @@ +package com.aventstack.extentreports.mediastorage; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.List; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; +import com.aventstack.extentreports.ExtentReports; +import com.aventstack.extentreports.reporter.ExtentHtmlReporter; + +public class LocalMediaStorageTest extends Base { + + private static final String IMG_PATH = "src/test/resources/logo.png"; + private static final String OUTPUT_PATH = "target/"; + + @Test(priority=1) + public void testLocalFolderCreationOrder(Method method) throws IOException { + ExtentHtmlReporter html = new ExtentHtmlReporter("target/Extent.html"); + html.config().setAutoCreateRelativePathMedia(true); + extent.attachReporter(html); + extent.createTest(method.getName()).pass("pass").addScreenCaptureFromPath(IMG_PATH); + extent.flush(); + Assert.assertTrue(getDirsByName(OUTPUT_PATH).contains("target.0")); + } + + private List getDirsByName(String path) { + File file = new File(path); + String[] names = file.list(); + return Arrays.asList(names); + } + + @Test(priority=2) + public void testLocalFolderCreationOrderMultipleTries(Method method) throws IOException { + ExtentHtmlReporter html; + for (int ix = 0; ix < 2; ix++) { + extent = new ExtentReports(); + html = new ExtentHtmlReporter("target/Extent.html"); + html.config().setAutoCreateRelativePathMedia(true); + extent.attachReporter(html); + extent.createTest(method.getName()).pass("pass").addScreenCaptureFromPath(IMG_PATH); + extent.flush(); + } + Assert.assertTrue(getDirsByName(OUTPUT_PATH).contains("target.2")); + Assert.assertTrue(new File(OUTPUT_PATH + "target.2/logo.png").exists()); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/model/BddLevelsTest.java b/src/test/java/com/aventstack/extentreports/model/BddLevelsTest.java new file mode 100644 index 0000000..2d4b317 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/model/BddLevelsTest.java @@ -0,0 +1,135 @@ +package com.aventstack.extentreports.model; + +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.GherkinKeyword; +import com.aventstack.extentreports.gherkin.GherkinDialectProvider; +import com.aventstack.extentreports.gherkin.model.And; +import com.aventstack.extentreports.gherkin.model.But; +import com.aventstack.extentreports.gherkin.model.Feature; +import com.aventstack.extentreports.gherkin.model.Given; +import com.aventstack.extentreports.gherkin.model.Scenario; +import com.aventstack.extentreports.gherkin.model.Then; +import com.aventstack.extentreports.gherkin.model.When; + +public class BddLevelsTest extends Base { + + @BeforeClass + public void beforeClass() throws UnsupportedEncodingException { + GherkinDialectProvider.setLanguage("en"); + } + + @Test + public void verifyFeatureLevelUsingGherkinKeyword(Method method) throws ClassNotFoundException { + ExtentTest feature = extent.createTest(new GherkinKeyword("Feature"), method.getName()); + Assert.assertEquals(feature.getModel().getLevel(), 0); + } + + @Test + public void verifyScenarioLevelUsingGherkinKeyword(Method method) throws ClassNotFoundException { + ExtentTest feature = extent.createTest(new GherkinKeyword("Feature"), method.getName()); + ExtentTest scenario = feature.createNode(new GherkinKeyword("Scenario"), "Child"); + Assert.assertEquals(scenario.getModel().getLevel(), 1); + } + + @Test + public void verifyGivenLevesUsingGherkinKeyword(Method method) throws ClassNotFoundException { + ExtentTest feature = extent.createTest(new GherkinKeyword("Feature"), method.getName()); + ExtentTest scenario = feature.createNode(new GherkinKeyword("Scenario"), "Child"); + ExtentTest given = scenario.createNode(new GherkinKeyword("Given"), "Given").info("info"); + Assert.assertEquals(given.getModel().getLevel(), 2); + } + + @Test + public void verifyAndLevelUsingGherkinKeyword(Method method) throws ClassNotFoundException { + ExtentTest feature = extent.createTest(new GherkinKeyword("Feature"), method.getName()); + ExtentTest scenario = feature.createNode(new GherkinKeyword("Scenario"), "Child"); + ExtentTest and = scenario.createNode(new GherkinKeyword("And"), "And").info("info"); + Assert.assertEquals(and.getModel().getLevel(), 2); + } + + @Test + public void verifyWhenLevelUsingGherkinKeyword(Method method) throws ClassNotFoundException { + ExtentTest feature = extent.createTest(new GherkinKeyword("Feature"), method.getName()); + ExtentTest scenario = feature.createNode(new GherkinKeyword("Scenario"), "Child"); + ExtentTest when = scenario.createNode(new GherkinKeyword("When"), "When").info("info"); + Assert.assertEquals(when.getModel().getLevel(), 2); + } + + @Test + public void verifyThenLevelUsingGherkinKeyword(Method method) throws ClassNotFoundException { + ExtentTest feature = extent.createTest(new GherkinKeyword("Feature"), method.getName()); + ExtentTest scenario = feature.createNode(new GherkinKeyword("Scenario"), "Child"); + ExtentTest then = scenario.createNode(new GherkinKeyword("Then"), "Then").pass("pass"); + Assert.assertEquals(then.getModel().getLevel(), 2); + } + + @Test + public void verifyButLevelUsingGherkinKeyword(Method method) throws ClassNotFoundException { + ExtentTest feature = extent.createTest(new GherkinKeyword("Feature"), method.getName()); + ExtentTest scenario = feature.createNode(new GherkinKeyword("Scenario"), "Child"); + ExtentTest but = scenario.createNode(new GherkinKeyword("But"), "But").pass("pass"); + Assert.assertEquals(but.getModel().getLevel(), 2); + } + + @Test + public void verifyFeatureLevelUsingClass(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + Assert.assertEquals(feature.getModel().getLevel(), 0); + } + + @Test + public void verifyScenarioLevelUsingClass(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Child"); + Assert.assertEquals(scenario.getModel().getLevel(), 1); + } + + @Test + public void verifyGivenLevelUsingClass(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Child"); + ExtentTest given = scenario.createNode(Given.class, "Given").info("info"); + Assert.assertEquals(given.getModel().getLevel(), 2); + } + + @Test + public void verifyAndLevelUsingClass(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Child"); + ExtentTest and = scenario.createNode(And.class, "And").info("info"); + Assert.assertEquals(and.getModel().getLevel(), 2); + } + + @Test + public void verifyWhenLevelUsingClass(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Child"); + ExtentTest when = scenario.createNode(When.class, "When").info("info"); + Assert.assertEquals(when.getModel().getLevel(), 2); + } + + @Test + public void verifyThenLevelUsingClass(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Child"); + ExtentTest then = scenario.createNode(Then.class, "Then").pass("pass"); + Assert.assertEquals(then.getModel().getLevel(), 2); + } + + @Test + public void verifyButLevelUsingClass(Method method) { + ExtentTest feature = extent.createTest(Feature.class, method.getName()); + ExtentTest scenario = feature.createNode(Scenario.class, "Child"); + ExtentTest but = scenario.createNode(But.class, "But").pass("pass"); + Assert.assertEquals(but.getModel().getLevel(), 2); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/model/LogModelTest.java b/src/test/java/com/aventstack/extentreports/model/LogModelTest.java new file mode 100644 index 0000000..9380713 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/model/LogModelTest.java @@ -0,0 +1,58 @@ +package com.aventstack.extentreports.model; + +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.Status; + + +public class LogModelTest extends Base { + + @Test + public void testLogStatusPass(Method method) { + ExtentTest t = extent.createTest(method.getName()).pass("pass"); + Assert.assertEquals(t.getModel().getLogContext().getFirst().getStatus(), Status.PASS); + } + + @Test + public void testLogStatusFail(Method method) { + ExtentTest t = extent.createTest(method.getName()).fail("fail"); + Assert.assertEquals(t.getModel().getLogContext().getFirst().getStatus(), Status.FAIL); + } + + @Test + public void testLogStatusSkip(Method method) { + ExtentTest t = extent.createTest(method.getName()).skip("skip"); + Assert.assertEquals(t.getModel().getLogContext().getFirst().getStatus(), Status.SKIP); + } + + @Test + public void testLogStatusPassMultiple(Method method) { + ExtentTest t = extent.createTest(method.getName()).fail("fail").pass("pass").skip("skip"); + Assert.assertEquals(t.getModel().getLogContext().getFirst().getStatus(), Status.FAIL); + } + + @Test + public void testLogStatusFailMultiple(Method method) { + ExtentTest t = extent.createTest(method.getName()).fail("fail").pass("pass").skip("skip"); + Assert.assertEquals(t.getModel().getLogContext().get(1).getStatus(), Status.PASS); + } + + @Test + public void testLogStatusSkipMultiple(Method method) { + ExtentTest t = extent.createTest(method.getName()).fail("fail").pass("pass").skip("skip"); + Assert.assertEquals(t.getModel().getLogContext().getLast().getStatus(), Status.SKIP); + } + + @Test + public void testLogDetailsContent(Method method) { + String content = "fail"; + ExtentTest t = extent.createTest(method.getName()).fail(content); + Assert.assertEquals(t.getModel().getLogContext().getFirst().getDetails(), content); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/model/MarkupHelperTest.java b/src/test/java/com/aventstack/extentreports/model/MarkupHelperTest.java new file mode 100644 index 0000000..be55165 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/model/MarkupHelperTest.java @@ -0,0 +1,91 @@ +package com.aventstack.extentreports.model; + +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.markuputils.CodeLanguage; +import com.aventstack.extentreports.markuputils.ExtentColor; +import com.aventstack.extentreports.markuputils.Markup; +import com.aventstack.extentreports.markuputils.MarkupHelper; + +public class MarkupHelperTest extends Base { + + private static final String TEXTAREA_START = " idCollection = new ArrayList<>(); + + // create [times] tests to ensure test-id is not duplicate + for (int ix = 0; ix < times; ix++) { + int testId = extent.createTest(method.getName() + "." + ix).info("test # " + ix).getModel().getID(); + + Assert.assertFalse(idCollection.contains(testId)); + + idCollection.add(testId); + } + } +} diff --git a/src/test/java/com/aventstack/extentreports/model/TestMediaTest.java b/src/test/java/com/aventstack/extentreports/model/TestMediaTest.java new file mode 100644 index 0000000..d307bbf --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/model/TestMediaTest.java @@ -0,0 +1,58 @@ +package com.aventstack.extentreports.model; + +import java.io.IOException; +import java.lang.reflect.Method; +import java.net.URL; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; +import com.aventstack.extentreports.ExtentTest; + +public class TestMediaTest extends Base { + + private final String imgName = "img"; + private URL url = getClass().getClassLoader().getResource("1.png"); + private String imgPath = url.getPath(); + + @Test + public void verifyIfScreenCaptureAdded(Method method) throws IOException { + ExtentTest test = extent + .createTest(method.getName()) + .addScreenCaptureFromPath(imgPath) + .fail("fail"); + + Assert.assertEquals(test.getModel().getScreenCaptureList().size(), 1); + } + + @Test + public void verifyScreenCaptureTitle(Method method) throws IOException { + ExtentTest test = extent + .createTest(method.getName()) + .addScreenCaptureFromPath(imgPath, imgName) + .fail("fail"); + + Assert.assertEquals(test.getModel().getScreenCaptureList().size(), 1); + Assert.assertEquals(test.getModel().getScreenCaptureList().get(0).getName(), imgName); + } + + @Test + public void verifyMultipleScreenCaptures(Method method) throws IOException { + int times = 4; + + ExtentTest test = extent + .createTest(method.getName()) + .fail("fail"); + + for (int ix = 0; ix < times; ix++) { + test.addScreenCaptureFromPath(imgPath, imgName); + } + + Assert.assertEquals(test.getModel().getScreenCaptureList().size(), times); + for (int ix = 0; ix < times; ix++) { + Assert.assertEquals(test.getModel().getScreenCaptureList().get(ix).getName(), imgName); + } + } + +} diff --git a/src/test/java/com/aventstack/extentreports/model/TestModelTest.java b/src/test/java/com/aventstack/extentreports/model/TestModelTest.java new file mode 100644 index 0000000..66c6dee --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/model/TestModelTest.java @@ -0,0 +1,296 @@ +package com.aventstack.extentreports.model; + +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; +import com.aventstack.extentreports.ExtentTest; + +public class TestModelTest extends Base { + + @Test + public void testTestId(Method method) { + ExtentTest t = extent.createTest(method.getName()); + Assert.assertTrue(t.getModel().getID()>=0); + } + + @Test + public void testHasNoChildrenViaModel(Method method) { + ExtentTest t = extent.createTest(method.getName()); + Assert.assertFalse(t.getModel().hasChildren()); + } + + @Test + public void testHasChildrenViaModel(Method method) { + ExtentTest t = extent.createTest(method.getName()); + t.createNode(method.getName()); + Assert.assertTrue(t.getModel().hasChildren()); + } + + @Test + public void testNodeIsChildNode(Method method) { + ExtentTest t = extent.createTest(method.getName()).createNode(method.getName()); + Assert.assertTrue(t.getModel().isChildNode()); + } + + @Test + public void testNodeContextIsEmpty(Method method) { + ExtentTest t = extent.createTest(method.getName()); + Assert.assertTrue(t.getModel().getNodeContext().isEmpty()); + } + + @Test + public void testNodeContextIsNotEmpty(Method method) { + ExtentTest t = extent.createTest(method.getName()); + t.createNode(method.getName()); + Assert.assertFalse(t.getModel().getNodeContext().isEmpty()); + } + + @Test + public void testNodeContextFirstNotNull(Method method) { + ExtentTest t = extent.createTest(method.getName()); + t.createNode(method.getName()); + Assert.assertTrue(t.getModel().getNodeContext().getFirst()!=null); + } + + @Test + public void testNodeContextFirstContent(Method method) { + ExtentTest t = extent.createTest(method.getName()); + String name = method.getName() + "x"; + t.createNode(name); + Assert.assertTrue(t.getModel().getNodeContext().getFirst().getName().equals(name)); + } + + @Test + public void testNodeContextLastContent(Method method) { + ExtentTest t = extent.createTest(method.getName()); + String name = method.getName() + "x"; + t.createNode(name); + Assert.assertTrue(t.getModel().getNodeContext().getLast().getName().equals(name)); + } + + @Test + public void testNodeContextFirstLastContent(Method method) { + ExtentTest t = extent.createTest(method.getName()); + String name1 = method.getName() + "x1"; + t.createNode(name1); + String name2 = method.getName() + "x2"; + t.createNode(name2); + Assert.assertTrue(t.getModel().getNodeContext().getFirst().getName().equals(name1)); + Assert.assertTrue(t.getModel().getNodeContext().getLast().getName().equals(name2)); + } + + @Test + public void testNodeContextIndexContent(Method method) { + ExtentTest t = extent.createTest(method.getName()); + String name1 = method.getName() + "x1"; + t.createNode(name1); + String name2 = method.getName() + "x2"; + t.createNode(name2); + Assert.assertTrue(t.getModel().getNodeContext().get(0).getName().equals(name1)); + Assert.assertTrue(t.getModel().getNodeContext().get(1).getName().equals(name2)); + } + + @Test + public void testHasNoEventsViaModel(Method method) { + ExtentTest t = extent.createTest(method.getName()); + Assert.assertFalse(t.getModel().hasLog()); + } + + @Test + public void testHasEventsViaModel(Method method) { + ExtentTest t = extent.createTest(method.getName()).pass("pass"); + Assert.assertTrue(t.getModel().hasLog()); + } + + @Test + public void testLogContextIsEmpty(Method method) { + ExtentTest t = extent.createTest(method.getName()); + Assert.assertTrue(t.getModel().getLogContext().isEmpty()); + } + + @Test + public void testLogContextIsNotEmpty(Method method) { + ExtentTest t = extent.createTest(method.getName()).pass("pass"); + Assert.assertFalse(t.getModel().getLogContext().isEmpty()); + } + + @Test + public void testLogContextFirstNotNull(Method method) { + ExtentTest t = extent.createTest(method.getName()).pass("pass"); + Assert.assertTrue(t.getModel().getLogContext().getFirst()!=null); + } + + @Test + public void testLogContextFirstContent(Method method) { + String name = method.getName() + "x"; + ExtentTest t = extent.createTest(method.getName()).pass(name); + Assert.assertTrue(t.getModel().getLogContext().getFirst().getDetails().equals(name)); + } + + @Test + public void testLogContextLastContent(Method method) { + String name = method.getName() + "x"; + ExtentTest t = extent.createTest(method.getName()).pass(name); + Assert.assertTrue(t.getModel().getLogContext().getLast().getDetails().equals(name)); + } + + @Test + public void testLogContextFirstLastContent(Method method) { + ExtentTest t = extent.createTest(method.getName()); + String name1 = method.getName() + "x1"; + t.pass(name1); + String name2 = method.getName() + "x2"; + t.pass(name2); + Assert.assertTrue(t.getModel().getLogContext().getFirst().getDetails().equals(name1)); + Assert.assertTrue(t.getModel().getLogContext().getLast().getDetails().equals(name2)); + } + + @Test + public void testLogContextIndexContent(Method method) { + ExtentTest t = extent.createTest(method.getName()); + String name1 = method.getName() + "x1"; + t.pass(name1); + String name2 = method.getName() + "x2"; + t.pass(name2); + Assert.assertTrue(t.getModel().getLogContext().get(0).getDetails().equals(name1)); + Assert.assertTrue(t.getModel().getLogContext().get(1).getDetails().equals(name2)); + } + + @Test + public void testHierarchicalNameParent(Method method) { + ExtentTest t = extent.createTest(method.getName()); + Assert.assertTrue(t.getModel().getHierarchicalName().equals(method.getName())); + } + + @Test + public void testHierarchicalNameChild(Method method) { + String parentName = method.getName(); + String childName = method.getName() + "x"; + ExtentTest t = extent.createTest(parentName).createNode(childName); + Assert.assertTrue(t.getModel().getHierarchicalName().equals(parentName + "." + childName)); + } + + @Test + public void testHierarchicalNameGrandChild(Method method) { + String parentName = method.getName(); + String childName = method.getName() + "x"; + String grandChildName = method.getName() + "xx"; + ExtentTest t = extent.createTest(parentName).createNode(childName).createNode(grandChildName); + Assert.assertTrue(t.getModel().getHierarchicalName().equals(parentName + "." + childName + "." + grandChildName)); + } + + @Test + public void testHasCategory(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignCategory("category"); + Assert.assertTrue(t.getModel().hasCategory()); + } + + @Test + public void testHasNoCategoryWhenCategoryNull(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignCategory(new String[] { null }); + Assert.assertFalse(t.getModel().hasCategory()); + } + + @Test + public void testHasNoCategoryWhenCategoryEmpty(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignCategory(""); + Assert.assertFalse(t.getModel().hasCategory()); + } + + @Test + public void testHasNoCategoryWhenCategorySpaces(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignCategory(" "); + Assert.assertFalse(t.getModel().hasCategory()); + } + + @Test + public void testCategorySingleNameMatch(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignCategory(method.getName()); + Assert.assertTrue(t.getModel().getCategoryContext().getFirst().getName().equals(method.getName())); + } + + @Test + public void testCategoryMultipleOrderedNameMatch(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignCategory(method.getName(), "tag"); + Assert.assertTrue(t.getModel().getCategoryContext().getFirst().getName().equals(method.getName())); + Assert.assertTrue(t.getModel().getCategoryContext().getLast().getName().equals("tag")); + } + + @Test + public void testHasAuthor(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignAuthor("Author"); + Assert.assertTrue(t.getModel().hasAuthor()); + } + + @Test + public void testHasNoAuthorWhenAuthorNull(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignAuthor(new String[] { null }); + Assert.assertFalse(t.getModel().hasAuthor()); + } + + @Test + public void testHasNoAuthorWhenAuthorEmpty(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignAuthor(""); + Assert.assertFalse(t.getModel().hasAuthor()); + } + + @Test + public void testHasNoAuthorWhenAuthorSpaces(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignAuthor(" "); + Assert.assertFalse(t.getModel().hasAuthor()); + } + + @Test + public void testAuthorSingleNameMatch(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignAuthor(method.getName()); + Assert.assertTrue(t.getModel().getAuthorContext().getFirst().getName().equals(method.getName())); + } + + @Test + public void testAuthorMultipleOrderedNameMatch(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignAuthor(method.getName(), "author"); + Assert.assertTrue(t.getModel().getAuthorContext().getFirst().getName().equals(method.getName())); + Assert.assertTrue(t.getModel().getAuthorContext().getLast().getName().equals("author")); + } + + @Test + public void testHasDevice(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignDevice("Device"); + Assert.assertTrue(t.getModel().hasDevice()); + } + + @Test + public void testHasNoDeviceWhenDeviceNull(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignDevice(new String[] { null }); + Assert.assertFalse(t.getModel().hasDevice()); + } + + @Test + public void testHasNoDeviceWhenDeviceEmpty(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignDevice(""); + Assert.assertFalse(t.getModel().hasDevice()); + } + + @Test + public void testHasNoDeviceWhenDeviceSpaces(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignDevice(" "); + Assert.assertFalse(t.getModel().hasDevice()); + } + + @Test + public void testDeviceSingleNameMatch(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignDevice(method.getName()); + Assert.assertTrue(t.getModel().getDeviceContext().getFirst().getName().equals(method.getName())); + } + + @Test + public void testDeviceMultipleOrderedNameMatch(Method method) { + ExtentTest t = extent.createTest(method.getName()).assignDevice(method.getName(), "Device"); + Assert.assertTrue(t.getModel().getDeviceContext().getFirst().getName().equals(method.getName())); + Assert.assertTrue(t.getModel().getDeviceContext().getLast().getName().equals("Device")); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/reporter/HtmlBasicFileReporterConfigurationTest.java b/src/test/java/com/aventstack/extentreports/reporter/HtmlBasicFileReporterConfigurationTest.java new file mode 100644 index 0000000..ce023a3 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/reporter/HtmlBasicFileReporterConfigurationTest.java @@ -0,0 +1,110 @@ +package com.aventstack.extentreports.reporter; + +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; + +public class HtmlBasicFileReporterConfigurationTest extends Base { + + @Test + public void htmlReporterHasInitialConfig(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + Assert.assertFalse(html.getConfigContext().getConfigList().isEmpty()); + } + + @Test + public void testHtmlReporterUserConfigInitialCSSNull(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String v = html.config().getConfigMap().get("styles"); + Assert.assertNull(v); + } + + @Test + public void testHtmlReporterUserConfigCSSHasValue(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String css = ".dark{background:black;}"; + html.config().setCSS(css); + String v = html.config().getConfigMap().get("styles"); + Assert.assertFalse(v.isEmpty()); + } + + @Test + public void testHtmlReporterUserConfigCSSValue(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String css = ".dark{background:black;}"; + html.config().setCSS(css); + String v = html.config().getConfigMap().get("styles"); + Assert.assertEquals(v, css); + } + + @Test + public void testHtmlReporterUserConfigInitialJSNull(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String v = html.config().getConfigMap().get("scripts"); + Assert.assertNull(v); + } + + @Test + public void testHtmlReporterUserConfigJSHasValue(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + html.config().setJS("alert('');"); + String v = html.config().getConfigMap().get("scripts"); + Assert.assertFalse(v.isEmpty()); + } + + @Test + public void testHtmlReporterUserConfigJSValue(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String js = "alert('');"; + html.config().setJS(js); + String v = html.config().getConfigMap().get("scripts"); + Assert.assertEquals(v, js); + } + + @Test + public void documentTitleInitialValueTest(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + Assert.assertFalse(html.getConfigContext().getValue("documentTitle").toString().isEmpty()); + } + + @Test + public void documentTitleInitialUserValueTest(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String v = html.config().getConfigMap().get("documentTitle"); + Assert.assertNull(v); + } + + @Test + public void documentTitleUserValueTest(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String docTitle = "test"; + html.config().setDocumentTitle(docTitle); + String v = html.config().getConfigMap().get("documentTitle"); + Assert.assertEquals(v, docTitle); + } + + @Test + public void encodingInitialValueTest(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + Assert.assertTrue(html.getConfigContext().getValue("encoding").toString().equalsIgnoreCase("utf-8")); + } + + @Test + public void encodingInitialUserValueTest(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String v = html.config().getConfigMap().get("encoding"); + Assert.assertNull(v); + } + + @Test + public void encodingUserValueTest(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String encoding = "utf-16"; + html.config().setEncoding(encoding); + String v = html.config().getConfigMap().get("encoding"); + Assert.assertEquals(v, encoding); + } +} diff --git a/src/test/java/com/aventstack/extentreports/reporter/HtmlConfigurableReporterTest.java b/src/test/java/com/aventstack/extentreports/reporter/HtmlConfigurableReporterTest.java new file mode 100644 index 0000000..2cdc865 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/reporter/HtmlConfigurableReporterTest.java @@ -0,0 +1,65 @@ +package com.aventstack.extentreports.reporter; + +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; + +public class HtmlConfigurableReporterTest extends Base { + + private static final String CONFIG_PATH = "src/test/resources/html-config.xml"; + private static final String THEME = "dark"; + private static final String ENCODING = "utf-8"; + private static final String DOCUMENT_TITLE = "Extent Framework"; + private static final String REPORT_NAME = "Build 1"; + private static final String TIMESTAMP_FORMAT = "MMM dd, yyyy HH:mm:ss"; + private static final String CSS = ".test.active { border: 1px solid #ccc; }"; + private static final String JS = "$('.test').click(function() { console.log('test'); });"; + + private ExtentHtmlReporter html; + + @BeforeClass + public void beforeClass() { + html = new ExtentHtmlReporter("Extent.html"); + html.loadXMLConfig(CONFIG_PATH); + } + + @Test + public void testTheme(Method method) { + Assert.assertEquals(html.getConfigContext().getValue("theme"), THEME); + } + + @Test + public void testEncoding(Method method) { + Assert.assertTrue(String.valueOf(html.getConfigContext().getValue("encoding")).equalsIgnoreCase(ENCODING)); + } + + @Test + public void testDocumentTitle(Method method) { + Assert.assertEquals(html.getConfigContext().getValue("documentTitle"), DOCUMENT_TITLE); + } + + @Test + public void testReportName(Method method) { + Assert.assertEquals(html.getConfigContext().getValue("reportName"), REPORT_NAME); + } + + @Test + public void testTimestampFormat(Method method) { + Assert.assertEquals(html.getConfigContext().getValue("timeStampFormat"), TIMESTAMP_FORMAT); + } + + @Test + public void testCSS(Method method) { + Assert.assertTrue(html.getConfigContext().getValue("styles").toString().contains(CSS)); + } + + @Test + public void testJS(Method method) { + Assert.assertTrue(html.getConfigContext().getValue("scripts").toString().contains(JS)); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/reporter/HtmlRichViewReporterConfigurationTest.java b/src/test/java/com/aventstack/extentreports/reporter/HtmlRichViewReporterConfigurationTest.java new file mode 100644 index 0000000..0dbf3b1 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/reporter/HtmlRichViewReporterConfigurationTest.java @@ -0,0 +1,75 @@ +package com.aventstack.extentreports.reporter; + +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.reporter.configuration.Protocol; +import com.aventstack.extentreports.reporter.configuration.Theme; + +public class HtmlRichViewReporterConfigurationTest { + + @Test + public void testHtmlReporterUserConfigEnableTimelineEnabled(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + html.config().enableTimeline(true); + String v = html.config().getConfigMap().get("enableTimeline"); + Assert.assertEquals(v, String.valueOf(true)); + } + + @Test + public void testHtmlReporterUserConfigEnableTimelineDisabled(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + html.config().enableTimeline(false); + String v = html.config().getConfigMap().get("enableTimeline"); + Assert.assertEquals(v, String.valueOf(false)); + } + + @Test + public void testHtmlReporterUserConfigAutoConfigMediaEnabled(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + html.config().setAutoCreateRelativePathMedia(true); + String v = html.config().getConfigMap().get("autoCreateRelativePathMedia"); + Assert.assertEquals(v, String.valueOf(true)); + } + + @Test + public void testHtmlReporterUserConfigAutoConfigMediaDisabled(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + html.config().setAutoCreateRelativePathMedia(false); + String v = html.config().getConfigMap().get("autoCreateRelativePathMedia"); + Assert.assertEquals(v, String.valueOf(false)); + } + + @Test + public void testHtmlReporterUserConfigDetaultProtocol(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String v = (String) html.getConfigContext().getValue("protocol"); + Assert.assertEquals(Enum.valueOf(Protocol.class, v.toUpperCase()), Protocol.HTTPS); + } + + @Test + public void testHtmlReporterUserConfigProtocolSetting(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + html.config().setProtocol(Protocol.HTTP); + String v = html.config().getConfigMap().get("protocol"); + Assert.assertEquals(Enum.valueOf(Protocol.class, v.toUpperCase()), Protocol.HTTP); + } + + @Test + public void testHtmlReporterUserConfigDetaultTheme(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + String v = (String) html.getConfigContext().getValue("theme"); + Assert.assertEquals(Enum.valueOf(Theme.class, v.toUpperCase()), Theme.STANDARD); + } + + @Test + public void testHtmlReporterUserConfigThemeSetting(Method method) { + ExtentHtmlReporter html = new ExtentHtmlReporter(method.getName() + ".html"); + html.config().setTheme(Theme.DARK); + String v = html.config().getConfigMap().get("theme"); + Assert.assertEquals(Enum.valueOf(Theme.class, v.toUpperCase()), Theme.DARK); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/reporter/LoggerBasicFileReporterConfigurationTest2.java b/src/test/java/com/aventstack/extentreports/reporter/LoggerBasicFileReporterConfigurationTest2.java new file mode 100644 index 0000000..83cafa6 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/reporter/LoggerBasicFileReporterConfigurationTest2.java @@ -0,0 +1,110 @@ +package com.aventstack.extentreports.reporter; + +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; + +public class LoggerBasicFileReporterConfigurationTest2 extends Base { + + @Test + public void htmlReporterHasInitialConfig(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + Assert.assertFalse(logger.getConfigContext().getConfigList().isEmpty()); + } + + @Test + public void testHtmlReporterUserConfigInitialCSSNull(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String v = logger.config().getConfigMap().get("styles"); + Assert.assertNull(v); + } + + @Test + public void testHtmlReporterUserConfigCSSHasValue(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String css = ".dark{background:black;}"; + logger.config().setCSS(css); + String v = logger.config().getConfigMap().get("styles"); + Assert.assertFalse(v.isEmpty()); + } + + @Test + public void testHtmlReporterUserConfigCSSValue(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String css = ".dark{background:black;}"; + logger.config().setCSS(css); + String v = logger.config().getConfigMap().get("styles"); + Assert.assertEquals(v, css); + } + + @Test + public void testHtmlReporterUserConfigInitialJSNull(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String v = logger.config().getConfigMap().get("scripts"); + Assert.assertNull(v); + } + + @Test + public void testHtmlReporterUserConfigJSHasValue(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + logger.config().setJS("alert('');"); + String v = logger.config().getConfigMap().get("scripts"); + Assert.assertFalse(v.isEmpty()); + } + + @Test + public void testHtmlReporterUserConfigJSValue(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String js = "alert('');"; + logger.config().setJS(js); + String v = logger.config().getConfigMap().get("scripts"); + Assert.assertEquals(v, js); + } + + @Test + public void documentTitleInitialValueTest(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + Assert.assertFalse(logger.getConfigContext().getValue("documentTitle").toString().isEmpty()); + } + + @Test + public void documentTitleInitialUserValueTest(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String v = logger.config().getConfigMap().get("documentTitle"); + Assert.assertNull(v); + } + + @Test + public void documentTitleUserValueTest(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String docTitle = "test"; + logger.config().setDocumentTitle(docTitle); + String v = logger.config().getConfigMap().get("documentTitle"); + Assert.assertEquals(v, docTitle); + } + + @Test + public void encodingInitialValueTest(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + Assert.assertTrue(logger.getConfigContext().getValue("encoding").toString().equalsIgnoreCase("utf-8")); + } + + @Test + public void encodingInitialUserValueTest(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String v = logger.config().getConfigMap().get("encoding"); + Assert.assertNull(v); + } + + @Test + public void encodingUserValueTest(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String encoding = "utf-16"; + logger.config().setEncoding(encoding); + String v = logger.config().getConfigMap().get("encoding"); + Assert.assertEquals(v, encoding); + } +} diff --git a/src/test/java/com/aventstack/extentreports/reporter/LoggerConfigurableReporterTest.java b/src/test/java/com/aventstack/extentreports/reporter/LoggerConfigurableReporterTest.java new file mode 100644 index 0000000..7516759 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/reporter/LoggerConfigurableReporterTest.java @@ -0,0 +1,65 @@ +package com.aventstack.extentreports.reporter; + +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; + +public class LoggerConfigurableReporterTest extends Base { + + private static final String CONFIG_PATH = "src/test/resources/html-config.xml"; + private static final String THEME = "dark"; + private static final String ENCODING = "utf-8"; + private static final String DOCUMENT_TITLE = "Extent Framework"; + private static final String REPORT_NAME = "Build 1"; + private static final String TIMESTAMP_FORMAT = "MMM dd, yyyy HH:mm:ss"; + private static final String CSS = ".test.active { border: 1px solid #ccc; }"; + private static final String JS = "$('.test').click(function() { console.log('test'); });"; + + private ExtentLoggerReporter logger; + + @BeforeClass + public void beforeClass() { + logger = new ExtentLoggerReporter("Extent.html"); + logger.loadXMLConfig(CONFIG_PATH); + } + + @Test + public void testTheme(Method method) { + Assert.assertEquals(logger.getConfigContext().getValue("theme"), THEME); + } + + @Test + public void testEncoding(Method method) { + Assert.assertTrue(String.valueOf(logger.getConfigContext().getValue("encoding")).equalsIgnoreCase(ENCODING)); + } + + @Test + public void testDocumentTitle(Method method) { + Assert.assertEquals(logger.getConfigContext().getValue("documentTitle"), DOCUMENT_TITLE); + } + + @Test + public void testReportName(Method method) { + Assert.assertEquals(logger.getConfigContext().getValue("reportName"), REPORT_NAME); + } + + @Test + public void testTimestampFormat(Method method) { + Assert.assertEquals(logger.getConfigContext().getValue("timeStampFormat"), TIMESTAMP_FORMAT); + } + + @Test + public void testCSS(Method method) { + Assert.assertTrue(logger.getConfigContext().getValue("styles").toString().contains(CSS)); + } + + @Test + public void testJS(Method method) { + Assert.assertTrue(logger.getConfigContext().getValue("scripts").toString().contains(JS)); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/reporter/LoggerRichViewReporterConfigurationTest.java b/src/test/java/com/aventstack/extentreports/reporter/LoggerRichViewReporterConfigurationTest.java new file mode 100644 index 0000000..d00cd05 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/reporter/LoggerRichViewReporterConfigurationTest.java @@ -0,0 +1,75 @@ +package com.aventstack.extentreports.reporter; + +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.reporter.configuration.Protocol; +import com.aventstack.extentreports.reporter.configuration.Theme; + +public class LoggerRichViewReporterConfigurationTest { + + @Test + public void testHtmlReporterUserConfigEnableTimelineEnabled(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + logger.config().enableTimeline(true); + String v = logger.config().getConfigMap().get("enableTimeline"); + Assert.assertEquals(v, String.valueOf(true)); + } + + @Test + public void testHtmlReporterUserConfigEnableTimelineDisabled(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + logger.config().enableTimeline(false); + String v = logger.config().getConfigMap().get("enableTimeline"); + Assert.assertEquals(v, String.valueOf(false)); + } + + @Test + public void testHtmlReporterUserConfigAutoConfigMediaEnabled(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + logger.config().setAutoCreateRelativePathMedia(true); + String v = logger.config().getConfigMap().get("autoCreateRelativePathMedia"); + Assert.assertEquals(v, String.valueOf(true)); + } + + @Test + public void testHtmlReporterUserConfigAutoConfigMediaDisabled(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + logger.config().setAutoCreateRelativePathMedia(false); + String v = logger.config().getConfigMap().get("autoCreateRelativePathMedia"); + Assert.assertEquals(v, String.valueOf(false)); + } + + @Test + public void testHtmlReporterUserConfigDetaultProtocol(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String v = (String) logger.getConfigContext().getValue("protocol"); + Assert.assertEquals(Enum.valueOf(Protocol.class, v.toUpperCase()), Protocol.HTTPS); + } + + @Test + public void testHtmlReporterUserConfigProtocolSetting(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + logger.config().setProtocol(Protocol.HTTP); + String v = logger.config().getConfigMap().get("protocol"); + Assert.assertEquals(Enum.valueOf(Protocol.class, v.toUpperCase()), Protocol.HTTP); + } + + @Test + public void testHtmlReporterUserConfigDetaultTheme(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + String v = (String) logger.getConfigContext().getValue("theme"); + Assert.assertEquals(Enum.valueOf(Theme.class, v.toUpperCase()), Theme.STANDARD); + } + + @Test + public void testHtmlReporterUserConfigThemeSetting(Method method) { + ExtentLoggerReporter logger = new ExtentLoggerReporter(method.getName() + ".html"); + logger.config().setTheme(Theme.DARK); + String v = logger.config().getConfigMap().get("theme"); + Assert.assertEquals(Enum.valueOf(Theme.class, v.toUpperCase()), Theme.DARK); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/reporter/OfficeReportTest.java b/src/test/java/com/aventstack/extentreports/reporter/OfficeReportTest.java new file mode 100644 index 0000000..ffd5c93 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/reporter/OfficeReportTest.java @@ -0,0 +1,46 @@ +package com.aventstack.extentreports.reporter; + +import java.io.File; +import java.lang.reflect.Method; + +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Base; + +public class OfficeReportTest extends Base { + + private static final String OUTPUT_PATH = "target/logger/"; + private static final String ATTR_JS = OUTPUT_PATH + "attr.js"; + private static final String DASHBOARD_JS = OUTPUT_PATH + "dashboard.js"; + private static final String LOGGER_SCRIPTS_JS = OUTPUT_PATH + "logger-scripts.js"; + private static final String LOGGER_STYLES_CSS = OUTPUT_PATH + "logger-style.css"; + + @BeforeClass + public void createOfflineResx() { + ExtentLoggerReporter logger = new ExtentLoggerReporter("target/"); + logger.config().enableOfflineMode(true); + extent.attachReporter(logger); + } + + @Test + public void verifyAttrJsExists(Method method) { + Assert.assertTrue(new File(ATTR_JS).exists()); + } + + @Test + public void verifyDashboardJsExists(Method method) { + Assert.assertTrue(new File(DASHBOARD_JS).exists()); + } + + @Test + public void verifyScriptsExists(Method method) { + Assert.assertTrue(new File(LOGGER_SCRIPTS_JS).exists()); + } + + @Test + public void verifyStylesExists(Method method) { + Assert.assertTrue(new File(LOGGER_STYLES_CSS).exists()); + } +} diff --git a/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsIconOverrideTest.java b/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsIconOverrideTest.java new file mode 100644 index 0000000..c48063d --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsIconOverrideTest.java @@ -0,0 +1,18 @@ +package com.aventstack.extentreports.viewdefs; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Status; + +public class ViewDefsIconOverrideTest { + + @Test + public void testTWBSColorPassReturnsValue() { + Icon icon = new Icon(); + String ico = "close"; + icon.override(Status.PASS, ico); + Assert.assertTrue(icon.getIcon(Status.PASS).equals(ico)); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsIconTest.java b/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsIconTest.java new file mode 100644 index 0000000..bd509c0 --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsIconTest.java @@ -0,0 +1,52 @@ +package com.aventstack.extentreports.viewdefs; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Status; + +public class ViewDefsIconTest { + + private Icon icon = new Icon(); + + @Test + public void testiconColorPassReturnsValue() { + Assert.assertTrue(icon.getIcon(Status.PASS) != null && !icon.getIcon(Status.PASS).isEmpty()); + } + + @Test + public void testiconColorFailReturnsValue() { + Assert.assertTrue(icon.getIcon(Status.FAIL) != null && !icon.getIcon(Status.FAIL).isEmpty()); + } + + @Test + public void testiconColorFatalReturnsValue() { + Assert.assertTrue(icon.getIcon(Status.FATAL) != null && !icon.getIcon(Status.FATAL).isEmpty()); + } + + @Test + public void testiconColorErrorReturnsValue() { + Assert.assertTrue(icon.getIcon(Status.ERROR) != null && !icon.getIcon(Status.ERROR).isEmpty()); + } + + @Test + public void testiconColorSkipReturnsValue() { + Assert.assertTrue(icon.getIcon(Status.SKIP) != null && !icon.getIcon(Status.SKIP).isEmpty()); + } + + @Test + public void testiconColorInfoReturnsValue() { + Assert.assertTrue(icon.getIcon(Status.INFO) != null && !icon.getIcon(Status.INFO).isEmpty()); + } + + @Test + public void testiconColorDebugReturnsValue() { + Assert.assertTrue(icon.getIcon(Status.DEBUG) != null && !icon.getIcon(Status.DEBUG).isEmpty()); + } + + @Test + public void testiconColorWarningReturnsValue() { + Assert.assertTrue(icon.getIcon(Status.WARNING) != null && !icon.getIcon(Status.WARNING).isEmpty()); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsTWBSColorOverrideTest.java b/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsTWBSColorOverrideTest.java new file mode 100644 index 0000000..8e9107c --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsTWBSColorOverrideTest.java @@ -0,0 +1,18 @@ +package com.aventstack.extentreports.viewdefs; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Status; + +public class ViewDefsTWBSColorOverrideTest { + + @Test + public void testTWBSColorPassReturnsValue() { + TWBSColor twbs = new TWBSColor(); + String color = "green"; + twbs.override(Status.PASS, color); + Assert.assertTrue(twbs.getColor(Status.PASS).equals(color)); + } + +} diff --git a/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsTWBSColorTest.java b/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsTWBSColorTest.java new file mode 100644 index 0000000..9922f9e --- /dev/null +++ b/src/test/java/com/aventstack/extentreports/viewdefs/ViewDefsTWBSColorTest.java @@ -0,0 +1,92 @@ +package com.aventstack.extentreports.viewdefs; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.aventstack.extentreports.Status; + +public class ViewDefsTWBSColorTest { + + private TWBSColor twbs = new TWBSColor(); + + @Test + public void testTWBSColorPassReturnsValue() { + Assert.assertTrue(twbs.getColor(Status.PASS) != null && !twbs.getColor(Status.PASS).isEmpty()); + } + + @Test + public void testTWBSColorFailReturnsValue() { + Assert.assertTrue(twbs.getColor(Status.FAIL) != null && !twbs.getColor(Status.FAIL).isEmpty()); + } + + @Test + public void testTWBSColorFatalReturnsValue() { + Assert.assertTrue(twbs.getColor(Status.FATAL) != null && !twbs.getColor(Status.FATAL).isEmpty()); + } + + @Test + public void testTWBSColorErrorReturnsValue() { + Assert.assertTrue(twbs.getColor(Status.ERROR) != null && !twbs.getColor(Status.ERROR).isEmpty()); + } + + @Test + public void testTWBSColorSkipReturnsValue() { + Assert.assertTrue(twbs.getColor(Status.SKIP) != null && !twbs.getColor(Status.SKIP).isEmpty()); + } + + @Test + public void testTWBSColorInfoReturnsValue() { + Assert.assertTrue(twbs.getColor(Status.INFO) != null && !twbs.getColor(Status.INFO).isEmpty()); + } + + @Test + public void testTWBSColorDebugReturnsEmpty() { + Assert.assertTrue(twbs.getColor(Status.DEBUG) != null && twbs.getColor(Status.DEBUG).isEmpty()); + } + + @Test + public void testTWBSColorWarningReturnsValue() { + Assert.assertTrue(twbs.getColor(Status.WARNING) != null && !twbs.getColor(Status.WARNING).isEmpty()); + } + + @Test + public void testTWBSBgColorPassReturnsValue() { + Assert.assertTrue(twbs.getBgColor(Status.PASS) != null && !twbs.getBgColor(Status.PASS).isEmpty()); + } + + @Test + public void testTWBSBgColorFailReturnsValue() { + Assert.assertTrue(twbs.getBgColor(Status.FAIL) != null && !twbs.getBgColor(Status.FAIL).isEmpty()); + } + + @Test + public void testTWBSBgColorFatalReturnsValue() { + Assert.assertTrue(twbs.getBgColor(Status.FATAL) != null && !twbs.getBgColor(Status.FATAL).isEmpty()); + } + + @Test + public void testTWBSBgColorErrorReturnsValue() { + Assert.assertTrue(twbs.getBgColor(Status.ERROR) != null && !twbs.getBgColor(Status.ERROR).isEmpty()); + } + + @Test + public void testTWBSBgColorSkipReturnsValue() { + Assert.assertTrue(twbs.getBgColor(Status.SKIP) != null && !twbs.getBgColor(Status.SKIP).isEmpty()); + } + + @Test + public void testTWBSBgColorInfoReturnsValue() { + Assert.assertTrue(twbs.getBgColor(Status.INFO) != null && !twbs.getBgColor(Status.INFO).isEmpty()); + } + + @Test + public void testTWBSBgColorDebugReturnsEmpty() { + Assert.assertTrue(twbs.getBgColor(Status.DEBUG) != null && twbs.getBgColor(Status.DEBUG).isEmpty()); + } + + @Test + public void testTWBSBgColorWarningReturnsValue() { + Assert.assertTrue(twbs.getBgColor(Status.WARNING) != null && !twbs.getBgColor(Status.WARNING).isEmpty()); + } + +} diff --git a/src/test/resources/1.png b/src/test/resources/1.png index 7e537db85a72571942727e0bfc4a21774c9aa8b6..fc16a1333d7a881c2e421008cc0a29946bef037f 100644 GIT binary patch delta 1695 zcmV;Q24MN%7qJZ?iBL{Q4GJ0x0000DNk~Le0000y0000$2m$~A0LgxXpOGOae-6U{ z01m?e$8V@)000I?NklSup7{_;J_Vn70Yv(c{2L(zCq=nM<1yUSyRj=x3_>w%0qVzCzGLji`DgB0#7iH(PL!t)Y#N%dnk(u5kp5HU`oZ~>wC23(_pLM zuRmnfqQbd2EkiCEA#~;1XJ;>8O=fbMZh$FH9F|>&EtgoKNUJ`lj4OfXZ#;4y+=YX) zKwQ)niD=!lh9{BA0GmlY|E4j0N!T(ZqKT%>TzD5;MA%1WyUM|v8x_|< zR!To{Q5Z5LqA|jzofO7#;M2&D+dx=FnyKJet6U=5_uTa-kA!g?44GIb9qt>rbx>MW z7!`I`B%-UO;-9x~`L4rbf5)TlWG$3S;Dpw!oAY41;6D6Wm@$(yvxn##D-gxiB;gd6oWEx?~ z&5=SG#1LMOdI9CEy6vqjc+ch`%ZMvv#Lb8>KSa}2O+)CYqU(USe}Q_+81r2Pa!N1m z7gzL4#qmsApBaem7X#7#Vj#L-^b)7Tv;sLCQackP2LdUGD4HRxEcKwYdT3TbZk{FaB6%Dlw z!pSk5&Lb_MK-CK$f8*C!@iBauLOpTSbJXlf{lo?9+(+8jSrlugIcSAmtG0OCE&R^C zsu=Hzq{@S-MXI5W&tffs!V(X|T*3%4hd4|&^_wOeA?vM=?b+-4#CfFZ;307iY$V{$ zU@HaHDJ^e`x9W;yAwrczGSl$d(s3cxB&qRm?iwfAqOK74J!|u$@V5WY@T(iWv2b@g1@pr zA#(NDP;$Q(f9x#B+^GR%Gac{_roPXwO z^FIn(h9pko#B1jH>)6hM4(>S$4HS$aNP*AL-4*ZgFSPhnT>2ach-7HYn0yB(v+}#m z8MKDp>H;lq#LtUyMZ>#8R;l}3=oJVbBsyGASS40ke}Op7ytJ&Z(Z=F-*6SKdxo2Dk)O%q*^Kl{(t>1)U?neV|x^uNH9X*e?ZZGL)hn2?!|f%AX$ipq0da^!7JM4 zSO!Ab{N%)$^LD1GZb5ni8L6nTXlOd4rVd*jDx8i;q<{yHWQT;&BQS%xi7C@g3A>JF zhi!7B;s}JbSoAo;}XY*O1 ze_GxZMg;dOutz&YTi0uL@I!Y=?<+w^ps}?nKWKO#)#x3}~#&!Ds+qa{0mEcfS2{b!pM7we56K zk5doYHVD!XJD_u6l}%n*gD(@alb6KlbvlW3X7b!@E~r#xnQgO%4?4hLlJ(FUlIA})Pl p$foV3WFWd<3`F;fS5UN~{0n*`&;KTLTND5Q002ovPDHLkV1iQ`F3tb| delta 3033 zcmV;~3nuij4d53ciBL{Q4GJ0x0000DNk~Le0001F0000l2m$~A0Gc28tdSune-KRo z01!<9XN&>h000YhNklqvq!7@#u-Ymqb7#mPia(5ZnFklxJsWci;B~?~ly+9JBj&)z8_}hDdp7#Pg#-IFx6X46eY?$T`>(|xSGYw7P>?oNR6tu6xBTPVRlyDpQLNk}0mv~1zx*09K?NVEs} zg*tiEE?i*EYL45eIWYEje@_v+E{QpW| zkR6^Nt@zeK6Eb}ii+R=7b7wLpCv%6!+ip*OQQ6qT?+^eHMKdx9S*MhLt| z?M{hnbq*32v*z2(;+SUPPZ4BI--g!VEFpl3oyE-*m}7jW*?o{b=RIRkDoZ1*`x1=ox(`xu+c1ve`<#pBI8nuN@jk$|NDaC z5`2pZT@0d5!$5Tkw8ktb`k;24%;G2=9j7R!p4PqB-MTtFvESfN0)xXz=df`sih*K^ zX@T`NIU{@1mTiALdQ`r2MZ1n6)+kMYU$6<2S%DtZ&Q0KrmjmAU%wnUr?-ZKZv+tB? zGv+T^JbV7ae-UHyVv^GERtk-b%NaHj;-o3l0z6nXo{-4carp(vfi+pZ`{QSw^_#Z* z)zE+^Zri@AV(CgKga1AvxJxXG!9t5mPM=UvG`FlA6DV0 zSdY_Z&Bf0sQ)kRh$>GJuDm#$sEaqResS@X(b61zqvq+m(kzyILZ z-)?<0FsDOE1e`+7rOQ{aM^F-yZ&g>neEAYjtf{?y{l-lws4XTjwOxnK$>~{3SFS-m z=hBs{e=FBk!6t00@skRX{QKRz+js58;8;QT?%iL$dTl~#=75}`yTAPBZ?~%J>+4^= zdiCJpLyQSN+xdA~Rxjz1iYOoOir(2Qwt^gqO-|eK`JUIWUw`q{*9Aq>maSZK{pQWH z=gwnAV9ez7?q7ZV&GYBa_wM^HXXwcP{P!p}f8C1JmC*^Q$r)M2(`PMNzUt4%kMYE{ z>o!g=oeQOR|G}NYqCz6$uw-ELsncg60$6;v?%uSSb2^1ajh|R}^ErN_Xi$4c(`KqTI@amN6>xCr`wa$v$1GW3yS@-APw zilww;*X}BeDTf`GKRGf!#WX7^jaMto8s}sdKHqe+__czF0^6s9X%^~XX5mHzS)-N3 zLv*bI1;;QBR2*23>g%)n3L&U7#fL$Ku=iT0XaBXo<4ns;&D9fKk%=< z13#uQQ!=wr_M10vU^z(q`;MVL%nA%nO3&J`c`F{b z@gJW$eCwLtSrsNan??Vu%qtf`*02mfa>*AE8|J%8S`ZO5+Bc@t3{77Nbu_>>GjNPJ5Ap(8)RtbhM_7`}`e zm*2ftzfNJ%u}SH84?KDD^yDw63a3sVF**-x4W~P{E$XqD#fmhyAuApqrT7ZLX>jH0 zwW5+z^c|2hEHpA+^Tk9Fe>JmsnZTP_A|yAd8=kPJ5u?W+J$4*x9xtpj=gyzMaB=Ux z{li9$OX!-px^f-#(`U|g>-mwVOEkW)@TSLGf9C9Y_;JMO-X(f+amoD$59;gxL}BMH zTwGAT1fL!FV(K#>XYaS)Va;B-b`9s(*>e{zT)Lb)HXrr4t}JO5e|9upIQZar-qdvU z+I95Z`q@rywCanAa%(dS;{VAkJO*1MXL#;{^2KYa)>p3IxN=QZVe#~ojO>WmBzEONqO;7tPGL!;sWPC84Jf39t}EjEjvSw_?kv)pve zBMq&WhDIG4O{}j&)TtxEqb$L!LBpRM75_6` z%#vpopP~q|Cd`sm5j>M)4{3^uTNg)^1hWP!{^XeWp9y@gEc_{gtQlr0i-MNP_=-Hy!Ebw_-xERG1W=C%z1P0ps9&jV8Ay69rX)RjR@NVMaaKpiFeWLSMLZHf#_rocKHbysh# z7~=r1Ia<`51L+!S4na{@v&55F4I;=I|CJ;9EgZ*R&EdMHvm9U3YFNH*V$h_6dle&T$wPR+wnk8 bfx-U+Lt#<*Be>Kx00000NkvXXu0mjfN8;mA diff --git a/src/test/resources/html-config.xml b/src/test/resources/html-config.xml new file mode 100644 index 0000000..0ad8c8d --- /dev/null +++ b/src/test/resources/html-config.xml @@ -0,0 +1,49 @@ + + + + + + + dark + + + + UTF-8 + + + + https + + + Extent Framework + + + Build 1 + + + MMM dd, yyyy HH:mm:ss + + + true + false + true + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/logger-config.xml b/src/test/resources/logger-config.xml new file mode 100644 index 0000000..0ad8c8d --- /dev/null +++ b/src/test/resources/logger-config.xml @@ -0,0 +1,49 @@ + + + + + + + dark + + + + UTF-8 + + + + https + + + Extent Framework + + + Build 1 + + + MMM dd, yyyy HH:mm:ss + + + true + false + true + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/logo.png b/src/test/resources/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fc16a1333d7a881c2e421008cc0a29946bef037f GIT binary patch literal 1713 zcmV;i22S~jP)M00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D21ZFlK~!i%?V4$C z6Gs@wcV_nV+Ky}IG9d>AN(-cg()I;XD^+R*yg}+`=tt;hs`|FqJF31y&_j)=dL$x1 zs3GJ|96Pr6nwdVk9#UWNtdrn^SWX?rM(2@yj_AYe+x0zLPyeXg`_3)g6GL5*__S%KPR+g#j&UrCfjy6HR#>BA0GmlY z|E4j0N!T(ZqKT%>TzD5;MA%1WyUM|v8x_|rbx>MW7!`I`B%-UO;-9x~`L4rb$D{6KEtE^( zgx0K^^I*H+KKxmjGKij;5Px=pE8MB>8Mdv$N;EA@)FXyGg2Oj}ACGdMfm+VIs=s#M zS^5wvd`dde8{T?KMVFYXst^h?F@Ok1BBi0&5y(fwi|x?l7Xr^B=Y zIUG_u6C(!#DTpYVA*?Pyl^Q^Dk-lLQ@kA3Hn`uQgL*1Y_a9M39s>s^X7_^YdVQqMZ zq(_mS5QAOdjMaAijU`%IW3`ePlpz%jwGG0_F`UjLEulcw3m@axSn)A@m_j{q)pOMB zN&UnH>)c1$*jW^7ra5SZUaPiv+b#Ugy{Z`RiloYesYR-xj?ZE(fx;3G!(74$GKV-! zHuak(8zJkhkL}s(`owvp>fj-94s0ag&R{DA)hR7+inr>DWFbP8L^9Lx+R||$)g-C$ zaPAw>MqW3juV|yEg&iM+;Lg~WZwga}EP5bwf zAqOK74J!|u$@V5WY@T(iWv2b@g1@prA#(NDP;$Q(>@3IJsR3j&9ql2s=|(I!@EOPsry{$6$l?BI$Td! zC01I2Kq&><@xTT5;DHz4sbY(6<3Q0boK zV}`Cl-62j0I(O!fo2l>L{r;=DTi-a<)_rnhWpHwoB**uQFi7L9yc#A~9_u-x#665e zYUa|_%U9k`SO&NRhN7?O0AR4~AmBe*Dm${Z@}ycS2L6BjFVwWqBV&6Mnn*B0-$2oR zL)hn2?!|f%AX$ipq0da^!7JM4SO!Ab{N%)$^LD1GZb5ni8L6nTXlOd4rVd*jDx8i; zq<{yHWQT;&BQS%xi7C@g3A>JFhi!7B;s}JbSoAo;}XY*O1THX~#1otbjNQKb|3*c0^vST0-T`leWcI#`WQtldb zJF~s=baC!ZX>(235!@~DS`os9u Date: Fri, 7 Dec 2018 16:10:16 -0500 Subject: [PATCH 09/11] Update pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3092335..111f86c 100644 --- a/pom.xml +++ b/pom.xml @@ -116,7 +116,7 @@ org.jacoco jacoco-maven-plugin - 0.7.9 + 0.8.2 From 066edf7f523f037a5fd41dcf67baaadf13370122 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Fri, 7 Dec 2018 18:15:52 -0500 Subject: [PATCH 10/11] extent-framework/extentreports-testng-adapter#1 useManualTimeConfiguration fix --- .../extentreports/ExtentObservable.java | 13 ++++++++---- .../extentreports/ReportAggregates.java | 21 ++++++++++++++++++- .../ReportAggregatesBuilder.java | 15 +++++++++++++ .../aventstack/extentreports/model/Test.java | 16 ++++++-------- .../reporter/AbstractReporter.java | 3 ++- 5 files changed, 52 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/aventstack/extentreports/ExtentObservable.java b/src/main/java/com/aventstack/extentreports/ExtentObservable.java index 255df5f..266dbb5 100644 --- a/src/main/java/com/aventstack/extentreports/ExtentObservable.java +++ b/src/main/java/com/aventstack/extentreports/ExtentObservable.java @@ -439,11 +439,12 @@ private synchronized void collectRunInfo() { return; reportEndDate = Calendar.getInstance().getTime(); - testList.forEach(this::endTest); refreshReportEntities(); for (Test test : testList) { + endTest(test); + test.setUseManualConfiguration(getAllowManualConfig()); if (test.hasCategory()) { test.getCategoryContext().getAll() .forEach(x -> categoryContext.setAttributeContext((Category)x, test)); @@ -461,8 +462,10 @@ private synchronized void collectRunInfo() { .forEach(x -> exceptionContextBuilder.setExceptionContext(x, test)); } if (test.hasChildren()) { - test.getNodeContext().getAll() - .forEach(this::copyNodeAttributeAndRunTimeInfoToAttributeContexts); + for (Test node : test.getNodeContext().getAll()) { + copyNodeAttributeAndRunTimeInfoToAttributeContexts(node); + node.setUseManualConfiguration(getAllowManualConfig()); + } } } @@ -474,7 +477,7 @@ private synchronized void collectRunInfo() { * the timestamps assigned to tests */ private void updateReportStartTimeForManualConfigurationSetting() { - if (usesManualConfiguration && !testList.isEmpty()) { + if (getAllowManualConfig() && !testList.isEmpty()) { Date minDate = testList.stream() .map(t -> t.getStartTime()) .min(Date::compareTo) @@ -534,6 +537,8 @@ private synchronized void notifyReporters() { .setSystemAttributeContext(systemAttributeContext) .setTestList(testList) .setTestRunnerLogs(testRunnerLogs) + .setStartTime(reportStartDate) + .setEndTime(reportEndDate) .build(); reporterList.forEach(x -> x.setAnalysisStrategy(strategy)); reporterList.forEach(x -> x.flush(reportAggregates)); diff --git a/src/main/java/com/aventstack/extentreports/ReportAggregates.java b/src/main/java/com/aventstack/extentreports/ReportAggregates.java index 94b9219..de16347 100644 --- a/src/main/java/com/aventstack/extentreports/ReportAggregates.java +++ b/src/main/java/com/aventstack/extentreports/ReportAggregates.java @@ -1,5 +1,6 @@ package com.aventstack.extentreports; +import java.util.Date; import java.util.List; import com.aventstack.extentreports.model.Author; @@ -22,8 +23,26 @@ public class ReportAggregates { private SystemAttributeContext systemAttributeContext; private ReportStatusStats reportStatusStats; private List statusList; + private Date startTime; + private Date endTime; + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } - public Status getStatus() { + public Status getStatus() { return Status.getHighestStatus(getStatusList()); } diff --git a/src/main/java/com/aventstack/extentreports/ReportAggregatesBuilder.java b/src/main/java/com/aventstack/extentreports/ReportAggregatesBuilder.java index 4b9ae78..d2e7084 100644 --- a/src/main/java/com/aventstack/extentreports/ReportAggregatesBuilder.java +++ b/src/main/java/com/aventstack/extentreports/ReportAggregatesBuilder.java @@ -1,5 +1,6 @@ package com.aventstack.extentreports; +import java.util.Date; import java.util.List; import com.aventstack.extentreports.model.Author; @@ -22,6 +23,8 @@ public class ReportAggregatesBuilder { private SystemAttributeContext systemAttributeContext; private ReportStatusStats reportStatusStats; private List statusList; + private Date startTime; + private Date endTime; public ReportAggregates build() { ReportAggregates aggregates = new ReportAggregates(); @@ -34,6 +37,8 @@ public ReportAggregates build() { aggregates.setSystemAttributeContext(systemAttributeContext); aggregates.setReportStatusStats(reportStatusStats); aggregates.setStatusList(statusList); + aggregates.setStartTime(startTime); + aggregates.setEndTime(endTime); return aggregates; } @@ -81,5 +86,15 @@ public ReportAggregatesBuilder setStatusList(List statusList) { this.statusList = statusList; return this; } + + public ReportAggregatesBuilder setStartTime(Date startTime) { + this.startTime = startTime; + return this; + } + + public ReportAggregatesBuilder setEndTime(Date endTime) { + this.endTime = endTime; + return this; + } } diff --git a/src/main/java/com/aventstack/extentreports/model/Test.java b/src/main/java/com/aventstack/extentreports/model/Test.java index 9b79e6b..7ded9fb 100644 --- a/src/main/java/com/aventstack/extentreports/model/Test.java +++ b/src/main/java/com/aventstack/extentreports/model/Test.java @@ -216,16 +216,12 @@ public void setEndTime(Date endTime) { } private void setEndTimeFromChildren() { - if (hasLog()) { - int logSize = getLogContext().size(); - Date lastLogEndTime = getLogContext().get(logSize - 1).getTimestamp(); - setEndTime(lastLogEndTime); - } - if (hasChildren()) { - int nodeSize = getNodeContext().size(); - Date lastNodeEndTime = getNodeContext().get(nodeSize - 1).getEndTime(); - setEndTime(lastNodeEndTime); + setStartTime(getNodeContext().getFirst().getStartTime()); + setEndTime(getNodeContext().getLast().getEndTime()); + } else if (hasLog()) { + Date lastLogEndTime = getLogContext().getLast().getTimestamp(); + setEndTime(lastLogEndTime); } } @@ -286,7 +282,7 @@ public void end() { ? Status.PASS : status; - if (!usesManualConfiguration || endTime == null) + if (usesManualConfiguration || endTime == null) setEndTimeFromChildren(); } diff --git a/src/main/java/com/aventstack/extentreports/reporter/AbstractReporter.java b/src/main/java/com/aventstack/extentreports/reporter/AbstractReporter.java index 0b38ce7..36332b7 100644 --- a/src/main/java/com/aventstack/extentreports/reporter/AbstractReporter.java +++ b/src/main/java/com/aventstack/extentreports/reporter/AbstractReporter.java @@ -23,7 +23,8 @@ public abstract class AbstractReporter private AnalysisStrategy strategy = AnalysisStrategy.TEST; public void flush(ReportAggregates reportAggregates) { - this.endTime = Calendar.getInstance().getTime(); + this.startTime = reportAggregates.getStartTime(); + this.endTime = reportAggregates.getEndTime(); this.statusList = reportAggregates.getStatusList(); } From 41ed7797822672802133940a83f81f62095646b4 Mon Sep 17 00:00:00 2001 From: anshooarora Date: Wed, 12 Dec 2018 13:25:13 -0500 Subject: [PATCH 11/11] release 4.0.6 --- Readme.md | 4 ++-- pom-nexus.xml | 4 ++-- pom.xml | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Readme.md b/Readme.md index c39b365..cb37901 100644 --- a/Readme.md +++ b/Readme.md @@ -7,7 +7,7 @@ This version is Java8 only. -[Klov](https://github.com/extent-framework/klov-server) report server 0.2.0 is supported with version 4.0.0+. +[Klov](https://github.com/extent-framework/klov-server) report server 0.2+ is supported with version 4.0.0+. ### Documentation @@ -15,4 +15,4 @@ View [extentreports.com](http://extentreports.com/docs/versions/4/java/) for com ### License -Extent Framework Community is BSD-3 licensed. \ No newline at end of file +BSD-3 license \ No newline at end of file diff --git a/pom-nexus.xml b/pom-nexus.xml index ded61ea..692088d 100644 --- a/pom-nexus.xml +++ b/pom-nexus.xml @@ -4,7 +4,7 @@ com.aventstack extentreports - 4.0.5 + 4.0.6 extentreports www.extentreports.com @@ -27,7 +27,7 @@ Anshoo Arora https://github.com/anshooarora - anshoo.arora + anshooarora Owner diff --git a/pom.xml b/pom.xml index 111f86c..472dc8a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.aventstack extentreports - 4.0.5 + 4.0.6 extentreports www.extentreports.com @@ -27,7 +27,7 @@ Anshoo Arora https://github.com/anshooarora - anshoo.arora + anshooarora Owner @@ -116,7 +116,7 @@ org.jacoco jacoco-maven-plugin - 0.8.2 + 0.7.9