31/10/2018 3 Minutes read Tech 

Symfony3, Behat 3, quoi de nouveau ?

Retour sur la conférence de Fabien Potencier sur le versioning du projet Symfony et la conférence de Christophe Coevoet sur les nouveautés de Behat 3.

Article co-écrit avec Florent Denis.

Ekino était présent au Symfony Live 2014. Après ces deux jours passés, nous voulions vous faire un retour sur deux conférences qu’on a retenues : la conférence (keynote) de Fabien Potencier sur le versioning du projet Symfony et la conférence de Christophe Coevoet sur les nouveautés de Behat 3.

L’avenir de Symfony

Un titre un peu grossier, en détail, pendant la keynote, Fabien Potencier nous a parlé de la compatibilité ascendante entre les versions de Symfony. Tout le monde se rappelle du chaos qu’a été la mise à jour d’un produit de Symfony 1.x à 2.0. Ce n’était pas une mise à jour mais une refonte complète de l’architecture de l’application. La montée en version entre 2.0 à 2.1 et ainsi de suite jusqu’à la 2.3 n’a pas été aussi brutale mais tout de même assez lourde pour des versions mineures.

Aujourd’hui, Fabien Potencier annonce que la mise à jour d’une version au dessus de 2.3 à 3.0 sera très simple. En réalité, c’est encore plus facile qu’on ne le pense car au lieu d’intégrer les nouvelles fonctionnalités et de supprimer les anciennes à chaque version, les nouvelles versions de Symfony garderont les anciennes fonctionnalités sur plusieurs versions mineures afin de laisser le temps aux développeurs de mettre leur produit à jour, petit à petit et sans avoir à refaire une partie conséquente de leur code.

Les développeurs pourront rendre leur code compatible avec Symfony 3.0 avant même qu’il ne soit sorti.

C’est grâce à l’annotation “@deprecated” qu’on aperçoit les fonctionnalités qui vont disparaître : https://github.com/symfony/symfony/search?l=php&q=deprecated&ref=cmdform

Mais ce n’est pas terminé, Symfony a ajouté une page pour expliquer comment la rupture de compatibilité est gérée sur le framework, et ainsi vous aidez dans la mise à jour de votre application. Pour en savoir plus : http://symfony.com/doc/current/contributing/code/bc.html

La “core team” revient pour améliorer la contribution de la communauté, et accélérer également le développement de Symfony. Cette core team est composée de deux groupes de 4 personnes :

  • Les “décideurs” : acteurs actifs sur les différents composants Symfony. Ils analyseront chacune des pull requests afin d’apporter leurs commentaires mais surtout un “+1” ou un “-1”. Il faudra au minimum obtenir un “+1” de 2 décideurs afin que votre pull request soit mergée. Si un des décideurs vous donne un “-1”, alors celle-ci ne sera pas mergée.
  • Les “mergers” : il s’agit également de 4 utilisateurs de confiance qui auront pour tâche de merger les pull requests. Ils ont également la possibilité d’effectuer directement des commits sur les dépôts Symfony.

    Pour plus d’informations sur la core team Symfony, rendez-vous sur : http://symfony.com/blog/the-symfony-core-team-is-back

Nouveautés de Behat 3

Avec une date de sortie approximative annoncée durant le Symfony Live au 20 avril, la version stable de Behat 3 est finalement arrivée dans les temps et a été taguée le 26 avril.

Avant tout, il faut savoir que depuis cette nouvelle version, Behat – qui est inspiré de Cucumber (http://cukes.info/), la référence en matière de BDD en Ruby – est maintenant reconnue comme implémentation officielle en PHP (https://github.com/cucumber/cucumber/wiki#getting-started), ce qui peut rassurer sur le choix de cette technologie.

Un petit état des lieux nous montre que la plupart des extensions sont prêtes à être utilisées avec Behat 3. On notera toutefois l’absence (pour le moment) de formatter JUnit permettant, par exemple, de fournir une sortie interprétable  par Jenkins.

Au niveau des nouveautés de cette version 3, vous aurez maintenant la possibilité d’ordonnancer l’exécution de vos suites dans votre fichier de configuration behat.yml en ajoutant la configuration suivante :

[bash]

default:

suites:

core_features:

paths: [ %paths.base%/features/core ]

contexts: [ CoreDomainContext ]

user_features:

paths: [ %paths.base%/features/web ]

filters: { role: user }

contexts: [ UserContext ]

[/bash]

Vous pouvez également spécifier plusieurs répertoires (paths) afin d’indiquer à Behat où se trouvent vos fichiers de tests ou également filtrer sur certains tags.

Pour plus d’informations : http://behat.readthedocs.org/en/latest/guides/5.suites.html

Crédits photo : @bascht