
freemarker.home.ftl Maven / Gradle / Ivy
Serenity Reports
<#include "libraries/favicon.ftl">
<#include "libraries/common.ftl">
<#include "libraries/jquery-ui.ftl">
<#include "libraries/datatables.ftl">
<#include "components/tag-list.ftl">
<#include "components/test-outcomes.ftl">
<#include "components/result-chart.ftl">
<#include "components/result-summary.ftl">
<#include "components/duration-chart.ftl">
<#include "components/functional-coverage-chart.ftl">
<#include "components/tag_cloud.ftl">
<#include "components/result-chart.ftl">
<#include "components/key-statistics.ftl">
<#include "components/key-statistics-two-col.ftl">
<#assign manualTests = testOutcomes.count("manual")>
<#assign automatedTests = testOutcomes.count("automated")>
<#assign totalTests = testOutcomes.count("automated")>
<#assign testResultData = resultCounts.allResultValuesFor("success","pending","ignored","skipped","aborted","failure","error","compromised") >
<#assign testAutomatedResultData = resultCounts.automatedResultValuesFor("success","pending","ignored","skipped","aborted","failure","error","compromised") >
<#assign testManualResultData = resultCounts.manualResultValuesFor("success","pending","ignored","skipped","aborted","failure","error","compromised") >
<#assign testLabels = resultCounts.percentageLabelsByTypeFor("success","pending","ignored","skipped","aborted","failure","error","compromised") >
<#assign graphType="automated-and-manual-results"/>
<#assign successfulManualTests = (manualTests.withResult("SUCCESS") > 0)>
<#assign pendingManualTests = (manualTests.withResult("PENDING") > 0)>
<#assign ignoredManualTests = (manualTests.withResult("IGNORED") > 0)>
<#assign abortedManualTests = (manualTests.withResult("ABORTED") > 0)>
<#assign failingManualTests = (manualTests.withResult("FAILURE") > 0)>
<#assign tagsTitle = 'Related Tags' >
<#if (testOutcomes.label == '')>
<#assign resultsContext = ''>
<#assign pageTitle = 'Test Results: All Tests' >
<#else>
<#assign resultsContext = '> ' + testOutcomes.label>
<#if (currentTagType! != '')>
<#assign pageTitle = " " + inflection.of(currentTagType!"").asATitle() + ': ' + tagInflector.ofTag(currentTagType!"", testOutcomes.label).toFinalView() >
<#else>
<#assign pageTitle = inflection.of(testOutcomes.label).asATitle() >
#if>
#if>
<#---->
<#if (customFields?has_content) && (customFields?size > 0) >
<#list customFields as customField>
${customField}
#list>
<#list customFieldValues as customFieldValue>
${customFieldValue}
#list>
#if>
<#include "menu.ftl">
<@main_menu selected="home" />
${pageTitle}
<#assign scenarioLabel = inflection.of(testOutcomes.totalTestScenarios).times("scenario").inPluralForm().toString() >
${testOutcomes.testCaseCount} ${testOutcomes.resultTypeLabel}
<#if (csvReport! != '')> |
#if>
<#assign successReport = reportName.withPrefix(currentTag).forTestResult("success") >
<#assign brokenReport = reportName.withPrefix(currentTag).forTestResult("broken") >
<#assign failureReport = reportName.withPrefix(currentTag).forTestResult("failure") >
<#assign errorReport = reportName.withPrefix(currentTag).forTestResult("error") >
<#assign compromisedReport = reportName.withPrefix(currentTag).forTestResult("compromised") >
<#assign pendingReport = reportName.withPrefix(currentTag).forTestResult("pending") >
<#assign skippedReport = reportName.withPrefix(currentTag).forTestResult("skipped") >
<#assign abortedReport = reportName.withPrefix(currentTag).forTestResult("aborted") >
<#assign ignoredReport = reportName.withPrefix(currentTag).forTestResult("ignored") >
<#assign totalCount = testOutcomes.totalScenarios.total >
<#assign successCount = testOutcomes.totalScenarios.withResult("success") >
<#assign pendingCount = testOutcomes.totalScenarios.withResult("pending") >
<#assign ignoredCount = testOutcomes.totalScenarios.withResult("ignored") >
<#assign skippedCount = testOutcomes.totalScenarios.withResult("skipped") >
<#assign abortedCount = testOutcomes.totalScenarios.withResult("aborted") >
<#assign failureCount = testOutcomes.totalScenarios.withResult("failure") >
<#assign errorCount = testOutcomes.totalScenarios.withResult("error") >
<#assign brokenCount = failureCount + errorCount >
<#assign compromisedCount = testOutcomes.totalScenarios.withResult("compromised") >
<#assign badTestCount = failureCount + errorCount + compromisedCount>
<#if testOutcomes.haveFlags()>
|
<#list testOutcomes.flags as flag>
<#assign flagTitle = inflection.of(flag.message).inPluralForm().asATitle() >
<#assign flagTag = "flag_${inflection.of(flag.message).asATitle()}" >
<#assign flagReport = reportName.forTag(flagTag) >
<#assign flagCount = testOutcomes.flagCountFor(flag)>
${flagTitle} (${flagCount})
#list>
#if>
<#if reportDurations >
<#assign chartClassStyle = "col-lg-4 col-md-6 col-sm-9" >
<#else>
<#assign chartClassStyle = "col-lg-6 col-md-6 col-sm-12" >
#if>
Overview
<#if testOutcomes.total != 0>
#if>
Test Outcomes
<#if reportDurations >
Test Performance
#if>
<#if coverage?has_content>
<#assign featureType = inflection.of(coverage[0].tagType).inPluralForm().asATitle()/>
Functional
Coverage Overview
${featureType}
#if>
<@key_statistics testOutcomes=testOutcomes />
<#if coverage?has_content>
Functional Coverage Details
<#list coverage as tagCoverageByType>
<#if tagCoverageByType.tagCoverage?has_content>
<#if tagCoverageByType.tagCoverage?size <= 10>
<#assign coverageTableClass="feature-coverage-table">
<#else>
<#assign coverageTableClass="feature-coverage-table-with-pagination">
#if>
<#assign sectionTitle = inflection.of(tagCoverageByType.tagType).inPluralForm().asATitle() >
${inflection.of(tagCoverageByType.tagType).inPluralForm().asATitle()}
${formatter.humanReadableFormOf(tagCoverageByType.tagType)}
Scenarios
StepsText
Test Cases
% Pass
Result
Coverage
<#assign tagCoverageEntries = tagCoverageByType.tagCoverage />
<#list tagCoverageEntries as tagCoverage>
<#if (!hideEmptyRequirements || tagCoverage.testCount != 0)>
<#if (!tagCoverageByType.featureNamesAreUnique && tagCoverage.parentName?has_content) >
<#assign displayedTagName = formatter.breadcrumbFormat(tagCoverage.parentName, tagCoverage.tagName) />
<#else>
<#assign displayedTagName = tagCoverage.tagName />
#if>
<#if tagCoverage.testCount = 0>
${displayedTagName}
<#else>
${displayedTagName}
#if>
${tagCoverage.scenarioCount}
${tagCoverage.allStepsText}
${tagCoverage.testCount}
${tagCoverage.successRate}
<#if tagCoverage.testCount = 0>
<#else>
${tagCoverage.resultIcon}
#if>
<#list tagCoverage.coverageSegments as coverageSegment>
#list>
#if>
#list>
#if>
#list>
#if>
<#if badTestCount != 0>
Test Failure Overview
Most Frequent Failures
<#list frequentFailures as frequentFailure>
${frequentFailure.resultIcon} ${frequentFailure.name}
${frequentFailure.count}
#list>
Most Unstable Features
<#list unstableFeatures as unstableFeature>
${unstableFeature.name}
${unstableFeature.failurePercentage}%
#list>
#if>
<@tag_cloud />
<@key_statistics_two_columns testOutcomes=testOutcomes />
Automated Scenarios
<#if (automatedTestCases?has_content)>
${leafRequirementType}
Scenario
Context
Steps
StepsText
Started
Total Duration
Result
<#list automatedTestCases as scenario>
<#assign outcome_icon = formatter.resultIcon().forResult(scenario.result) />
<#assign context_icon = formatter.contextIcon().forOutcome(scenario) />
<#assign context_label = formatter.contextIcon().labelForOutcome(scenario) />
<#if scenario.parentName?has_content>
${scenario.parentName}
#if>
<#if (scenario.hasExamples() && scenario.getExampleOutcomes()?has_content)>
${scenario.title}
<#list scenario.getResultCounts() as resultCount>
<#assign outcome_icon = formatter.resultIcon().forResult(resultCount.result) />
${outcome_icon} ${resultCount.numberOfTestCases}
#list>
<#else>
${scenario.title}
#if>
<#if (scenario.externalLink)?? && (scenario.externalLink.url)??>
#if>
${context_icon}
${scenario.stepCount}
${scenario.allStepsText}
${scenario.formattedStartTime}
${scenario.formattedDuration}
${outcome_icon}
#list>
<#else>
No automated tests were executed
#if>
Manual Tests
<#if (manualTestCases?has_content)>
${leafRequirementType}
Scenario
Context
Steps
StepsText
Result
<#list manualTestCases as scenario>
<#assign outcome_icon = formatter.resultIcon().forResult(scenario.result) />
<#assign context_icon = formatter.contextIcon().forOutcome(scenario) />
<#assign context_label = formatter.contextIcon().labelForOutcome(scenario) />
<#if (scenario.hasExamples() && scenario.getExampleOutcomes()?has_content)>
<#list scenario.getExampleOutcomes() as exampleOutcome>
<#assign example_outcome_icon = formatter.resultIcon().forResult(exampleOutcome.result) />
<#if scenario.parentName?has_content>
${scenario.parentName}
#if>
${exampleOutcome.title}
<#if exampleOutcome.hasSubtitle() >
${exampleOutcome.subtitle}
#if>
${exampleOutcome.stepCount}
${exampleOutcome.allStepsText}
${example_outcome_icon}
#if>
<#if (scenario.externalLink)?? && (scenario.externalLink.url)??>
#list>
<#else>
<#if scenario.parentName?has_content>
${scenario.parentName}
#if>
${scenario.title}
${scenario.stepCount}
${scenario.allStepsText}
${outcome_icon}
#if>
<#if (scenario.externalLink)?? && (scenario.externalLink.url)??>
#if>
#list>
<#else>
No manual tests were recorded
#if>
<@tag_cloud />
<#if evidence?has_content>
Evidence
Scenario
Title
Details
<#list evidence as evidenceRecord>
${evidenceRecord.scenario}
${evidenceRecord.title}
${evidenceRecord.detailsLink}
#list>
#if>
Serenity BDD version ${serenityVersionNumber!"SNAPSHOT-BUILD"}
<@result_chart id='resultChart' />
<@result_summary id='severityChart' />
<@duration_chart id='durationChart' />
<#if coverage?has_content>
<@coverage_chart id='coverageChart' feature=coverage[0] />
#if>
© 2015 - 2025 Weber Informatics LLC | Privacy Policy