diff --git a/lib/tests/behat/behat_general.php b/lib/tests/behat/behat_general.php index 4ff7ae8570a..0900afbb767 100644 --- a/lib/tests/behat/behat_general.php +++ b/lib/tests/behat/behat_general.php @@ -904,4 +904,28 @@ class behat_general extends behat_base { public function i_change_window_size_to($windowsize) { $this->resize_window($windowsize); } + + /** + * Checks whether there is an attribute on the given element that contains the specified text. + * + * @Then /^the "(?P[^"]*)" attribute of "(?P(?:[^"]|\\")*)" "(?P[^"]*)" should contain "(?P(?:[^"]|\\")*)"$/ + * @throws ExpectationException + * @param string $attribute Name of attribute + * @param string $element The locator of the specified selector + * @param string $selectortype The selector type + * @param string $text Expected substring + */ + public function the_attribute_of_should_contain($attribute, $element, $selectortype, $text) { + // Get the container node (exception if it doesn't exist). + $containernode = $this->get_selected_node($selectortype, $element); + $value = $containernode->getAttribute($attribute); + if ($value == null) { + throw new ExpectationException('The attribute "' . $attribute. '" does not exist', + $this->getSession()); + } else if (strpos($value, $text) === false) { + throw new ExpectationException('The attribute "' . $attribute . + '" does not contain "' . $text . '" (actual value: "' . $value . '")', + $this->getSession()); + } + } }