NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #410 most downloaded on Packagist
Gherkin DSL parser for PHP
Last release 12 days ago
25 Sep 2026
Ships unpredictably
gaps range from 1 weeks to 3.0 years
Rarely documented
notes for 11 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
15 years old
69 releases · first in 2011
Deprecate FilterInterface, SimpleFilter and friends by @acoulton in #432
Rule nodes in >= GHERKIN_32 mode (backwards compatible).One column per quarter.
Emit deprecation if filter string does not contain @ prefixes by @acoulton in #417
getFullText() method to a StepNode - returns the keyword & text as it appears in the feature file by @acoulton in #421getFullText() method to a StepNode - returns the keyword & text as it appears in the feature file
by @acoulton in https://github.com/Behat/Gherkin/pull/421We have temporarily fixed this, but it is deprecated and will be removed in the next major version. By @acoulton in #407
@ (e.g. wip&&~slow instead of @wip&&~@slow).Further improvements to parser parity when the experimental gherkin-32 compatibility mode is enabled:
gherkin-32 compatibility mode is enabled:
Stringable to classes implementing __toString() by @acoulton in #402Added a new ParserInterface and deprecated extending the core Lexer, Parser and Node classes by @acoulton in #354
#language:no-such) and falls back to the default language (e.g. en). Previously, the resultant FeatureNode::getLanguage() would return the original invalid value from the feature file - it will now return the language that was actually used for parsing. By @stof in #350GherkinCompatibilityMode to control how gherkin files are parsed. In the default legacy mode, there is no change to parsing. In the new experimental gherkin-32 mode, files will in future be parsed consistently with the official cucumber/gherkin parsers. This mode is not yet complete - in this first release:
\n literals in table cells will be parsed as newlines by @stof in #359 and #391ru (Russian) and af (Afrikaans) from cucumber/gherkin in #381 and #386behat/gherkin version is unknown by @uuf6429 in #370Throw ParserException if file ends with tags by @acoulton in #313
Scenario and Scenario Outline as synonyms depending on the presence (or not) of an Examples: keyword..feature file that does not contain a Feature by @acoulton in #340| (instead of throwing) by @acoulton in #341Yaml::parseFile API to handle Yaml files by @stof in #335Files have been moved to flatten paths into a PSR-4 structure (instead of the previous PSR-0). This may affect users who are requiring files directly
to use thei18n.php` file without depending on paths to other files in this repo. By @uuf6429 in #288amh (Amharic), be (Belarusian) and ml (Malayalam) from cucumber/gherkin in #306ga (Irish), it (Italian), ja (Japanese), ka (Georgian) and ko (Korean) from cucumber/gherkin in #306Gherkin::VERSION is deprecated and will not be updated, use the composer runtime API if you need to identify the running version. This also changes th…
CachedArrayKeywords::withDefaultKeywords() to create an instance without an external dependency on the path to the i18n.php file in this repo. NOTE that paths to source files will change in the next Gherkin release - use the new constructor to avoid any impact. by @carlos-granados in #290Deprecated ExampleNode::getTitle() and ScenarioNode::getTitle() in favour of new methods with clearer meaning. by @uuf6429 in #271
ExampleNode::getTitle() and ScenarioNode::getTitle() in favour of new methods with clearer meaning.(ExampleNode|ScenarioNode)::getName() to access human-readable names for examples and scenarios,ExampleNode::getExampleText() for the string content of the example table row.Fix PHPUnit 10 deprecation messages
\ as an escape character, which must be escaped (\\) to use it as a\ you will need to replace each one\\ to achieve the same parsed result.Note: 4.10.0 was actually released by @everzet on 2024-10-19, but just as a bare git tag - I've just marked it up as an official github release to avoid confusion,
Simplify the boolean condition for the tag matching by @stof in #219
Full Changelog: v4.8.0...v4.9.0
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →