diff --git a/dotnet/Cucumber.HtmlFormatter/MessagesToHtmlWriter.cs b/dotnet/Cucumber.HtmlFormatter/MessagesToHtmlWriter.cs index bb3a8e3f..1cd26ecd 100644 --- a/dotnet/Cucumber.HtmlFormatter/MessagesToHtmlWriter.cs +++ b/dotnet/Cucumber.HtmlFormatter/MessagesToHtmlWriter.cs @@ -112,6 +112,10 @@ public void Write(Envelope envelope) _preMessageWritten = true; _writer.Flush(); } + if(envelope.StepDefinition != null || envelope.Hook != null || envelope.ParameterType != null) + { + return; + } if (!_firstMessageWritten) { _firstMessageWritten = true; @@ -142,6 +146,10 @@ public async Task WriteAsync(Envelope envelope) _preMessageWritten = true; await _writer.FlushAsync(); } + if(envelope.Source != null || envelope.StepDefinition != null) + { + return; + } if (!_firstMessageWritten) { _firstMessageWritten = true; diff --git a/java/src/main/java/io/cucumber/htmlformatter/MessagesToHtmlWriter.java b/java/src/main/java/io/cucumber/htmlformatter/MessagesToHtmlWriter.java index c410b682..e97b0cee 100644 --- a/java/src/main/java/io/cucumber/htmlformatter/MessagesToHtmlWriter.java +++ b/java/src/main/java/io/cucumber/htmlformatter/MessagesToHtmlWriter.java @@ -143,6 +143,12 @@ public void write(Envelope envelope) throws IOException { preMessageWritten = true; } + if (envelope.getStepDefinition().isPresent() + || envelope.getHook().isPresent() + || envelope.getParameterType().isPresent()) { + return; + } + if (!firstMessageWritten) { firstMessageWritten = true; } else { diff --git a/java/src/test/java/io/cucumber/htmlformatter/MessagesToHtmlWriterTest.java b/java/src/test/java/io/cucumber/htmlformatter/MessagesToHtmlWriterTest.java index fa69816c..e0f0044f 100644 --- a/java/src/test/java/io/cucumber/htmlformatter/MessagesToHtmlWriterTest.java +++ b/java/src/test/java/io/cucumber/htmlformatter/MessagesToHtmlWriterTest.java @@ -6,6 +6,12 @@ import io.cucumber.messages.types.Envelope; import io.cucumber.messages.types.GherkinDocument; import io.cucumber.messages.types.Location; +import io.cucumber.messages.types.Source; +import io.cucumber.messages.types.SourceMediaType; +import io.cucumber.messages.types.SourceReference; +import io.cucumber.messages.types.StepDefinition; +import io.cucumber.messages.types.StepDefinitionPattern; +import io.cucumber.messages.types.StepDefinitionPatternType; import io.cucumber.messages.types.TestRunFinished; import io.cucumber.messages.types.TestRunStarted; import org.junit.jupiter.api.Test; @@ -15,6 +21,7 @@ import java.io.IOException; import java.time.Instant; +import static io.cucumber.messages.types.SourceMediaType.TEXT_X_CUCUMBER_GHERKIN_PLAIN; import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Collections.singletonList; import static org.hamcrest.CoreMatchers.containsString; @@ -61,6 +68,14 @@ void it_writes_no_message_to_html() throws IOException { assertThat(html, containsString("window.CUCUMBER_MESSAGES = [];")); } + @Test + void it_ignores_step_definition_messages() throws IOException { + StepDefinitionPattern pattern = new StepDefinitionPattern("hello {int} cucumber(s)", StepDefinitionPatternType.CUCUMBER_EXPRESSION); + Envelope envelope = Envelope.of(new StepDefinition("123", pattern, SourceReference.of("path/to/StepDefinition.java"))); + String html = renderAsHtml(envelope); + assertThat(html, containsString("window.CUCUMBER_MESSAGES = [];")); + } + @Test void it_writes_default_title() throws IOException { String html = renderAsHtml(MessagesToHtmlWriter.builder(serializer)); diff --git a/javascript/src/CucumberHtmlStream.ts b/javascript/src/CucumberHtmlStream.ts index 8738fb4d..63d4cca9 100644 --- a/javascript/src/CucumberHtmlStream.ts +++ b/javascript/src/CucumberHtmlStream.ts @@ -138,6 +138,10 @@ export class CucumberHtmlStream extends Transform { } private writeMessage(envelope: messages.Envelope) { + if (envelope.stepDefinition || envelope.hook || envelope.parameterType) { + return; + } + if (!this.firstMessageWritten) { this.firstMessageWritten = true } else { diff --git a/ruby/lib/cucumber/html_formatter/formatter.rb b/ruby/lib/cucumber/html_formatter/formatter.rb index 3d7243aa..263ca1be 100644 --- a/ruby/lib/cucumber/html_formatter/formatter.rb +++ b/ruby/lib/cucumber/html_formatter/formatter.rb @@ -22,6 +22,10 @@ def process_messages(messages) end def write_message(message) + if message.step_definition != nil || message.hook != nil || message.parameter_type != nil + return + end + out.puts(',') unless @first_message # Replace < with \x3C # https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements