mirror of
https://github.com/silverstripe/silverstripe-behat-extension
synced 2024-10-22 17:05:32 +02:00
Update behat extension for updated button styling
This commit is contained in:
parent
9fc5bf254b
commit
eaa17cf18f
@ -7,6 +7,7 @@ use Behat\Behat\Context\Step;
|
|||||||
use Behat\Behat\Event\StepEvent;
|
use Behat\Behat\Event\StepEvent;
|
||||||
use Behat\Behat\Event\ScenarioEvent;
|
use Behat\Behat\Event\ScenarioEvent;
|
||||||
use Behat\Mink\Driver\Selenium2Driver;
|
use Behat\Mink\Driver\Selenium2Driver;
|
||||||
|
use Behat\Mink\Element\NodeElement;
|
||||||
use SilverStripe\Assets\File;
|
use SilverStripe\Assets\File;
|
||||||
use SilverStripe\Assets\Filesystem;
|
use SilverStripe\Assets\Filesystem;
|
||||||
|
|
||||||
@ -359,20 +360,57 @@ JS;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Given /^I press the "([^"]*)" button$/
|
* Find visible button with the given text.
|
||||||
|
* Supports data-text-alternate property.
|
||||||
|
*
|
||||||
|
* @param string $text
|
||||||
|
* @return NodeElement|null
|
||||||
*/
|
*/
|
||||||
public function stepIPressTheButton($button)
|
protected function findNamedButton($title)
|
||||||
{
|
{
|
||||||
$page = $this->getSession()->getPage();
|
$page = $this->getSession()->getPage();
|
||||||
$els = $page->findAll('named', array('link_or_button', "'$button'"));
|
// See https://mathiasbynens.be/notes/css-escapes
|
||||||
|
$escapedTitle = addcslashes($title, '!"#$%&\'()*+,-./:;<=>?@[\]^`{|}~');
|
||||||
$matchedEl = null;
|
$matchedEl = null;
|
||||||
foreach ($els as $el) {
|
$searches = [
|
||||||
if ($el->isVisible()) {
|
['named', ['link_or_button', "'{$title}'"]],
|
||||||
$matchedEl = $el;
|
['css', "button[data-text-alternate='{$escapedTitle}']"],
|
||||||
|
];
|
||||||
|
foreach ($searches as list($type, $arg)) {
|
||||||
|
$buttons = $page->findAll($type, $arg);
|
||||||
|
foreach ($buttons as $el) {
|
||||||
|
if ($el->isVisible()) {
|
||||||
|
return $el;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assertNotNull($matchedEl, sprintf('%s button not found', $button));
|
return null;
|
||||||
$matchedEl->click();
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Example: I should see a "Submit" button
|
||||||
|
* Example: I should not see a "Delete" button
|
||||||
|
*
|
||||||
|
* @Given /^I should( not? |\s*)see (?:a|an|the) "([^"]*)" button$/
|
||||||
|
*/
|
||||||
|
public function iShouldSeeAButton($negative, $text)
|
||||||
|
{
|
||||||
|
$matchedEl = $this->findNamedButton($text);
|
||||||
|
if (trim($negative)) {
|
||||||
|
assertNull($matchedEl, sprintf('%s button found', $text));
|
||||||
|
} else {
|
||||||
|
assertNotNull($matchedEl, sprintf('%s button not found', $text));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Given /^I press the "([^"]*)" button$/
|
||||||
|
*/
|
||||||
|
public function stepIPressTheButton($text)
|
||||||
|
{
|
||||||
|
$button = $this->findNamedButton($text);
|
||||||
|
assertNotNull($button, "{$text} button not found");
|
||||||
|
$button->click();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user