Skip to content

Declare and check the commands that scenarios need - #410

Draft
schlessera wants to merge 1 commit into
feature/report-filtered-scenariosfrom
feature/declare-required-tools
Draft

schlessera wants to merge 1 commit into
feature/report-filtered-scenariosfrom
feature/declare-required-tools

Conversation

@schlessera

Copy link
Copy Markdown
Member

Addresses #393. Builds on #409.

Some scenarios run commands that are not always installed without declaring it, and fail halfway through where the command is missing. In entity-command, a single scenario using ex as its editor fails at its 17th step, after installing WordPress and running six wp commands.

  • Scenarios can declare such commands with @require-bin-<name> tags. Where a command is not available, the scenarios are left out and reported like other unmet requirements (see Report the scenarios that are left out, and why #409), or stop the run in strict mode.

  • @require-composer, @require-download and @require-opcache-save-comments appear in feature files but never filtered anything. They are checked now.

  • Requirement tags the framework does not know are reported with a warning, as they would not filter anything either.

  • When a command fails because a command it runs does not exist, the failure now names the tag to add:

    The command `ex` was not found. If the scenario needs it, tag it with @require-bin-ex, so that environments without it report the scenario as not run instead of failing it.
    
  • composer lint-gherkin lists scenarios that run commands which are not always installed without the matching tag. It only reports, so that the existing feature files can be tagged over time. Among the bundled commands, it currently flags ex in config-command and entity-command, tar, unzip and zipinfo in dist-archive-command, phpunit in scaffold-command and jq in doctor-command.

Scenarios can declare commands they run that are not always installed with
@require-bin-<name> tags. Where a command is not available, its scenarios
are left out and reported like other unmet requirements, instead of failing
halfway through.

The existing @require-composer, @require-download and
@require-opcache-save-comments tags never filtered anything and are checked
now. Unknown requirement tags are reported, as they would not filter
anything either.

When a command fails because a command it runs does not exist, the failure
names the tag to add, and the Gherkin linting lists scenarios that run
commands which are not always installed without declaring them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 30, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Oct 30, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 6 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/Context/Support.php 60.00% 4 Missing ⚠️
src/Context/ThenStepDefinitions.php 0.00% 1 Missing ⚠️
src/Context/WhenStepDefinitions.php 0.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working scope:testing Related to testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant