Deferred from the codebase convergence work. Every fix here renames or reshapes a published symbol of this library, so it is a backward-compatibility break and was deliberately left out of the non-breaking follow-up.
Summary
Two step definitions set an environment variable with near-identical wording but different behaviour, so which one a scenario gets depends on wording that does not signal the difference.
Details
BehatCliTrait defines :name environment variable is set to :value, which APPENDS to $this->env.
- The vendored
BehatCliContext defines the :name environment variable is set to :value, which REPLACES the whole array.
The only textual difference is a leading the. A scenario author choosing between them has no way to know that one preserves previously-set variables and the other discards them.
This is the one genuine defect inside the wider Gherkin step-text drift. The rest of that drift was assessed and found intentional: the subjectless When save screenshot variants in selenium.feature deliberately exercise the optional-subject branch of the public step regexes, so converging them would remove coverage rather than add consistency.
Step text is the library's public interface and the .feature files double as usage documentation, so changing either step is a break for consumers who wrote it into their own features. The vendored context is also excluded from linting and is not ours to edit directly.
Deferred from the codebase convergence work. Every fix here renames or reshapes a published symbol of this library, so it is a backward-compatibility break and was deliberately left out of the non-breaking follow-up.
Summary
Two step definitions set an environment variable with near-identical wording but different behaviour, so which one a scenario gets depends on wording that does not signal the difference.
Details
BehatCliTraitdefines:name environment variable is set to :value, which APPENDS to$this->env.BehatCliContextdefinesthe :name environment variable is set to :value, which REPLACES the whole array.The only textual difference is a leading
the. A scenario author choosing between them has no way to know that one preserves previously-set variables and the other discards them.This is the one genuine defect inside the wider Gherkin step-text drift. The rest of that drift was assessed and found intentional: the subjectless
When save screenshotvariants inselenium.featuredeliberately exercise the optional-subject branch of the public step regexes, so converging them would remove coverage rather than add consistency.Step text is the library's public interface and the
.featurefiles double as usage documentation, so changing either step is a break for consumers who wrote it into their own features. The vendored context is also excluded from linting and is not ours to edit directly.