Behat extension and step definitions to create HTML and image screenshots on demand or when tests fail.
- 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
.
composer require --dev drevops/behat-screenshot
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
Name | Default value | Description |
---|---|---|
dir |
%paths.base%/screenshots |
Path to directory to save screenshots. Directory structure will be created if the directory does not exist. |
fail |
true |
Capture screenshots for failed tests. |
fail_prefix |
failed_ |
Prefix failed screenshots with fail_ string. Useful to distinguish failed and intended screenshots. |
purge |
false |
Remove all files from the screenshots directory on each test run. Useful during debugging of tests. |
filenamePattern |
{datetime:u}.{feature_file}.feature_{step_line}.{ext} |
File name pattern for successful assertions. |
filenamePatternFailed |
{datetime:u}.{fail_prefix}{feature_file}.feature_{step_line}.{ext} |
File name pattern for failed assertions. |
Token | Substituted with | Example value(s) |
---|---|---|
{ext} |
The extension of the file captured | html or png |
{fail_prefix} |
The value of fail_prefix from configuration | failed_ , error_ (do include the _ suffix, if required) |
{url} |
Full URL | http_example_com_mypath_subpath__query__myquery_1_plus_2_plus_3_and_another1_4__fragment__somefragment |
{url_origin} |
Scheme with domain | http_example_com |
{url_relative} |
Path + query + fragment | mypath_subpath__query__myquery_1_plus_2_plus_3_and_another1_4__fragment__somefragment |
{url_domain} |
Domain | example_com |
{url_path} |
Path | mypath_subpath |
{url_query} |
Query | myquery_1_plus_2_plus_3_and_another1_4 |
{url_fragment} |
Fragment | somefragment |
{feature_file} |
The filename of the .feature file currently being executed, without extension |
my_example.feature -> my_example |
{step_line} |
Step line number | 1 , 10 , 100 |
{step_line:%03d} |
Step line number with leading zeros. Modifiers are from sprintf() . |
001 , 010 , 100 |
{step_name} |
Step name without Given/When/Then and lower-cased. |
i_am_on_the_test_page |
{datetime} |
Current date and time. defaults to Ymd_His format. |
20010310_171618 |
{datetime:U} |
Current date and time as microtime. Modifiers are from date() . |
1697490961192498 |
composer install
docker run -d -p 4444:4444 selenium/standalone-chromium:130.0
composer lint
composer lint-fix
composer test-unit # Run unit tests.
composer test-bdd # Run BDD tests.
Repository created using https://getscaffold.dev/ project scaffold template