Drupal Test

Cheatsheet for End to End Tests

Generating Data

When filling out forms you probably want to use the generators.

 $el['.t-field_first_name']->setValue($this->generate('name:first'));
Generators
email ()
integer ($min, $max)
name ($length = 5)
password ($length = 32)
phone ()
sentence ($wordcount = 5)
title ($wordcount = 5)
url ()
username ($length = 10)
words ($wordcount = 5)
EndToEndTestCase
assert ($fail_message = '')
assertElementExists ($css_selector, $failure_message = '')
assertElementNotExists ($css_selector, $failure_message = '')
assertElementNotVisible ($css_selector, $failure_message = '')
assertElementVisible ($css_selector, $failure_message = '')
assertManual ($assertion, array $prerequisite_steps = Array)
assertUrlContentTypeEquals ($content_type, $url)
assertUrlRedirectsTo ($final_url, $url)
assertUrlStatusCodeEquals ($status_code, $url)
assertUrlStatusCodeNotEquals ($status_code, $url)
beginObservation ($button_title = '', array $button_css_classes = Array)
debugger ()
destructiveAssertPreConditions ()
el ($css_selector, $limit_to_one = true)
els ($css_selector)
emptyCookieJar ()
endObservation ()
generate ($method)
getClient (array $options = Array)
getCookieJar ()
getDomElements (array $css_selectors)
getEmailHandler ()
getSession ()
getStored ($key, $default = NULL)
interactiveAssertPreConditions ()
loadPageByUrl ($url)
requireElement ($css_selector)
scrollTop ()
setEmailHandler (AKlump\DrupalTest\Utilities\EmailHandlerInterface $handler)
store ($key, $value)
wait ($seconds)
waitFor (callable $test, $description = NULL, $timeout = NULL)
waitForElement ($css_selector, $timeout = NULL)
waitForElementNotVisible ($css_selector, $timeout = NULL)
waitForElementVisible ($css_selector, $timeout = NULL)
waitForEmail ($expected_count = 1, $timeout = NULL)
waitForObserver ($css_selector)
waitForObserverPopup (AKlump\DrupalTest\Utilities\Popup $popup)
waitForPageContains ($substring, $timeout = NULL)

There is some overlap in assertions between methods of ClientTestCase and methods on Mink's WebAssert class, but the former always uses css selectors, so it's a little less verbose.

Working with DocumentElement objects

Learn more here.

DocumentElement
attachFileToField ($locator, $path)
checkField ($locator)
clickLink ($locator)
fillField ($locator, $value)
find ($selector, $locator)
findAll ($selector, $locator)
findButton ($locator)
findById ($id)
findField ($locator)
findLink ($locator)
getContent ()
getHtml ()
getOuterHtml ()
getSession ()
getText ()
getXpath ()
has ($selector, $locator)
hasButton ($locator)
hasCheckedField ($locator)
hasContent ($content)
hasField ($locator)
hasLink ($locator)
hasSelect ($locator)
hasTable ($locator)
hasUncheckedField ($locator)
isValid ()
pressButton ($locator)
selectFieldOption ($locator, $value, $multiple = false)
uncheckField ($locator)
waitFor ($timeout, $callback)

Working with NodeElement objects

Learn more here.

<?php

class Test {

  public function testExample() {

    // By using getDomElements we ensure only one of .t-link.
    $el = $this->loadPageByUrl('/node/9750')
      ->getDomElements([
        '.t-link',
      ]);

    // $el['.t-link'] is an instance of NodeElement.
    $el['.t-link']->click();

    // Altenatively you could do this.
    $this->el('.t-link')->click()
      }

}
NodeElement
attachFile ($path)
attachFileToField ($locator, $path)
blur ()
check ()
checkField ($locator)
click ()
clickLink ($locator)
doubleClick ()
dragTo (Behat\Mink\Element\ElementInterface $destination)
fillField ($locator, $value)
find ($selector, $locator)
findAll ($selector, $locator)
findButton ($locator)
findById ($id)
findField ($locator)
findLink ($locator)
focus ()
getAttribute ($name)
getHtml ()
getOuterHtml ()
getParent ()
getSession ()
getTagName ()
getText ()
getValue ()
getXpath ()
has ($selector, $locator)
hasAttribute ($name)
hasButton ($locator)
hasCheckedField ($locator)
hasClass ($className)
hasField ($locator)
hasLink ($locator)
hasSelect ($locator)
hasTable ($locator)
hasUncheckedField ($locator)
isChecked ()
isSelected ()
isValid ()
isVisible ()
keyDown ($char, $modifier = NULL)
keyPress ($char, $modifier = NULL)
keyUp ($char, $modifier = NULL)
mouseOver ()
press ()
pressButton ($locator)
rightClick ()
selectFieldOption ($locator, $value, $multiple = false)
selectOption ($option, $multiple = false)
setValue ($value)
submit ()
uncheck ()
uncheckField ($locator)
waitFor ($timeout, $callback)

Making Assertions with Mink

Load a page and then make assertions using Mink's WebAssert class.

<?php

class Test {

  public function testExample() {
    $this->loadPageByUrl('/node/9750')
      ->assert()
      ->elementTextContains('css', '#button', 'English');

    $this->assert()
      ->elementTextContains('css', '#button-2', 'Spanish');
  }

}
WebAssert
addressEquals ($page)
addressMatches ($regex)
addressNotEquals ($page)
checkboxChecked ($field, Behat\Mink\Element\TraversableElement or NULL $container = NULL)
checkboxNotChecked ($field, Behat\Mink\Element\TraversableElement or NULL $container = NULL)
cookieEquals ($name, $value)
cookieExists ($name)
elementAttributeContains ($selectorType, $selector, $attribute, $text)
elementAttributeExists ($selectorType, $selector, $attribute)
elementAttributeNotContains ($selectorType, $selector, $attribute, $text)
elementContains ($selectorType, $selector, $html)
elementExists ($selectorType, $selector, Behat\Mink\Element\ElementInterface or NULL $container = NULL)
elementNotContains ($selectorType, $selector, $html)
elementNotExists ($selectorType, $selector, Behat\Mink\Element\ElementInterface or NULL $container = NULL)
elementsCount ($selectorType, $selector, $count, Behat\Mink\Element\ElementInterface or NULL $container = NULL)
elementTextContains ($selectorType, $selector, $text)
elementTextNotContains ($selectorType, $selector, $text)
fieldExists ($field, Behat\Mink\Element\TraversableElement or NULL $container = NULL)
fieldNotExists ($field, Behat\Mink\Element\TraversableElement or NULL $container = NULL)
fieldValueEquals ($field, $value, Behat\Mink\Element\TraversableElement or NULL $container = NULL)
fieldValueNotEquals ($field, $value, Behat\Mink\Element\TraversableElement or NULL $container = NULL)
pageTextContains ($text)
pageTextMatches ($regex)
pageTextNotContains ($text)
pageTextNotMatches ($regex)
responseContains ($text)
responseHeaderContains ($name, $value)
responseHeaderEquals ($name, $value)
responseHeaderMatches ($name, $regex)
responseHeaderNotContains ($name, $value)
responseHeaderNotEquals ($name, $value)
responseHeaderNotMatches ($name, $regex)
responseMatches ($regex)
responseNotContains ($text)
responseNotMatches ($regex)
statusCodeEquals ($code)
statusCodeNotEquals ($code)