mirror of
https://github.com/silverstripe/silverstripe-behat-extension
synced 2024-10-22 17:05:32 +02:00
MNT Keyboard test steps (#263)
This commit is contained in:
parent
3bbdf1f2d3
commit
b2cd44c879
@ -6,7 +6,6 @@ use Exception;
|
|||||||
use InvalidArgumentException;
|
use InvalidArgumentException;
|
||||||
use Behat\Behat\Context\Context;
|
use Behat\Behat\Context\Context;
|
||||||
use Behat\Behat\Context\Environment\InitializedContextEnvironment;
|
use Behat\Behat\Context\Environment\InitializedContextEnvironment;
|
||||||
use Behat\Behat\Definition\Call;
|
|
||||||
use Behat\Behat\Hook\Scope\AfterScenarioScope;
|
use Behat\Behat\Hook\Scope\AfterScenarioScope;
|
||||||
use Behat\Behat\Hook\Scope\AfterStepScope;
|
use Behat\Behat\Hook\Scope\AfterStepScope;
|
||||||
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
|
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
|
||||||
@ -19,6 +18,7 @@ use Behat\Testwork\Tester\Result\TestResult;
|
|||||||
use Facebook\WebDriver\Exception\WebDriverException;
|
use Facebook\WebDriver\Exception\WebDriverException;
|
||||||
use Facebook\WebDriver\WebDriver;
|
use Facebook\WebDriver\WebDriver;
|
||||||
use Facebook\WebDriver\WebDriverAlert;
|
use Facebook\WebDriver\WebDriverAlert;
|
||||||
|
use Facebook\WebDriver\WebDriverBy;
|
||||||
use Facebook\WebDriver\WebDriverExpectedCondition;
|
use Facebook\WebDriver\WebDriverExpectedCondition;
|
||||||
use Facebook\WebDriver\WebDriverKeys;
|
use Facebook\WebDriver\WebDriverKeys;
|
||||||
use PHPUnit\Framework\Assert;
|
use PHPUnit\Framework\Assert;
|
||||||
@ -1583,4 +1583,71 @@ JS;
|
|||||||
}
|
}
|
||||||
$this->getSession()->executeScript("document.location.href = '{$href}';");
|
$this->getSession()->executeScript("document.location.href = '{$href}';");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Given /^I focus on the "([^"]+)" element$/
|
||||||
|
*/
|
||||||
|
public function iFocusOnTheElement(string $selector)
|
||||||
|
{
|
||||||
|
$page = $this->getSession()->getPage();
|
||||||
|
$element = $page->find('css', $selector);
|
||||||
|
Assert::assertNotNull($element, sprintf('Element %s not found', $selector));
|
||||||
|
$element->focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Given /^I type "([^"]+)" in the field$/
|
||||||
|
*
|
||||||
|
* This method is used to type into the active element.
|
||||||
|
* It's used to type into fields that are input fields and currently active (has focus).
|
||||||
|
* Should be used together with the step "I focus on the "selector" element"
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* When I focus on the "selector" element
|
||||||
|
* And I type "text" in the field
|
||||||
|
*/
|
||||||
|
public function iTypeInTheField(string $data)
|
||||||
|
{
|
||||||
|
$driver = $this->getSession()->getDriver()->getWebDriver();
|
||||||
|
$driver->switchTo()->activeElement();
|
||||||
|
$keyboard = $driver->getKeyboard();
|
||||||
|
$keyboard->sendKeys([$data]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Given /^the active element should be "([^"]+)"$/
|
||||||
|
*
|
||||||
|
* Example: And the active element should be "selector"
|
||||||
|
*/
|
||||||
|
public function theActiveElementShouldBe(string $selector)
|
||||||
|
{
|
||||||
|
$driver = $this->getSession()->getDriver()->getWebDriver();
|
||||||
|
$element = $driver->findElement(WebDriverBy::cssSelector($selector));
|
||||||
|
Assert::assertNotNull($element, sprintf('Element %s not found', $selector));
|
||||||
|
Assert::assertTrue($element->equals($driver->switchTo()->activeElement()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Given /^I type "([^"]+)" in the active element "([^"]+)"$/
|
||||||
|
*
|
||||||
|
* This method is used to type into the active element.
|
||||||
|
*
|
||||||
|
* Example: And I type "text" in the active element "selector"
|
||||||
|
*/
|
||||||
|
public function iTypeInTheActiveElement(string $data, string $selector)
|
||||||
|
{
|
||||||
|
$this->theActiveElementShouldBe($selector);
|
||||||
|
$this->iTypeInTheField($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Globally press the key i.e. not type into an input and confirm dialog
|
||||||
|
*
|
||||||
|
* @When /^I press the "([^"]+)" key and confirm the dialog$/
|
||||||
|
*/
|
||||||
|
public function iPressTheKeyAndConfirmTheDialog(string $key)
|
||||||
|
{
|
||||||
|
$this->iPressTheKeyGlobally($key);
|
||||||
|
$this->iConfirmTheDialog();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user