diff --git a/CSF.Screenplay.JsonToHtmlReport.Template/src/css/scenarioList.css b/CSF.Screenplay.JsonToHtmlReport.Template/src/css/scenarioList.css index 5cbfdcfa..8c543a89 100644 --- a/CSF.Screenplay.JsonToHtmlReport.Template/src/css/scenarioList.css +++ b/CSF.Screenplay.JsonToHtmlReport.Template/src/css/scenarioList.css @@ -9,6 +9,9 @@ padding: 1em; list-style: none; } + #featureList > li.Failures { + background: linear-gradient(155deg,rgba(209, 159, 159, 1) 0%, rgba(255, 255, 255, 1) 2rem); + } #featureList > li:first-child { margin-top: 0; border-top-width: 1px; @@ -34,6 +37,9 @@ .scenarioList > li > h4 { cursor: pointer; } + .scenarioList > li.Failed > h4 { + color: #990000; + } .scenarioList > li > h4::before { content: '▼'; display: inline-block; diff --git a/CSF.Screenplay.JsonToHtmlReport.Template/src/js/ReportWriter/FeatureElementCreator.js b/CSF.Screenplay.JsonToHtmlReport.Template/src/js/ReportWriter/FeatureElementCreator.js index 83883a7f..18b8e8d7 100644 --- a/CSF.Screenplay.JsonToHtmlReport.Template/src/js/ReportWriter/FeatureElementCreator.js +++ b/CSF.Screenplay.JsonToHtmlReport.Template/src/js/ReportWriter/FeatureElementCreator.js @@ -9,6 +9,9 @@ export class FeatureElementCreator { createFeatureElement(feature) { const featureElement = this.featureTemplate.content.cloneNode(true); + const hasFailures = feature.scenarios.some(x => x.performance.Outcome == 'Failed'); + + if(hasFailures) featureElement.firstElementChild.classList.add('Failures'); featureElement.querySelector('.featureName').textContent = feature.feature ? feature.feature.Name diff --git a/CSF.Screenplay.JsonToHtmlReport.Template/src/js/ReportWriter/ScenarioElementCreator.js b/CSF.Screenplay.JsonToHtmlReport.Template/src/js/ReportWriter/ScenarioElementCreator.js index bc1661c6..5564409b 100644 --- a/CSF.Screenplay.JsonToHtmlReport.Template/src/js/ReportWriter/ScenarioElementCreator.js +++ b/CSF.Screenplay.JsonToHtmlReport.Template/src/js/ReportWriter/ScenarioElementCreator.js @@ -11,6 +11,9 @@ export class ScenarioElementCreator { createScenarioElement(scenario) { const scenarioElement = this.scenarioTemplate.content.cloneNode(true); + if(scenario.performance.Outcome == 'Failed') + scenarioElement.firstElementChild.classList.add('Failed'); + scenarioElement.querySelector('.scenarioName').textContent = scenario.scenario.Name; scenarioElement.querySelector('.scenarioName').addEventListener('click', ev => ev.currentTarget.parentElement.classList.toggle('collapsed'));