PHP code example of robertfausk / behat-panther-extension
1. Go to this page and download the library: Download robertfausk/behat-panther-extension library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
robertfausk / behat-panther-extension example snippets
#AcmeContext.php
use Assert\Assertion;
use Behat\Mink\Element\NodeElement;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Finder\Finder;
/**
* @When /^I click on test element "([^"]*)"$/
*
* @param string $locator
*/
public function iClickOnTestElement(string $locator): void
{
$btn = $this->getTestElement($locator);
$btn->click();
}
/**
* @Given /^there is no file in download directory$/
*/
public function thereIsNoFileinDownloadDirectory(): void
{
$finder = new Finder();
$fs = new Filesystem();
$fs->remove($finder->in($this->getDownloadDirectory())->files());
}
/**
* @Then /^I can find file "([^"]*)" in download directory$/
*/
public function iCanFindFileInDownloadDirectory($filename)
{
$fs = new Filesystem();
$path = \sprintf('%s%s%s', $this->getDownloadDirectory(), DIRECTORY_SEPARATOR, $filename);
$this->spin(
static function () use ($fs, $path): void {
$isFileExisting = $fs->exists($path);
Assertion::true($isFileExisting);
},
);
Assertion::true($fs->exists($path));
}
private function getDownloadDirectory(): string
{
return \sprintf('%s%sDownloads', $this->getMinkParameter('files_path'), DIRECTORY_SEPARATOR);
}
private function getTestElement(string $dataTestLocator, int $tries = 25): NodeElement
{
return $this->getNodeElement("[data-test='$dataTestLocator']", $tries);
}
private function spin(\Closure $closure, ?int $tries = 25): ?NodeElement
{
for ($i = 0; $i <= $tries; $i++) {
try {
return $closure();
} catch (\Throwable $e) {
if ($i === $tries) {
throw $e;
}
}
\usleep(100000); // 100 milliseconds
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.