Blackbox Driver¶
The blackbox driver assumes no privileged access to the site. You can run the tests on a local or remote server, and all the actions will take place through the site’s user interface. This driver was enabled as part of the installation instructions by lines 9 and 10, highlighted below.
1 2 3 4 5 6 7 8 9 10 11 12 | default:
paths:
features: 'features'
extensions:
Behat\MinkExtension\Extension:
goutte: ~
selenium2: ~
base_url: http://seven.l
Drupal\DrupalExtension\Extension:
blackbox: ~
region_map:
footer: "#footer"
|
Region steps¶
It may be really important that a block is in the correct region, or you may have a link or button that doesn’t have a unique label. The blackbox driver allows you to create a map between a CSS selector and a user-readable region name so you can use steps like the following without having to write any custom PHP:
I press "Search" in the "header" region
I fill in "a value" for "a field" in the "content" region
I fill in "a field" with "Stuff" in the "header" region
I click "About us" in the "footer" region
Example:¶
A stock Drupal 7 installation has a footer area identified by the CSS Id “footer”. By editing the behat.yml file and adding lines 11 and 12 below:
1 2 3 4 5 6 7 8 9 10 11 12 | default:
paths:
features: 'features'
extensions:
Behat\MinkExtension\Extension:
goutte: ~
selenium2: ~
base_url: http://seven.l
Drupal\DrupalExtension\Extension:
blackbox: ~
region_map:
footer: "#footer"
|
You can use a step like the following without writing any custom PHP:
When I click "About us" in the "footer" region.
Using the blackbox driver, you can use all of the steps in the examples below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | Feature: Test DrupalContext
In order to prove the Drupal context using the blackbox driver is working
properly
As a developer
I need to use the step definitions of this context
Scenario: Test the ability to find a heading in a region
Given I am on the homepage
When I click "Download & Extend"
Then I should see the heading "Core" in the "content" region
Scenario: Clicking content in a region
Given I am at "download"
When I click "About Distributions" in the "content" region
Then I should see "Page status" in the "right sidebar"
And I should see the link "Drupal News" in the "footer" region
Scenario: Viewing content in a region
Given I am on the homepage
Then I should see "Come for the software, stay for the community"
in the "left header"
Scenario: Test ability to find text that should not appear in a region
Given I am on the homepage
Then I should not see the text "Proprietary software is cutting edge"
in the "left header"
Scenario: Press a button in a region
Given I am on the homepage
When I press "Search" in the "right header" region
Then I should see the text "Filter by content type" in the "content" region
Scenario: Check a link should not exist in a region
Given I am on the homepage
Then I should not see the link "This link should never exist in a
default Drupal install" in the "right header"
Scenario: Error messages
Given I am on "/user"
When I press "Log in"
Then I should see the error message "Password field is required"
And I should not see the error message "Sorry,
unrecognized username or password"
And I should see the following <error messages>
| error messages |
| Username field is required |
| Password field is required |
And I should not see the following <error messages>
| error messages |
| Sorry, unrecognized username or password |
| Unable to send e-mail. Contact the site administrator if the problem
persists |
Scenario: Messages
Given I am on "/user/register"
When I press "Create new account"
Then I should see the message "Username field is required"
But I should not see the message "Registration successful. You are
now logged in"
|