behat & drupal 8 : exemple complet et simple

Addendum : behat sera entièrement installé dans drupal 8.3 (5 avril 2017)

Une fois drupal et le composer installés correctement, dans /var/www/d8 avec un compte admin/admin

Le tuto officiel n’est pas vraiment complet/utilisatble tel quel (le behat.yml par défaut n’est pas complet).

Pour installer, j’utilises le composer installé globalement :

composer require drupal/drupal-extension='~3.0'

Ensuite behat est rajouté automatiquement dans « vendor » ou il y avait déjà un répertoire behat, mais pas complet.

vendor/behat/behat/bin/behat --init

Maintenant on créer le behat.yml minimaliste pour pouvoir lancer les tests :

default:
  suites:
    default:
      contexts:
        - Drupal\DrupalExtension\Context\DrupalContext
        - Drupal\DrupalExtension\Context\MinkContext
  extensions:
    Behat\MinkExtension:
      goutte: ~
      base_url: http://localhost/d8
    Drupal\DrupalExtension:
      api_driver: "drupal"
      blackbox: ~
      drupal:
        drupal_root: "/var/www/d8"

Premier test basique dans features/navigate.feature

  Everything from the site.

  Scenario: Title
    Given I am on the homepage
    Then I should see "Drupal"

  Scenario: Log in
    Given I visit "/user"
    # fill the username and password input fields, and click submit
    When I fill in "Username" with "admin"
    And I fill in "Password" with "admin"
    And I press the "Log in" button
    Then I should get a "200" HTTP response
    And I should see text matching "Log out"

On lance le test :

vendor/behat/behat/bin/behat
 @d8 @api
 Feature: Navigation
 Everything from the site.
Scenario: Title # features/navigate.feature:5
 Given I am on the homepage # Drupal\DrupalExtension\Context\MinkContext::iAmOnHomepage()
 Then I should see "Drupal" # Drupal\DrupalExtension\Context\MinkContext::assertPageContainsText()
Scenario: Log in # features/navigate.feature:9
 Given I visit "/user" # Drupal\DrupalExtension\Context\MinkContext::assertAtPath()
 When I fill in "Username" with "admin" # Drupal\DrupalExtension\Context\MinkContext::fillField()
 And I fill in "Password" with "admin" # Drupal\DrupalExtension\Context\MinkContext::fillField()
 And I press the "Log in" button # Drupal\DrupalExtension\Context\MinkContext::pressButton()
 Then I should get a "200" HTTP response # Drupal\DrupalExtension\Context\MinkContext::assertHttpResponse()
 And I should see text matching "Log out" # Drupal\DrupalExtension\Context\MinkContext::assertPageMatchesText()
2 scenarios (2 passed)
 8 steps (8 passed)
 0m0.69s (26.92Mb)

 

Rejoindre la conversation

1 commentaire

  1. Merci pour ce tuto ! Je me pose tout de même la question de comment ça fonctionne maintenant qu’on est sur la 8.3 bientôt 8.4… Une idée ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *