6.0.15 - 2018-10-31
Added
* (Go) Executables are uploaded to GitHub releases.
Fixed
* Fix bug where leading tabs prevented parser from identifying keywords (#512
[VjacheslavVytjagov])
* [JavaScript] Fix JavaScript build (#499 noisygerman)
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
* (TypeScript) - Added TypeScript definitions (.d.ts) for Gherkin.
* Added Rule keyword (#250 aslakhellesoy)
* Added Example as synonym for Scenario in English and many other
languages. This is to align Gherkin with BDD and Example Mapping
terminology. (aslakhellesoy)
* Added Ukoliko as an additional synonym for Given, in Croatian. (#480 banovotz)
Changed
* (JavaScript,Java,Ruby) The native parsers are removed. Parsing is done by
gherkin-go executables which are bundled with the published
libraries. (aslakhellesoy, [jaysonesmith])
* (JavaScript,Java,Ruby,Go) Scenario keyword (or Example keyword) can be used
to create Scenario Outline. (#353 aslakhellesoy)
Removed
* (Java) OSGi support has been removed. (#412 aslakhellesoy)
Fixed
* (JavaScript) Fix ability to pass language to parser. (#401 charlierudolph)
5.1.0 - 2018-05-30
Added
* (.NET) - Better .NET Core support
* Support for Aragonese (#298 danilat)
* (C) build a shared libgherkin.so library which allows Gherkin to be used as
a library. (Cucumber.ml currently uses this.) (cucumber/gherkin-c#6 cyocum)
Changed
* Pass the content type of a docstring down into its pickle string form (#292
rjwittams)
* Fixed Russian equivalents of Given and Then. (#369 cerebellum13)
Fixed
* (C) Segfault when file does not exist (#394#395 cyocum)
* (JavaScript) (#374#377 charlierudolph)
* (Ruby, JavaScript) Remove berp.exe from packages (#289 aslakhellesoy)
* (Go) fixes validation for go vet tool on latest versions (#330 l3pp4rd)
* (Ruby) removed unneeded files from the gem
[5.0.0] - 2017-10-13
Added
* Ability to specify an initial language for the parser, so that the #
language header isn't required (#288 by charlierudolph and aslakhellesoy)
* A better wording for the Greek translation of Scenario Outline
(¦°¦Å¦Ñ¦ô¦Ã¦Ñ¦Á¦Ì¦Ì¦Á ¦²¦Å¦Í¦Á¦Ñ¦ô¦Ï¦Ô) (#185 by pmatsinopoulos)
* Added female, singular Given in Romanian (Dat«¥ fiind) (#202 by tsundberg)
* (C) CMake support (#2#3 by Pwera)
Changed
* Compile empty scenarios to empty pickles (#249#264 by brasmusson)