This service can be used with any project type. The examples below are Drupal-specific. Contributions for docs and tests that show this service working with other project types are appreciated.
For DDEV v1.23.5 or above run
ddev add-on get ddev/ddev-selenium-standalone-chrome
For earlier versions of DDEV run
ddev get ddev/ddev-selenium-standalone-chrome
Then restart your project
ddev restart
- Update the provided
.ddev/config.selenium-standalone-chrome.yaml
as you see fit (and remove the #ddev-generated line). You can also just override lines in your.ddev/config.yaml
- Check
config.selenium-standalone-chrome.yaml
anddocker-compose.selenium-chrome.yaml
into your source control. - Update by re-running
ddev add-on get ddev/ddev-selenium-standalone-chrome
.
- Your project is now ready to run FunctionalJavascript and Nightwatch tests from Drupal core, or Drupal Test Traits (DTT). All these types are tested in this repo. Some examples to try:
- FunctionalJavascript:
- Ensure you have the
drupal/core-dev
Composer package or equivalent. ddev exec -d /var/www/html/web "../vendor/bin/phpunit -v -c ./core/phpunit.xml.dist ./core/modules/system/tests/src/FunctionalJavascript/FrameworkTest.php"
- Ensure you have the
- Nightwatch
ddev exec -d /var/www/html/web/core yarn install
(do this once)ddev exec -d /var/www/html/web/core touch .env
(do this once)ddev exec -d /var/www/html/web/core yarn test:nightwatch tests/Drupal/Nightwatch/Tests/exampleTest.js
- Drupal Test Traits
- Ensure you have a working site that has the
weitzman/drupal-test-traits
Composer package. ddev exec -d /var/www/html/web "../vendor/bin/phpunit --bootstrap=../vendor/weitzman/drupal-test-traits/src/bootstrap-fast.php --printer '\Drupal\Tests\Listeners\HtmlOutputPrinter' ../vendor/weitzman/drupal-test-traits/tests/ExampleSelenium2DriverTest.php"
- Ensure you have a working site that has the
- FunctionalJavascript:
- Remove --headless from the MINK_DRIVER_ARGS_WEBDRIVER in your project's .ddev/config.selenium-standalone-chrome.yaml. Run
ddev restart
. - On your host, run
ddev launch :7900
or browse to https://[DDEV SITE URL]:7900 to watch tests run with noVNC (neat!).
By default noVNC connects without password, you can enable password by removing the "VNC_NO_PASSWORD=1" line in the file docker-compose.selenium-chrome.yaml
, the default password will be secret
, and you can set the custom one via VNC_PASSWORD
environment variable.
This enables you to quickly see what is going on with your tests.
If you are using something like behat and want to debug tests when they fail by manually navigating around your site in the Chromium browser included with this addon, you might want to use a VNC client installed on your machine, such as Screen Sharing on macOS (built-in) or TightVNC on Linux and Windows (must be downloaded and installed). This is because with noVNC, you are running a browser (Chromium) inside another browser (whatever browser you use on your local machine), which can be inconvenient-- for example, the keyboard shortcut to reload a page in Chromium will reload your local browser and kick you out of noVNC instead of reloading Chromium, and it may be hard to type a new url in the Chromium address bar due to how your local browser handles keyboard input.
In other words, if you just want to watch the tests, use noVNC.
If you want to use the browser provided by this addon to check out the test results by poking around your site, consider using a local VNC client. To do so, you need to open port 5900.
- Open
.ddev/docker-compose.selenium-chrome.yaml
. - Uncomment the two lines about
ports
and5900:5900
. - Execute
ddev restart
.
You can now connect to [DDEV SITE URL]:5900 (password: secret
) in your VNC client.
Note that when using ports
, only one project at a time can be running with port 5900.
If you use Behat as a test running, adjust your behat.yml
extensions:
Behat\MinkExtension:
base_url: http://web
selenium2:
wd_host: http://selenium-chrome:4444/wd/hub
capabilities:
chrome:
switches:
- "--disable-gpu"
- "--headless"
- "--no-sandbox"
- "--disable-dev-shm-usage"
- Anyone is welcome to submit a PR to this repo. See README.md at https://github.com/ddev/ddev-addon-template, the parent of this repo.
- Contributed and maintained by @weitzman.