drevops / behat-screenshot
Behat extension and step definitions to create HTML and image screenshots on demand or when tests fail
Installs: 696 853
Dependents: 11
Suggesters: 0
Security: 0
Stars: 21
Watchers: 5
Forks: 7
Open Issues: 8
Requires
- php: >=8.2
- behat/behat: ^3.13.0
- friends-of-behat/mink-extension: ^2.7
- symfony/finder: ^6.4 || ^7.0
- symfony/http-client: ^6.0 || ^7.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- behat/mink-browserkit-driver: ^2.2
- behat/mink-selenium2-driver: ^1.7
- dealerdirect/phpcodesniffer-composer-installer: ^1
- drevops/behat-phpserver: ^1.2
- drupal/coder: ^8.3
- dvdoug/behat-code-coverage: ^5.3
- escapestudios/symfony2-coding-standard: ^3
- mikey179/vfsstream: ^1.6
- opis/closure: ^3.6
- phpmd/phpmd: ^2.13
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11
- rector/rector: ^1.0.0
- symfony/process: ^6.4 || ^7.0
README
Behat Screenshot Extension
Behat extension and step definitions to create HTML and image screenshots on demand or when tests fail.
Features
- Create a screenshot using
I save screenshot
orsave screenshot
step definition. - Create a screenshot when test fails.
- Screenshot is saved as HTML page for Goutte driver.
- Screenshot is saved as both HTML and PNG image for Selenium driver.
- Screenshot directory can be specified through environment
variable
BEHAT_SCREENSHOT_DIR
(useful for CI systems to override values inbehat.yml
). - Screenshots can be purged after every test run by setting
purge: true
( useful during test debugging) or setting environment variableBEHAT_SCREENSHOT_PURGE=1
.
Installation
composer require --dev drevops/behat-screenshot
Usage
Example behat.yml
with default parameters:
default: suites: default: contexts: - DrevOps\BehatScreenshotExtension\Context\ScreenshotContext - FeatureContext extensions: DrevOps\BehatScreenshotExtension: ~
or with parameters:
default: suites: default: contexts: - DrevOps\BehatScreenshotExtension\Context\ScreenshotContext - FeatureContext extensions: DrevOps\BehatScreenshotExtension: dir: '%paths.base%/screenshots' fail: true fail_prefix: 'failed_' purge: false filenamePattern: '{datetime:u}.{feature_file}.feature_{step_line}.{ext}' filenamePatternFailed: '{datetime:u}.{fail_prefix}{feature_file}.feature_{step_line}.{ext}'
In your feature:
Given I am on "http://google.com"
Then I save screenshot
You may optionally specify size of browser window in the screenshot step:
Then I save 1440 x 900 screenshot
And I save 800 x 600 screenshot
Options
Supported tokens
Maintenance
Local development setup
cp docker-compose.override.default.yml docker-compose.override.yml
docker compose up -d
docker compose exec phpserver composer install --ansi
Lint code
docker compose exec phpserver composer lint
Lint fix
docker compose exec phpserver composer lint-fix
Run tests
docker compose exec phpserver composer test
Enable Xdebug
XDEBUG_ENABLE=true docker compose up -d phpserver
To disable, run
docker compose up -d phpserver
Repository created using https://getscaffold.dev/ project scaffold template