mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Behat: More robust "field should contain" logic
This commit is contained in:
parent
924664527b
commit
fd6060e7be
@ -6,8 +6,9 @@ use Behat\Behat\Context\ClosuredContextInterface,
|
|||||||
Behat\Behat\Context\TranslatedContextInterface,
|
Behat\Behat\Context\TranslatedContextInterface,
|
||||||
Behat\Behat\Context\BehatContext,
|
Behat\Behat\Context\BehatContext,
|
||||||
Behat\Behat\Context\Step,
|
Behat\Behat\Context\Step,
|
||||||
Behat\Behat\Exception\PendingException;
|
Behat\Behat\Exception\PendingException,
|
||||||
use Behat\Gherkin\Node\PyStringNode,
|
Behat\Mink\Exception\ElementHtmlException,
|
||||||
|
Behat\Gherkin\Node\PyStringNode,
|
||||||
Behat\Gherkin\Node\TableNode;
|
Behat\Gherkin\Node\TableNode;
|
||||||
|
|
||||||
// PHPUnit
|
// PHPUnit
|
||||||
@ -88,19 +89,25 @@ class CmsFormsContext extends BehatContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Then /^the "(?P<field>([^"]*))" HTML field should contain "(?P<value>([^"]*))"$/
|
* @Then /^the "(?P<locator>([^"]*))" HTML field should contain "(?P<html>([^"]*))"$/
|
||||||
*/
|
*/
|
||||||
public function theHtmlFieldShouldContain($field, $value)
|
public function theHtmlFieldShouldContain($locator, $html)
|
||||||
{
|
{
|
||||||
$page = $this->getSession()->getPage();
|
$page = $this->getSession()->getPage();
|
||||||
$inputField = $page->findField($field);
|
$element = $page->findField($locator);
|
||||||
assertNotNull($inputField, sprintf('HTML field "%s" not found', $field));
|
assertNotNull($element, sprintf('HTML field "%s" not found', $locator));
|
||||||
|
|
||||||
$this->getMainContext()->assertSession()->elementContains(
|
$actual = $element->getAttribute('value');
|
||||||
'named',
|
$regex = '/'.preg_quote($html, '/').'/ui';
|
||||||
$field,
|
if (!preg_match($regex, $actual)) {
|
||||||
str_replace('\\"', '"', $value) // emulates fixStepArgument()
|
$message = sprintf(
|
||||||
);
|
'The string "%s" was not found in the HTML of the element matching %s "%s".',
|
||||||
|
$html,
|
||||||
|
'named',
|
||||||
|
$locator
|
||||||
|
);
|
||||||
|
throw new ElementHtmlException($message, $this->getSession(), $element);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user