Skip to content

Symfony 8 : monte Behat en v4 et mink-extension en v3 - #2454

Merged
vgreb merged 2 commits into
afup:masterfrom
BySplashGm:symfony8/behat-4
Nov 7, 2026
Merged

vgreb merged 2 commits into
afup:masterfrom
BySplashGm:symfony8/behat-4

Conversation

@BySplashGm

Copy link
Copy Markdown
Contributor

Étape 4 de #2441.

Contexte

behat/behat 3.x et friends-of-behat/mink-extension 2.x n'acceptent pas Symfony 8. Behat 4.0.0 (stable) et mink-extension 3.0.0-ALPHA.1 le supportent, tout en gardant Symfony 7.4.

Contrairement à ce qu'indique l'issue, robertfausk/behat-panther-extension ne bloque pas : la 2.0.0, déjà installée, accepte behat/behat ^3.0.5||^4.0@alpha et friends-of-behat/mink-extension ^2.3.0||v3.0.0-ALPHA.1. Pas besoin de fork, de driver Mink direct ni d'isoler Behat dans tools/.

Modifications

  • composer.json : behat/behat ^3.31 → ^4.0, friends-of-behat/mink-extension ^2.7 → ^3.0@alpha.
  • composer.lock : seuls behat/behat (3.31.0 → 4.0.0), behat/gherkin (4.17.0 → 4.18.0) et friends-of-behat/mink-extension (2.7.5 → 3.0.0-ALPHA.1) changent, plus la nouvelle dépendance cucumber/tag-expressions. Aucun paquet Symfony n'est mis à jour.
  • patches/friends-of-behat-mink-extension-…-minkcontext-php.patch : dans la 3.0.0-ALPHA.1, la conversion des annotations en attributs a perdu un niveau d'échappement : (?:[^"]|\\")* est devenu (?:[^"]|\")*, qui accepte aussi les guillemets. I press "…" capturait alors I press "Ajouter" and wait until I see "…" (« Ambiguous match » sur 8 steps de DevisFactures.feature). Le patch reprend le correctif upstream FriendsOfBehat/MinkExtension#65, mergé mais pas encore publié. À retirer à la prochaine version.
  • FeatureContext : le regex du step « the downloaded file should (strictly) be the same as » contenait un groupe non nommé en trop ((?P<mode>(strictly) )?). Behat 4 lève désormais TooManyArgumentsException quand un step fournit plus d'arguments que la méthode n'en accepte.
  • AuthContext : après le clic sur « Se connecter », on attend « Espace membre » (waitToSeeText()) au lieu de l'asserter tout de suite. Avec Panther, pressButton() n'attend pas la redirection. C'est la cause du flake de DevisFactures.feature (StaleElementReferenceException ou « Espace membre » introuvable), déjà présent sur master (1 passage sur 3 en local) et systématique avec Behat 4 (0 sur 6). Avec le correctif : 6 sur 6.

Vérifié sans changement nécessaire : behat.php est déjà en PHP, les steps et hooks utilisent déjà des attributs, et le filtre tags (~@javascript-group&&~@javascript) reste supporté. Le mode Gherkin par défaut passe à GHERKIN_42 : aucun échappement dans les tables ou docstrings, et aucun tag avec espace dans nos features. mink-extension 3 gère les tags sans @ de ce mode (bascule @javascript).

À noter : behat-panther-extension 2.0.0 fixe exactement v3.0.0-ALPHA.1. On restera sur cette alpha tant que l'extension Panther ne sera pas mise à jour.

Tests

make phpstan
make test-functional
  • phpstan : OK.
  • php-cs-fixer : OK.
  • bin/behat --dry-run : OK, aucune définition ambiguë.
  • Behat : 248 scénarios sur 249 passent. Le dernier est sauté car le hook @reloadDbWithTestData a échoué au rechargement de la base (SQLSTATE[HY000]: General error: 29 File './web/' not found), la même erreur d'environnement local que sur Symfony 8 : monte ccmbenchmark/ting_bundle en v4 #2453. PublicSite/SuperApero.feature relancé seul : 3/3.
  • Admin/Tresorerie/DevisFactures.feature relancé seul : 6/6.

@vgreb
vgreb merged commit 93bd46d into afup:master Nov 7, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants