Skip to content

Commit

Permalink
You can now select individual example tables as well as scenarios to …
Browse files Browse the repository at this point in the history
…display in the feature summary
  • Loading branch information
wakaleo committed Oct 11, 2018
1 parent c45b44c commit 0caac23
Show file tree
Hide file tree
Showing 10 changed files with 127 additions and 19 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package net.thucydides.core.requirements.model.cucumber;

public class BlankRowResultIcon implements RowResultIcon {
@Override
public String resultToken() {
return " ";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ public class ExampleRowResultIcon implements RowResultIcon {
private int exampleRow = 0;
private final String fullScenarioName;

public ExampleRowResultIcon(String fullScenarioName, int exampleTableNumber) {
this.fullScenarioName = fullScenarioName;
public ExampleRowResultIcon(String featureName, String scenarioName, int exampleTableNumber) {
this.fullScenarioName = featureName + "!" + scenarioName;
this.exampleTableNumber = exampleTableNumber;
}

Expand All @@ -23,4 +23,8 @@ public ExampleRowResultIcon nextExampleTable() {
public SummaryRowResultIcon summaryIcon() {
return new SummaryRowResultIcon(fullScenarioName);
}

public RowResultIcon noIcon() {
return new BlankRowResultIcon();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ public ExampleTableInMarkdown(Feature feature, String scenarioReport, ScenarioDe

public String renderedFormOf(Examples exampleTable, int exampleRow, ScenarioDisplayOption displayOption) {

ExampleRowResultIcon exampleRowCounter = new ExampleRowResultIcon(feature.getName()
+ "!"
+ scenarioDefinition.getName(), exampleRow);
ExampleRowResultIcon exampleRowCounter = new ExampleRowResultIcon(feature.getName(),scenarioDefinition.getName(), exampleRow);

StringBuilder renderedExampleTable = new StringBuilder();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public static String renderedTable(Examples exampleTable, ExampleRowResultIcon e

final Map<Integer,Integer> maxColumnWidths = maxColumnWidthForColumnsIn(exampleTable);

String headings = cellRow(exampleTable.getTableHeader().getCells(), maxColumnWidths, exampleRowIcon.summaryIcon())
String headings = cellRow(exampleTable.getTableHeader().getCells(), maxColumnWidths, exampleRowIcon.noIcon())
+ headerSeparator(maxColumnWidths);

String body = exampleTable.getTableBody().stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,10 @@ public List<ScenarioOutcome> forOutcomesIn(RequirementsOutcomes requirementsOutc
}
}

private ScenarioOutcome scenarioOutcomeFrom(Feature feature, ScenarioDefinition scenarioDefinition, TestOutcomes testOutcomes) {
private ScenarioOutcome scenarioOutcomeFrom(Feature feature,
ScenarioDefinition scenarioDefinition,
TestOutcomes testOutcomes) {

Optional<? extends TestOutcome> outcome = testOutcomes.testOutcomeWithName(scenarioDefinition.getName());
TestResult testResult = (outcome.isPresent() ? outcome.get().getResult() : TestResult.UNDEFINED);
ZonedDateTime startTime = outcome.map(TestOutcome::getStartTime).orElse(null);
Expand All @@ -68,7 +71,9 @@ private ScenarioOutcome scenarioOutcomeFrom(Feature feature, ScenarioDefinition
.collect(Collectors.toList());

List<String> renderedExamples = (scenarioDefinition instanceof ScenarioOutline) ?
RenderCucumber.examples(((ScenarioOutline) scenarioDefinition).getExamples()) : Collections.EMPTY_LIST;
RenderCucumber.examples(((ScenarioOutline) scenarioDefinition).getExamples(),
feature.getName(),
scenarioDefinition.getName()) : Collections.EMPTY_LIST;

int exampleCount = (scenarioDefinition instanceof ScenarioOutline) ?
((ScenarioOutline) scenarioDefinition).getExamples().stream().mapToInt(examples -> examples.getTableBody().size()).sum()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package net.thucydides.core.requirements.reports.cucumber;

import gherkin.ast.*;
import net.thucydides.core.requirements.model.cucumber.ExampleRowResultIcon;
import net.thucydides.core.requirements.reports.RequirementsOutcomes;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

Expand All @@ -19,10 +22,46 @@ private static String renderedArgument(Node argument) {
return "";
}

public static List<String> examples(List<Examples> examples) {
return examples.stream().map(RenderCucumber::renderedExamples).collect(Collectors.toList());
public static List<String> examples(List<Examples> examples,
String featureName,
String scenarioName) {


List<String> renderedExamples = new ArrayList<>();
int exampleTableNumber = 0;
for(Examples exampleTable : examples) {
renderedExamples.add(renderedExamples(exampleTable, featureName, scenarioName, exampleTableNumber++));
}
return renderedExamples;
}

private static String renderedExamples(Examples examples, String featureName, String scenarioName, int exampleTableNumber) {

ExampleRowResultIcon exampleRowResultIcon = new ExampleRowResultIcon(featureName, scenarioName, exampleTableNumber);

StringBuffer renderedTable = new StringBuffer();
renderedTable.append(examples.getKeyword()).append(": ");
if (examples.getName() != null) {
renderedTable.append(examples.getName());
}
renderedTable.append(" ").append(System.lineSeparator());

if (examples.getDescription() != null) {
renderedTable.append(examples.getDescription()).append(" ").append(System.lineSeparator());
}

renderedTable.append(System.lineSeparator());
addRow(renderedTable, examples.getTableHeader().getCells()," ");
addSeparatorCells(renderedTable, examples.getTableHeader().getCells().size());

for(TableRow row : examples.getTableBody()) {
addRow(renderedTable, row.getCells(), exampleRowResultIcon.resultToken());
}

return renderedTable.toString();
}


private static String renderedExamples(Examples examples) {
StringBuffer renderedTable = new StringBuffer();
renderedTable.append(examples.getKeyword()).append(": ");
Expand All @@ -36,11 +75,11 @@ private static String renderedExamples(Examples examples) {
}

renderedTable.append(System.lineSeparator());
addRow(renderedTable, examples.getTableHeader().getCells());
addRow(renderedTable, examples.getTableHeader().getCells(), null);
addSeparatorCells(renderedTable, examples.getTableHeader().getCells().size());

for(TableRow row : examples.getTableBody()) {
addRow(renderedTable, row.getCells());
addRow(renderedTable, row.getCells(),null);
}

return renderedTable.toString();
Expand All @@ -66,12 +105,18 @@ private static void addSeparatorCells(StringBuffer renderedTable, int columnCoun
}
renderedTable.append(System.lineSeparator());
}

private static void addRow(StringBuffer renderedTable, List<TableCell> cells) {
addRow(renderedTable, cells, null);
}

private static void addRow(StringBuffer renderedTable, List<TableCell> cells, String statusToken) {
renderedTable.append("|");
for(TableCell cell : cells) {
renderedTable.append(cell.getValue()).append(" |");
}
if (statusToken != null) {
renderedTable.append(statusToken + " |");
}
renderedTable.append(System.lineSeparator());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@
</p>
</#if>
<div class="example-table">
<div class="example-table test-report">
<table class="table">
<thead>
<tr>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@
</#list>
<div class="examples">
<#list scenario.examples as example>
<p>${formatter.renderTableDescription(example)}</p>
<p>${formatter.renderTableDescription(example, requirements)}</p>
</#list>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2131,6 +2131,24 @@ td.indented-error-category i {
}


.test-report table {
border: 0.75px solid dimgrey;
min-width: 98%;
}
.test-report th {
font-weight: bold;
background-color: white;
}

.test-report th:first-child {
width: 1em;
}

.test-report td.test-SUCCESS {
background-color: white;
}




.example-table-in-scenario {
Expand Down Expand Up @@ -2160,6 +2178,36 @@ td.indented-error-category i {
color: grey;
}



.example-table-in-summary th:last-child {
width: 0.5em;
}

.example-table-in-summary th:last-child {
text-align: center;
align-items: center;
align-content: center;
padding-left: 1em;

}

.example-table-in-scenario th:last-child {
width: 0.5em;
border-right: solid white 1px;
border-top: solid white 1px;
border-bottom: solid white 1px;
}

.example-table-in-scenario td:last-child {
padding-left: 0.5em;
/* text-align: center; */
border-right: solid white 1px;
border-top: solid white 1px;
border-bottom: solid white 1px;
}


.scenario-description {
padding-left: 1em;
}
Original file line number Diff line number Diff line change
Expand Up @@ -176,15 +176,15 @@ private String convertTablesToMarkdown(String text) {
return MarkdownTables.convertTablesIn(text);
}


public String renderDescriptionWithEmbeddedResults(final String text, RequirementsOutcomes requirementsOutcomes) {

String textWithResults = textWithEmbeddedExampleResults(textWithEmbeddedResults(text, requirementsOutcomes), requirementsOutcomes);
return wrapTablesInDivs(renderDescription(textWithResults),"example-table");
return wrapTablesInDivs(renderDescription(textWithResults),"example-table example-table-in-summary");
}

public String renderTableDescription(final String text) {
return wrapTablesInDivs(renderDescription(text), "example-table-in-scenario");
public String renderTableDescription(final String text, RequirementsOutcomes requirementsOutcomes) {
String textWithResults = textWithEmbeddedExampleResults(textWithEmbeddedResults(text, requirementsOutcomes), requirementsOutcomes);
return wrapTablesInDivs(renderDescription(textWithResults),"example-table-in-scenario");
}

private final Pattern RESULT_TOKEN = Pattern.compile("\\{result:(.*)!(.*)\\}'?");
Expand Down

0 comments on commit 0caac23

Please sign in to comment.