A self-contained Docker image to run Behat with no external dependencies.
This image is part of the Docksal project.
Features:
- PHP7, Composer 2
- Behat 3.8.x
- DrupalExtension 4.1.x
Use this image as if you were using a binary.
Working directory is expected to be mounted at /src
in the container.
$ docker run --rm -v $(pwd):/src docksal/behat --version
behat 3.8.1
You can also add a shell alias (in .bashrc
, .zshrc
, etc.) for convenience.
alias behat='docker run --rm -v $(pwd):/src docksal/behat --colors "$@"'
Restart your shell or open a new one, then
$ behat --version
behat 3.8.1
Sample setup and tests can be found in the example folder.
Features:
- Sample tests
- Headless Selenium Chrome/Firefox support
- HTML report
git clone https://github.com/docksal/behat.git docksal-behat
cd docksal-behat/example
behat features/blackbox.feature
Note: if you did not add the shell alias, replace behat
with docker run --rm -v $(pwd):/src docksal/behat --colors
.
To run Behat tests that require a real browser (e.g. for JavaScript support) a headless Selenium Chrome/Firefox can be used.
There is a Docker Compose configuration in the example folder, that will get you up and running with a Selenium Chrome.
cd example
docker-compose up -d
./run-behat features/blackbox-javascript.feature
In this case, you get two containers - one running a built-in PHP server for access to HTML reports and one running Selenium. Behat runs within the first container and talks to the Selenium container to run tests with a real browser (Chrome/Firefox).
-
Uncomment a respective line in
docker-compose.yml
:# Pick/uncomment one image: selenium/standalone-chrome-debug:3.141.59 #image: selenium/standalone-firefox-debug:3.141.59
-
Update container configuration
docker-compose up -d
-
Update
behat.yml
as necessary Chromebrowser_name: chrome selenium2: wd_host: http://browser:4444/wd/hub capabilities: { "browser": "chrome", "version": "*" }
Firefox
browser_name: firefox selenium2: wd_host: http://browser:4444/wd/hub capabilities: { "browser": "firefox", "version": "*" }
-
Run tests
HTML report will be generated into the html_report
folder.
It can be accessed by navigating to http://<your-docker-host-ip>:8000/html_report
in your browser.
Replace <your-docker-host-ip>
as necessary (e.g. localhost
).
The Bex
extension will generate a screenshot when you have a failed step.
You can configure the folder that the screenshots are saved into through the behat.yml
file. Check the example and look for screenshot_directory
under Bex\Behat\ScreenshotExtension
.
The following command will start a bash session in the container.
docker run --rm -v $(pwd):/src -it --entrypoint=bash docksal/behat