Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: cucumber/gherkin
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v32.0.0
Choose a base ref
...
head repository: cucumber/gherkin
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v32.0.1
Choose a head ref

Commits on Feb 17, 2025

  1. Prepare for the next development iteration

    Created-by: polyglot-release v1.6.0
    luke-hill committed Feb 17, 2025

    Verified

    This commit was signed with the committer’s verified signature.
    luke-hill Luke Hill
    Copy the full SHA
    3975bd3 View commit details

Commits on Feb 20, 2025

  1. chore(deps): update dependency fluentassertions to 7.2.0

    renovate[bot] authored Feb 20, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    29200f5 View commit details

Commits on Feb 21, 2025

  1. fix(deps): update dependency org.junit:junit-bom to v5.12.0

    renovate[bot] authored Feb 21, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    0ff5f6a View commit details
  2. chore(deps): update dependency @types/node to v22.13.5

    renovate[bot] authored Feb 21, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    500481a View commit details

Commits on Feb 25, 2025

  1. chore(deps): update dependency microsoft.codeanalysis.csharp to 4.13.0

    renovate[bot] authored Feb 25, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    275322f View commit details

Commits on Feb 28, 2025

  1. chore(deps): update dependency typescript to v5.8.2

    renovate[bot] authored Feb 28, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    d4edc22 View commit details

Commits on Mar 1, 2025

  1. chore(deps): update dependency @types/node to v22.13.7

    renovate[bot] authored Mar 1, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    1912ff7 View commit details
  2. fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.…

    …18.3
    renovate[bot] authored Mar 1, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    c380998 View commit details
  3. chore(deps): update dependency @types/node to v22.13.8

    renovate[bot] authored Mar 1, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    470b464 View commit details
  4. chore(deps): update dependency core-js to v3.41.0

    renovate[bot] authored Mar 1, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    55b82e2 View commit details

Commits on Mar 3, 2025

  1. chore(deps): update dependency @types/node to v22.13.9

    renovate[bot] authored Mar 3, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    1371351 View commit details

Commits on Mar 8, 2025

  1. chore(deps): update dependency @types/node to v22.13.10

    renovate[bot] authored Mar 8, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    2498032 View commit details

Commits on Mar 11, 2025

  1. chore(deps): update dependency python to 3.13

    renovate[bot] authored Mar 11, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    4bb9905 View commit details

Commits on Mar 14, 2025

  1. Replace deprecated ::set-output

    As per the deprecation warning and explanation at
    https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
    
    Signed-off-by: Dominik Gedon <dominik@gedon.org>
    nodeg committed Mar 14, 2025

    Verified

    This commit was signed with the committer’s verified signature.
    nodeg Dominik Gedon
    Copy the full SHA
    8a4578f View commit details
  2. fix(deps): update dependency org.junit:junit-bom to v5.12.1

    renovate[bot] authored Mar 14, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    2143371 View commit details

Commits on Mar 21, 2025

  1. chore(deps): update dependency @types/node to v22.13.11

    renovate[bot] authored Mar 21, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    b98798f View commit details

Commits on Mar 24, 2025

  1. chore(deps): update dependency @types/node to v22.13.13

    renovate[bot] authored Mar 24, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    2b51289 View commit details

