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)
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 ?