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"