MinkContext: drop @Given/@When/@Then docblock annotations now that PHP
attributes are in place — Behat 3.31 reads both, causing each step to
be registered twice and fail with "already defined".
SessionsListener: add ': array' return type to getSubscribedEvents()
to satisfy Symfony 8.x's stricter EventSubscriberInterface signature.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
- lock-symfony-version.sh: replace cat<<<$(jq) with tmp+mv to avoid
file truncation; add .key as $k capture in with_entries per jq safety rules
- lock-behat-version.sh: new script mirroring lock-symfony-version.sh,
fixes the Behat 4 lock step which was wrongly targeting require-dev
instead of require
- CI: actions/checkout@v3 → @v4; composer validate --strict; use
lock-behat-version.sh in the Behat 4 step
- composer.json: widen symfony/config, symfony/browser-kit,
symfony/http-client to ^7.4 || ^8.0 so Symfony 8 installs without CI overrides
- MinkContext: add #[\Behat\Step\Given/When/Then] attributes alongside
existing docblocks so Behat 4 (which ignores docblock annotations)
can discover all step definitions
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
behat 4.x added void return type to ContextInitializer::initializeContext().
Also modernize the constructor with property promotion.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
The lock-symfony-version.sh script pins all symfony/* packages to the
matrix version, but symfony/deprecation-contracts uses its own versioning
(3.x) rather than following Symfony's major/minor scheme. Removing it as
a direct dependency is safe — it is always pulled in transitively via
symfony/config and others.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
- Drop PHP <8.3 and Symfony <7.4 (both EOL), require PHP ^8.3 and symfony/config ^7.4
- Require behat ^3.31 (first version with PHP 8 attribute and PHP config support)
- Upgrade phpspec to ^8.0 (supports PHP 8.5)
- Add symfony/browser-kit and symfony/http-client to dev deps; switch from deprecated goutte driver to browserkit_http
- Update CI matrix: PHP 8.3/8.4/8.5 × Symfony 7.4 + PHP 8.4/8.5 × Symfony 8.0/8.1
- Add Symfony 8+ CI step: override behat to 4.x-dev as 3.31.0
- Restrict push trigger to master branch only (no duplicate runs on PRs)
- Add behat.dist.php for behat 4.x compatibility (PHP config format)
- Update behat.yml.dist to use FQCN extension name (works in both behat 3.x and 4.x)
- Add lock-symfony-version.sh script for pinning Symfony in CI
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
* Mark Goutte, Selenium, Sahi and Zombie driver/support as abandoned
This marks the four drivers as abandoned where the driver implementations are no longer maintained.
* Correctly indent notes so they don't break the enumeration list
* Indent a few more notes that are part of a numerated list