Skip to content

Reconcile the two environment-variable step definitions #254

Description

@AlexSkrypnyk

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions