drevops/behat-screenshot

Behat extension and step definitions to create HTML and image screenshots on demand or when tests fail

Fund package maintenance!
Patreon

Installs: 440 774

Dependents: 11

Suggesters: 0

Security: 0

Stars: 19

Watchers: 4

Forks: 7

Open Issues: 10

1.3.0 2024-01-02 03:09 UTC

README

Behat screenshot logo

Behat Screenshot Extension

GitHub Issues GitHub Pull Requests CircleCI GitHub release (latest by date) LICENSE Renovate

Total Downloads

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 or save 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 in behat.yml).
  • Screenshots can be purged after every test run by setting purge: true (useful during test debugging) or setting environment variable BEHAT_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

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

  • dir: path/to/dir (default %paths.base%/screenshots)

    Path to directory to save screenshots. Directory structure will be created if the directory does not exist.

  • fail: true or false (default true)

    Capture screenshots for failed tests.

  • fail_prefix: (default failed_)

    Prefix failed screenshots with fail_ string. Useful to distinguish failed and intended screenshots.

  • purge: true or false (default false)

    Remove all files from the screenshots directory on each test run. Useful during debugging of tests. Can be overridden with BEHAT_SCREENSHOT_PURGE environment variable set to 1 or true.

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