Makina Blog

Le blog Makina-corpus

Bien commencer avec Behat


Initialiser les tests avec Behat pour un projet Drupal

Behat est un outil de tests de comportement, "Behavior Driven Development", qui permet d'écrire des tests dans un langage compréhensible, et surtout autorise des actions à travers le navigateur, comme un vrai utilisateur.

Cet outil Open Source utilise Gherkin, qui permet d'écrire des instructions dans un langage humain, chaque instruction étant relié à une fonction en php.

Il utilise également Mink pour simuler les interaction avec le navigateur, et permet de connecter behat avec des outils d'émulation de navigateurs.

Dans cet article je vais décrire les premiers pas avec Behat dans le cadre d'un projet drupal, mais il peut être appliqué à n'importe quel autre projet.

Installer

Les éléments nécessaire en prérequis :

  • composer
  • php-curl
  • une instance de serveur Selenium démarrée

Installer et démarrer Selenium

Sélenium n'est pas obligatoire, mais voir le navigateur travailler à votre place est une petite satisfaction dont on ne va pas se priver.

Télécharger le serveur Selenium, puis lancer avec la commande

java -jar selenium-server-standalone-2.xx.x.jar

Installer la suite Behat

Le dossier de test doit être hors du dossier www de drupal.

mkdir tests
cd tests

Il sera nécessaire d'installer deux packages via composer : behat et drupal-extension.

composer require behat/behat
composer require drupal/drupal-extension

Cette opération installera behat, les extensions drupal et toutes leurs dépendances (Symfony, gherkin, …) dans le dossier vendor.

$ vendor/bin/behat -V
behat version 3.0.15      # la version à jour à la date de cet article

Un fichier composer.json liste les bibliothèques nécessaires, utile si vous souhaitez redéployer ce projet.

{
  "require": {
    "drupal/drupal-extension": "~3.0",
    "guzzlehttp/guzzle" : "^6.0@dev"
  },
  "config": {
    "bin-dir": "bin/"
  }
}

Initialiser un projet

Nous devons ensuite initialiser Behat. Dans le dossier tests, exécuter :

vendor/bin/behat --init

Dossier tests

Cette commande crée :

  • un dossier features contiendra les fichiers scénarios ;
  • un dossier features/bootstrap contenant le fichier FeatureContext.php permettra d'écrire de nouveaux éléments de vocabulaire (nous verrons cela dans un prochain article).

Paramètres dans behat.yml

Nous avons besoin d'indiquer à behat plusieurs informations : le vocabulaire utilisé, l'url vers où tester, les extensions

Dans vendor/drupal/drupal-extension/behat.yml.dist plusieurs configurations sont disponibles selon la version de Drupal que vous utilisez. Dans notre cas, la version de drupal utilisée sur notre site test est la version 7. Voici donc notre fichier de configuration behat.yml, à créer dans le dossier tests :

default:
  suites:
    default:
      contexts:
        - FeatureContext
        - Drupal\DrupalExtension\Context\DrupalContext
        - Drupal\DrupalExtension\Context\MinkContext
  extensions:
    Behat\MinkExtension:
      selenium2: ~
      base_url: http://monprojet.local
    Drupal\DrupalExtension:
      blackbox: ~
      api_driver: 'drupal'
      drupal:
        drupal_root: '/home/ehe/Dev/drupal/monprojet/monprojet_www'

Ce fichier hérite du vocabulaire de DrupalExtension et MinkExtension.

Notre premier test

Vous pouvez lister les directives existantes :

vendor/bin/behat -dl

Créer un fichier monpremiertest.features dans le dossier features

@api
Feature: Environment check

  @api
  Scenario: assertHomepage
  Given I am an anonymous user
  When I am on the homepage
  Then I should see the text "Bienvenue"

Pour lancer les tests :

vendor/bin/behat
# lance tous les tests

vendor/bin/behat features/
# lance les tests du dossier features

vendor/bin/behat features/monpremiertest.features
# lance les tests du fichier monpremiertest.features

Lancement des tests

Si votre site contient le texte "Bienvenue", le test sera valide.

Conclusion

L'installation de Behat n'est pas si compliquée au final, et comme nous le verrons dans un prochain article, à l'usage Behat se révèle très pratique pour écrire rapidement des tests de comportement de votre site ou application web.

À savoir que notre autre CMS préféré, Plone, utilise robotframework, un outil similaire écrit en python.

Crédit image : Stop motion of cat and dog jumping by National Media Museum via Flickr Commons, in Wikimedia Commons, CC-By-SA-3.0

Actualités en lien

Image
Encart article DrupalCamp 2024
06/03/2024

Makina Corpus, parte­naire de la Drupal­Camp 2024

Nous sommes fiers d’an­non­cer que Makina Corpus est le spon­sor de la Drupal­Camp à Rennes. Notre expert vous y propose une confé­rence « migrer de Drupal 7 à Drupal 10 ».

Voir l'article
Image
DrupalCon Lille Sponsor
20/10/2023

DrupalCon Lille 2023 : quand Drupal prend (enfin ?) le virage de l'UX

Présentation rapide de sujets ergonomiques discutés lors de la première journée de la DrupalCon Lille 2023

Voir l'article
Image
DrupalCon 23 Encart
14/09/2023

Makina Corpus sponsorise la DrupalCon 2023 à Lille

La DrupalCon 2023 revient en France du 17 au 20 octobre et notre équipe y participe ! Pour cette nouvelle édition de la DruplaCon Fr, Makina Corpus s'engage auprès de Drupal et sponsorise l'événement 2023 à Lille.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus