mirror of
https://github.com/moodle/moodle.git
synced 2025-08-09 10:56:56 +02:00
MDL-44891 Behat: Add step to check attribute
This commit creates a Behat step of the form: Then the "title" attribute of "Toggle visibility" "button" should contain "Show" This is useful because unless I missed something there is currently no step that checks attribute values; this seems like a simple generic step. Behat is intended to check user-visible effects in the resulting HTML, and sometimes these effects are implemented using attribute values (two common examples are the alt= attribute, which is visible to screenreader users, and the title= attribute, which is visible to all users; there's also the src attribute of images, and lots of other possibilities too).
This commit is contained in:
parent
89117976b8
commit
90761f1a8c
1 changed files with 24 additions and 0 deletions
|
@ -951,4 +951,28 @@ class behat_general extends behat_base {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether there is an attribute on the given element that contains the specified text.
|
||||||
|
*
|
||||||
|
* @Then /^the "(?P<attribute_string>[^"]*)" attribute of "(?P<element_string>(?:[^"]|\\")*)" "(?P<selector_string>[^"]*)" should contain "(?P<text_string>(?:[^"]|\\")*)"$/
|
||||||
|
* @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());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue