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 13 and 14, highlighted below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | default:
suites:
default:
contexts:
- FeatureContext
- Drupal\DrupalExtension\Context\DrupalContext
- Drupal\DrupalExtension\Context\MinkContext
extensions:
Drupal\MinkExtension:
goutte: ~
selenium2: ~
base_url: http://seven.l
Drupal\DrupalExtension:
blackbox: ~
|
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 15 and 16 below:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | default:
suites:
default:
contexts:
- FeatureContext
- Drupal\DrupalExtension\Context\DrupalContext
- Drupal\DrupalExtension\Context\MinkContext
extensions:
Drupal\MinkExtension:
goutte: ~
selenium2: ~
base_url: http://seven.l
Drupal\DrupalExtension:
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 configured with the regions of your site, you can access the following region-related steps:
Note
- These examples won’t work unless you define the appropriate regions in
- your behat.yml file.
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 60 61 | 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: Submit a form in a region
Given I am on the homepage
When I fill in "Search Drupal.org" with "Views" in the "right header" region
And I press "Search" in the "right header" region
Then I should see the text "Search again" in the "right sidebar" 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: Find a button
Given I am on the homepage
Then I should see the "Search" button
Scenario: Find a button in a region
Given I am on the homepage
Then I should see the "Search" button in the "right header"
Scenario: Find an element in a region
Given I am on the homepage
Then I should see the "h1" element in the "left header"
Scenario: Element not in region
Given I am on the homepage
Then I should not see the "h1" element in the "footer"
Scenario: Text not in element in region
Given I am on the homepage
Then I should not see "DotNetNuke" in the "h1" element in the "left header"
Scenario: Find an element with an attribute in a region
Given I am on the homepage
Then I should see the "h1" element with the "id" attribute set to "site-name" in the "left header" region
Scenario: Find text in an element with an attribute in a region
Given I am on the homepage
Then I should see "Drupal" in the "h1" element with the "id" attribute set to "site-name" in the "left header" region
|
Message selectors¶
The Drupal Extension makes use of three selectors for message. If your CSS values are different than the defaults (shown below), you’ll need to update your behat.yml file:
1 2 3 4 5 | Drupal\DrupalExtension:
selectors:
message_selector: '.messages'
error_message_selector: '.messages.messages-error'
success_message_selector: '.messages.messages-status'
|
Message-related steps include:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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"
|
Override text strings¶
The Drupal Extension relies on default text for certain steps. If you have customized the label visible to users, you can change that text as follows:
Drupal\DrupalExtension:
text:
login_url: "/user"
logout_url: "/user/logout"
log_out: "Sign out"
log_in: "Sign in"
password_field: "Enter your password"
username_field: "Nickname"