Commits on Mar 27, 2025

  1. chore(deps): update dependency @types/node to v22.13.14

    renovate[bot] authored Mar 27, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    09cf93b View commit details
  2. Python: Handle empty lines in Description AST node and add test cases…

    … when there is only a comment between the scenario line and the first step (#378)
    
    * Add test cases
    
    * fix approved results
    
    * [Py] Handle case where line_tokens in Description AST node can be an empty list
    
    * Add changelog for regression fix when a feature file only has a comment in the description
    
    ---------
    
    Co-authored-by: Jason Allen <jsa34@cam.ac.uk>
    gasparnagy and jsa34 authored Mar 27, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
    Copy the full SHA
    97653a3 View commit details
  3. Update CHANGELOG

    mpkorstanje committed Mar 27, 2025

    Verified

    This commit was signed with the committer’s verified signature.
    mpkorstanje M.P. Korstanje
    Copy the full SHA
    4bbbef4 View commit details
  4. Prepare release v32.0.1

    Created-by: polyglot-release v1.6.0
    mpkorstanje committed Mar 27, 2025

    Verified

    This commit was signed with the committer’s verified signature.
    mpkorstanje M.P. Korstanje
    Copy the full SHA
    7601e40 View commit details
2 changes: 1 addition & 1 deletion .github/workflows/release-pypi.yaml
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ jobs:
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.13"

- name: Show Python version
run: python --version
2 changes: 1 addition & 1 deletion .github/workflows/test-php.yml
Original file line number Diff line number Diff line change
@@ -41,7 +41,7 @@ jobs:

- name: Discover composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-dir)"
run: echo "dir=$(composer config cache-dir)" >> $GITHUB_OUTPUT
working-directory: php

