CHANGE LOG

All notable changes to this project will be documented in this file.

This project adheres to Semantic Versioning.

This document is formatted according to the principles of Keep A CHANGELOG.

Unreleased

Added

Changed

Deprecated

Removed

Fixed

24.1.0 - 2022-10-10

Added

Fixed

24.0.0 - 2022-05-31

Added

Changed

Fixed

23.0.1 - 2022-03-31

Fixed

23.0.0 - 2022-03-30

Changed

Removed

22.0.0 - 2021-09-23

Added

Changed

Fixed

21.0.0 - 2021-09-01

Added

Changed

Removed

Fixed

20.0.1 - 2021-07-19

Changed

20.0.0 - 2021-07-08

Changed

Fixed

19.0.3 - 2021-05-24

Fixed

19.0.2 - 2021-05-19

Fixed

19.0.1 - 2021-05-17

Fixed

19.0.0 - 2021-05-15

Added

Changed

Removed

Fixed

18.1.1 - 2021-04-22

Fixed

18.1.0 - 2021-04-06

Added

Fixed

18.0.0 - 2021-03-24

Added

Changed

Removed

17.0.2 - 2021-02-16

Fixed

17.0.1 - 2021-02-08

Fixed

17.0.0 - 2021-02-07

Changed

Removed

Fixed

16.0.0 - 2020-12-10

Added

Changed

Removed

15.0.2 - 2020-08-17

Fixed

15.0.1 - 2020-08-12

Do not use this release. The removal of Gherkin keywords breaks backwards compatibility for Creole and French, and this should have been released as a major release. The keywords are restored in 15.0.2, and we'll remove them again in a future major release.

Removed

15.0.0 - 2020-08-07

Changed

14.2.0 - 2020-07-31

Changed

14.1.0 - 2020-07-29

Changed

14.0.2 - 2020-06-29

Fixed

14.0.1 - 2020-06-29

Fixed

14.0.0 - 2020-06-27

Added

Changed

Fixed

13.0.0 - 2020-04-14

Changed

12.0.0 - 2020-03-31

Added

Changed

Fixed

11.0.0 - 2020-03-02

Changed

Removed

Fixed

10.0.0 - 2020-02-13

Changed

Fixed

9.2.0 - 2020-01-22

Added

Changed

9.1.0 - 2020-01-10

Added

Changed

9.0.0 - 2019-12-10

Changed

8.2.1 - 2019-11-22

Fixed

8.2.0 - 2019-11-14

Fixed

8.1.1 - 2019-10-17

Fixed

8.1.0 - 2019-10-16

Added

Changed

Removed

Fixed

8.0.0 - 2019-10-03

Added

Changed

Fixed

7.0.4 - 2019-08-29

Changed

7.0.3 - 2019-08-15

Fixed

7.0.2 - 2019-08-14

Changed

7.0.1 - 2019-08-14

Fixed

7.0.0 - 2019-08-14

Added

Fixed

6.0.17 - 2019-03-31

Changed

6.0.15 - 2018-10-31

Added

Fixed

6.0.13 - 2018-09-25

This major release aligns Gherkin with Example Mapping, a collaborative technique for designing scenarios and discovering details about rules and behaviour.

A new Rule keyword has been introduced, and acts as a grouping of one or more Examples - a new synonym for Scenario. The Scenario Outline keyword can now be interchanged with the Scenario keyword, which makes Gherkin a little less confusing, especially to beginners. These are the first major change to the Gherkin grammar in 8 years or so, and we're pretty excited about them. We hope they will guide people towards thinking of scenarios as examples of business rules rather than a series of form submissions and link clicking. This rule-focused style engages product owners, and can act as amazing living documentation of your product. It opens up for the true benefits of BDD - a business-friendly format for describing and agreeing on software behaviour, and a guide to development. Developers will code against this spec, and produce better (simpler) software faster. The software will do what it says on the tin.

The new Gherkin grammar is backwards compatible, meaning that existing Gherkin documents are still valid.

The library API however is not backwards compatible. It is now a stream-like API which produces a stream of messages (source, AST and pickle messages).

Internally, each library shells out to a go executable (embedded in the library for all major OSes and processor architectures), and communicates via STDIN/STDOUT using protocol buffers. The rationale behind this architectural change is to reduce the maintenance burden (a single parser rather than a dozen), but also to make it quicker and easier to implement a Gherkin library in a new language. Just generate some protobuf classes/structs and write a small program that shells out and communicates using those messages.

Our preliminary benchmarks suggest that performance is comparable to the native implementations, or better. There is a small hit in startup cost, but this is offset against a higher throughput of the parser.

At the time of this writing Gherkin 6 is nearly integrated in Cucumber-JVM and Cucumber-Ruby. Integration with Cucumber.js has not started and we would really welcome some help with that.

The message protocol will continue to evolve to represent runtime information such as results, parameter types, cucumber expressions and other metadata. This will make it easier for the community to build plugins for Cucumber. One HTML Gherkin formatter to rule them all. Statistic plugins and more.

Added

Changed

Removed

Fixed

5.1.0 - 2018-05-30

Added

Changed

Fixed

5.0.0 - 2017-10-13

Added

Changed

4.1.3 - 2017-05-04

Added

Fixed

4.1.2 - 2017-05-03

Something went wrong during this release - do not use

4.1.1 - 2017-03-16

Added

Fixed

4.1.0 - 2017-03-16

Added

Changed

Fixed

4.0.0 - 2016-04-10

This is a major release because of two backwards-incompatible changes.

First, the AST returned by the parser is a GherkinDocument node, with a feature property pointing to a Feature node. Prior to this release the parser would return a Feature node.

Second, the Feature node now has an array/list of children that are Background, Scenario or ScenarioOutline.

Other noteworthy changes is several minor improvements to bring the grammar closer to Gherkin 2.

Removed

Added

Changed

Fixed

3.2.0 - 2016-01-12

Added

Changed

Fixed

3.1.2 - 2015-10-04

Added

Changed

Fixed

3.1.1 - 2015-09-03

Added

Changed

Fixed

3.1.0 - 2015-08-16

Removed

Added

Changed

Fixed

3.0.0 - 2015-07-16