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)

Traits

CKEditorTrait
setCkEditorValue (string $css_selector, $value)
InteractiveTrait
assertPreConditions ()
TimeTrait
setTimeValue ($css_selector, $time)

EndToEndTestCase

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 ($assertions, array $prerequisite_steps = Array)
assertUrlContentTypeEquals ($content_type, $url)
assertUrlNotSame ($expected)
assertUrlRedirectsTo ($final_url, $url)
assertUrlSame ($expected)
assertUrlStatusCodeEquals ($status_code, $url, $message = '')
assertUrlStatusCodeNotEquals ($status_code, $url)
attachObservationCss ($css)
beginObservation ($button_title = '', array $button_css_classes = Array)
debugger ()
doCssInjection ()
el ($css_selector, $limit_to_one = true)
els ($css_selector)
emptyCookieJar ()
endObservation ()
ensureWebSessionStarted ()
generate ($method)
getClient (array $options = Array)
getCookieJar ()
getDomElements (array $css_selectors)
getEmailHandler ()
getIdFromCurrentUrl ()
getJavascriptSelectorCode ($css_selector)
getManualAssertUICssStyles ()
getMatchedFromCurrentUrl (string $regex)
getObserverUiCssStyles ()
getPopupCssStyles ()
getSession ()
getStored ($key, $default = NULL)
handleBaseUrl ()
injectCss ($css)
injectObserverAnchors ()
injectObserverUiIntoDom ($css_selector, $position, $button_title, $short_message = '', array $button_classes = Array)
loadPageByUrl ($url)
onAfterLastTest ()
onBeforeFirstTest ()
requestThenAssert (callable $callback, $url, array $client_options = Array, $method = 'HEAD', callable or NULL $on_fail = NULL)
requireElement ($css_selector)
resolveUrl ($url, $remove_authentication_credentials = false)
scrollToElementTop ($css_selector, $offset = 20)
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)
waitForFinished ()
waitForObserver ($display_object = NULL)
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)
elementNotFound ($type, $selector = NULL, $locator = NULL)
fillField ($locator, $value)
find ($selector, $locator)
findAll ($selector, $locator)
findButton ($locator)
findById ($id)
findField ($locator)
findLink ($locator)
getContent ()
getDriver ()
getHtml ()
getOuterHtml ()
getSelectorsHandler ()
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)
elementNotFound ($type, $selector = NULL, $locator = NULL)
fillField ($locator, $value)
find ($selector, $locator)
findAll ($selector, $locator)
findButton ($locator)
findById ($id)
findField ($locator)
findLink ($locator)
focus ()
getAttribute ($name)
getDriver ()
getHtml ()
getOuterHtml ()
getParent ()
getSelectorsHandler ()
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)
assert ($condition, $message)
assertElement ($condition, $message, Behat\Mink\Element\Element $element)
assertElementText ($condition, $message, Behat\Mink\Element\Element $element)
assertResponseText ($condition, $message)
checkboxChecked ($field, Behat\Mink\Element\TraversableElement or NULL $container = NULL)
checkboxNotChecked ($field, Behat\Mink\Element\TraversableElement or NULL $container = NULL)
cleanUrl ($url)
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)
getCurrentUrlPath ()
getMatchingElementRepresentation ($selectorType, $selector, $plural = false)
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)

Helpers

Balloon
__construct (string $message)
after ()
before ()
create ($message)
delay (integer $seconds)
dispatch (string $callback_name)
el (string $css_selector)
getBody ()
getCssSelector ($default = '')
getOffset ()
getPosition ($default = '')
getTitle ()
offset (integer $x, integer $y)
onAfterShow (callable $callback)
onBeforeShow (callable $callback)
Url
__construct ($url)
toString ()