- name: Cache composer
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -8,6 +8,10 @@ This document is formatted according to the principles of [Keep A CHANGELOG](htt

## [Unreleased]

## [32.0.1] - 2025-03-27
### Fixed
- [Python] Fix a regression when a feature file only has a comment in the description

## [32.0.0] - 2025-02-17
### Changed
- [.NET] Reduce NuGet size by only targeting .NET Standard 2.0
@@ -746,7 +750,8 @@ This document is formatted according to the principles of [Keep A CHANGELOG](htt
### Changed
- First release

[Unreleased]: https://github.com/cucumber/gherkin/compare/v32.0.0...HEAD
[Unreleased]: https://github.com/cucumber/gherkin/compare/v32.0.1...HEAD
[32.0.1]: https://github.com/cucumber/gherkin/compare/v32.0.0...v32.0.1
[32.0.0]: https://github.com/cucumber/gherkin/compare/v31.0.0...v32.0.0
[31.0.0]: https://github.com/cucumber/gherkin/compare/v30.0.4...v31.0.0
[30.0.4]: https://github.com/cucumber/gherkin/compare/v30.0.3...v30.0.4
2 changes: 1 addition & 1 deletion c/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
32.0.0
32.0.1
2 changes: 1 addition & 1 deletion cpp/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
32.0.0
32.0.1
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.13.0" />
<!-- Use Newtonsoft because it doesn't need additional dependencies for .NET Standard 2.0 (SourceGenerator) projects -->
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" GeneratePathProperty="true" PrivateAssets="all" />
<PackageReference Include="PolySharp" Version="*">
2 changes: 1 addition & 1 deletion dotnet/Gherkin.Specs/Gherkin.Specs.csproj
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="FluentAssertions" Version="7.1.0" />
<PackageReference Include="FluentAssertions" Version="7.2.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">
2 changes: 1 addition & 1 deletion dotnet/Gherkin/Gherkin.csproj
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@
</PropertyGroup>

<PropertyGroup Label="Version">
<VersionNumber>32.0.0</VersionNumber>
<VersionNumber>32.0.1</VersionNumber>
<Version Condition="'$(SnapshotSuffix)' != ''">$(VersionNumber)-$(SnapshotSuffix)</Version>
<Version Condition="'$(SnapshotSuffix)' == ''">$(VersionNumber)</Version>
</PropertyGroup>
2 changes: 1 addition & 1 deletion elixir/mix.exs
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ defmodule CucumberGherkin.MixProject do
def project do
[
app: :cucumber_gherkin,
version: "32.0.0",
version: "32.0.1",
name: "CucumberGherkin",
description: description(),
package: package(),
10 changes: 5 additions & 5 deletions java/pom.xml
Original file line number Diff line number Diff line change
@@ -8,37 +8,37 @@
<version>4.2.0</version>
</parent>
<artifactId>gherkin</artifactId>
<version>32.0.0</version>
<version>32.0.1</version>
<packaging>jar</packaging>
<name>Gherkin</name>
<description>Gherkin parser</description>
<url>https://github.com/cucumber/gherkin</url>

<properties>
<project.build.outputTimestamp>1739782957</project.build.outputTimestamp>
<project.build.outputTimestamp>1743111663</project.build.outputTimestamp>
<project.Automatic-Module-Name>io.cucumber.gherkin</project.Automatic-Module-Name>
</properties>

<scm>
<connection>scm:git:git://github.com/cucumber/gherkin.git</connection>
<developerConnection>scm:git:git@github.com:cucumber/gherkin.git</developerConnection>
<url>git://github.com/cucumber/gherkin.git</url>
<tag>v32.0.0</tag>
<tag>v32.0.1</tag>
</scm>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>2.18.2</version>
<version>2.18.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.11.4</version>
<version>5.12.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
28 changes: 14 additions & 14 deletions javascript/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions javascript/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@cucumber/gherkin",
"version": "32.0.0",
"version": "32.0.1",
"description": "Gherkin parser",
"main": "dist/src/index.js",
"types": "dist/src/index.d.ts",
@@ -30,12 +30,12 @@
"homepage": "https://github.com/cucumber/gherkin",
"devDependencies": {
"@types/mocha": "10.0.10",
"@types/node": "22.13.4",
"@types/node": "22.13.14",
"commander": "^13.0.0",
"core-js": "3.40.0",
"core-js": "3.41.0",
"mocha": "11.1.0",
"ts-node": "10.9.2",
"typescript": "5.7.3"
"typescript": "5.8.2"
},
"dependencies": {
"@cucumber/messages": ">=19.1.4 <28"
2 changes: 1 addition & 1 deletion perl/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
32.0.0
32.0.1
12 changes: 5 additions & 7 deletions python/gherkin/ast_builder.py
Original file line number Diff line number Diff line change
@@ -268,15 +268,13 @@ def transform_node(
return self.get_table_rows(node)
elif node.rule_type == "Description":
line_tokens = node.get_tokens("Other")
tokens = list(line_tokens)

# Trim trailing empty lines
last_non_empty = next(
i for i, j in reversed(list(enumerate(line_tokens))) if j.matched_text
)
description = "\n".join(
[token.matched_text for token in line_tokens[: last_non_empty + 1]]
)
while tokens and not tokens[-1].matched_text:
tokens.pop()

return description
return "\n".join(token.matched_text for token in tokens)
elif node.rule_type == "Rule":
header = cast(Union[AstNode, None], node.get_single("RuleHeader"))
if not header:
2 changes: 1 addition & 1 deletion python/pyproject.toml
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "gherkin-official"
version = "32.0.0"
version = "32.0.1"
description = "Gherkin parser (official, by Cucumber team)"
readme = "README.md"
requires-python = ">=3.9"
2 changes: 1 addition & 1 deletion ruby/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
32.0.0
32.0.1
10 changes: 10 additions & 0 deletions testdata/good/descriptions_with_comments.feature
Original file line number Diff line number Diff line change
@@ -52,3 +52,13 @@ with a comment in the middle

| foo |
| bar |

Scenario: scenario with just a comment
# comment
Given the minimalism

Scenario: scenario with a comment with new lines around

# comment

Given the minimalism
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"gherkinDocument":{"comments":[{"location":{"column":1,"line":3},"text":" # comment"},{"location":{"column":1,"line":5},"text":" # comment 2"},{"location":{"column":1,"line":9},"text":" # comment"},{"location":{"column":1,"line":10},"text":" # comment 2"},{"location":{"column":1,"line":16},"text":"# comment"},{"location":{"column":1,"line":18},"text":"# comment 2"},{"location":{"column":1,"line":24},"text":" # comment"},{"location":{"column":1,"line":31},"text":" # comment"},{"location":{"column":1,"line":34},"text":" # comment"},{"location":{"column":1,"line":39},"text":"# comment"},{"location":{"column":1,"line":41},"text":"# comment 2"},{"location":{"column":1,"line":43},"text":"# comment 3"},{"location":{"column":1,"line":47},"text":"# comment"},{"location":{"column":1,"line":49},"text":"# comment"},{"location":{"column":1,"line":51},"text":"# comment"}],"feature":{"children":[{"scenario":{"description":" This description\n has two lines and two comments in the middle and is indented with two spaces","examples":[],"id":"1","keyword":"Scenario","location":{"column":3,"line":7},"name":"two lines","steps":[{"id":"0","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":12},"text":"the minimalism"}],"tags":[]}},{"scenario":{"description":"This is a description without indentation\nand a comment in the middle and at the end","examples":[],"id":"3","keyword":"Scenario","location":{"column":1,"line":14},"name":"without indentation","steps":[{"id":"2","keyword":"Given ","keywordType":"Context","location":{"column":3,"line":20},"text":"the minimalism"}],"tags":[]}},{"scenario":{"description":" This description\n\n has an empty line and a comment in the middle","examples":[],"id":"5","keyword":"Scenario","location":{"column":3,"line":22},"name":"empty lines in the middle","steps":[{"id":"4","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":27},"text":"the minimalism"}],"tags":[]}},{"scenario":{"description":" This description\n has an empty lines around","examples":[],"id":"7","keyword":"Scenario","location":{"column":3,"line":29},"name":"empty lines around","steps":[{"id":"6","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":36},"text":"the minimalism"}],"tags":[]}},{"scenario":{"description":"This is a scenario outline description with comments\nin the middle and before and at the end","examples":[{"description":"This is an examples description\nwith a comment in the middle","id":"11","keyword":"Examples","location":{"column":3,"line":46},"name":"examples with description","tableBody":[{"cells":[{"location":{"column":7,"line":54},"value":"bar"}],"id":"10","location":{"column":5,"line":54}}],"tableHeader":{"cells":[{"location":{"column":7,"line":53},"value":"foo"}],"id":"9","location":{"column":5,"line":53}},"tags":[]}],"id":"12","keyword":"Scenario Outline","location":{"column":3,"line":38},"name":"scenario outline with a description","steps":[{"id":"8","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":44},"text":"the minimalism"}],"tags":[]}}],"description":" This is a description\n with a comment in the middle and at the end","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Descriptions with comments everywhere","tags":[]},"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"gherkinDocument":{"comments":[{"location":{"column":1,"line":3},"text":" # comment"},{"location":{"column":1,"line":5},"text":" # comment 2"},{"location":{"column":1,"line":9},"text":" # comment"},{"location":{"column":1,"line":10},"text":" # comment 2"},{"location":{"column":1,"line":16},"text":"# comment"},{"location":{"column":1,"line":18},"text":"# comment 2"},{"location":{"column":1,"line":24},"text":" # comment"},{"location":{"column":1,"line":31},"text":" # comment"},{"location":{"column":1,"line":34},"text":" # comment"},{"location":{"column":1,"line":39},"text":"# comment"},{"location":{"column":1,"line":41},"text":"# comment 2"},{"location":{"column":1,"line":43},"text":"# comment 3"},{"location":{"column":1,"line":47},"text":"# comment"},{"location":{"column":1,"line":49},"text":"# comment"},{"location":{"column":1,"line":51},"text":"# comment"},{"location":{"column":1,"line":57},"text":" # comment"},{"location":{"column":1,"line":62},"text":" # comment"}],"feature":{"children":[{"scenario":{"description":" This description\n has two lines and two comments in the middle and is indented with two spaces","examples":[],"id":"1","keyword":"Scenario","location":{"column":3,"line":7},"name":"two lines","steps":[{"id":"0","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":12},"text":"the minimalism"}],"tags":[]}},{"scenario":{"description":"This is a description without indentation\nand a comment in the middle and at the end","examples":[],"id":"3","keyword":"Scenario","location":{"column":1,"line":14},"name":"without indentation","steps":[{"id":"2","keyword":"Given ","keywordType":"Context","location":{"column":3,"line":20},"text":"the minimalism"}],"tags":[]}},{"scenario":{"description":" This description\n\n has an empty line and a comment in the middle","examples":[],"id":"5","keyword":"Scenario","location":{"column":3,"line":22},"name":"empty lines in the middle","steps":[{"id":"4","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":27},"text":"the minimalism"}],"tags":[]}},{"scenario":{"description":" This description\n has an empty lines around","examples":[],"id":"7","keyword":"Scenario","location":{"column":3,"line":29},"name":"empty lines around","steps":[{"id":"6","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":36},"text":"the minimalism"}],"tags":[]}},{"scenario":{"description":"This is a scenario outline description with comments\nin the middle and before and at the end","examples":[{"description":"This is an examples description\nwith a comment in the middle","id":"11","keyword":"Examples","location":{"column":3,"line":46},"name":"examples with description","tableBody":[{"cells":[{"location":{"column":7,"line":54},"value":"bar"}],"id":"10","location":{"column":5,"line":54}}],"tableHeader":{"cells":[{"location":{"column":7,"line":53},"value":"foo"}],"id":"9","location":{"column":5,"line":53}},"tags":[]}],"id":"12","keyword":"Scenario Outline","location":{"column":3,"line":38},"name":"scenario outline with a description","steps":[{"id":"8","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":44},"text":"the minimalism"}],"tags":[]}},{"scenario":{"description":"","examples":[],"id":"14","keyword":"Scenario","location":{"column":3,"line":56},"name":"scenario with just a comment","steps":[{"id":"13","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":58},"text":"the minimalism"}],"tags":[]}},{"scenario":{"description":"","examples":[],"id":"16","keyword":"Scenario","location":{"column":3,"line":60},"name":"scenario with a comment with new lines around","steps":[{"id":"15","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":64},"text":"the minimalism"}],"tags":[]}}],"description":" This is a description\n with a comment in the middle and at the end","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Descriptions with comments everywhere","tags":[]},"uri":"../testdata/good/descriptions_with_comments.feature"}}
12 changes: 7 additions & 5 deletions testdata/good/descriptions_with_comments.feature.pickles.ndjson
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{"pickle":{"astNodeIds":["1"],"id":"14","language":"en","name":"two lines","steps":[{"astNodeIds":["0"],"id":"13","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["3"],"id":"16","language":"en","name":"without indentation","steps":[{"astNodeIds":["2"],"id":"15","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["5"],"id":"18","language":"en","name":"empty lines in the middle","steps":[{"astNodeIds":["4"],"id":"17","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["7"],"id":"20","language":"en","name":"empty lines around","steps":[{"astNodeIds":["6"],"id":"19","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["12","10"],"id":"22","language":"en","name":"scenario outline with a description","steps":[{"astNodeIds":["8","10"],"id":"21","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["1"],"id":"18","language":"en","name":"two lines","steps":[{"astNodeIds":["0"],"id":"17","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["3"],"id":"20","language":"en","name":"without indentation","steps":[{"astNodeIds":["2"],"id":"19","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["5"],"id":"22","language":"en","name":"empty lines in the middle","steps":[{"astNodeIds":["4"],"id":"21","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["7"],"id":"24","language":"en","name":"empty lines around","steps":[{"astNodeIds":["6"],"id":"23","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["12","10"],"id":"26","language":"en","name":"scenario outline with a description","steps":[{"astNodeIds":["8","10"],"id":"25","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["14"],"id":"28","language":"en","name":"scenario with just a comment","steps":[{"astNodeIds":["13"],"id":"27","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
{"pickle":{"astNodeIds":["16"],"id":"30","language":"en","name":"scenario with a comment with new lines around","steps":[{"astNodeIds":["15"],"id":"29","text":"the minimalism","type":"Context"}],"tags":[],"uri":"../testdata/good/descriptions_with_comments.feature"}}
Loading