Problem/Motivation
Nightwatch will not run tests in a lando/docker environment because docker does not have `sudo`
Steps to reproduce
Follow Lando-docker-nightwatch setup:
Insert into lando.yml
appserver:
webroot: docroot
build_as_root:
# Nightwatch config
- curl -sL https://deb.nodesource.com/setup_18.x | bash -
- apt-get install -y nodejs
- npm install -g yarn
run:
- mkdir -p private/browsertest_output
- yarn add @nightwatch/vrt --cwd /app/docroot/core
- yarn install --non-interactive --cwd /app/docroot/core
overrides:
environment:
# Support debugging CLI with Xdebug.
PHP_IDE_CONFIG: "serverName=appserver"
# nightwatch config
SIMPLETEST_BASE_URL: "http://mysite.lndo.site/"
SIMPLETEST_DB: "sqlite://localhost/tmp/db.sqlite"
BROWSERTEST_OUTPUT_DIRECTORY: '/app/docroot/sites/simpletest/browser_output'
BROWSERTEST_OUTPUT_BASE_URL: 'http://mysite.lndo.site'
MINK_DRIVER_ARGS_WEBDRIVER: '["chrome", {"browserName":"chrome","chromeOptions":{"args":["--disable-gpu","--headless"]}}, "http://chrome:9515"]' # Nightwatch
DRUPAL_TEST_BASE_URL: 'http://mysite.lndo.site'
DRUPAL_TEST_DB_URL: 'mysql://drupal10:drupal10@database:3306/drupal10'
DRUPAL_TEST_WEBDRIVER_HOSTNAME: chrome
DRUPAL_TEST_WEBDRIVER_PORT: 9515
DRUPAL_TEST_CHROMEDRIVER_AUTOSTART: 'false'
DRUPAL_TEST_WEBDRIVER_CHROME_ARGS: "--disable-gpu --headless --no-sandbox"
DRUPAL_NIGHTWATCH_OUTPUT: reports/nightwatch
DRUPAL_NIGHTWATCH_IGNORE_DIRECTORIES: node_modules,vendor,.*,sites/*/files,sites/*/private,sites/simpletest
chrome:
type: compose
scanner: false
app_mount: false
services:
image: drupalci/chromedriver:production
expose:
- "9515"
- "4444"
volumes:
- /dev/shm:/dev/shm
security_opt:
- seccomp:unconfined
command: ["chromedriver", "--log-path=/tmp/chromedriver.log", "--verbose", "--allowed-ips=", "--allowed-origins=*", "--whitelisted-ips="]
# Custom Lando commands
tooling:
npm:
service: appserver
node:
service: appserver
gulp:
service: appserver
yarn:
service: appserver
cmd: yarn
In docroot/core copy and rename .env.example to .env and set appropriate variables if desired.
In terminal move to core directory cd docroot/core
Install modules lando yarn install
Run a single test `lando yarn test:nightwatch tests/Drupal/Nightwatch/Tests/loginTest.js`
Expected results
test would not error with /bin/sh: 1: sudo: not found
Proposed resolution
/bin/sh: 1: sudo: not found
Proposed resolution
Add variable to .env and boolean to let user decide if they would like to run tests within a docker environment.DRUPAL_TEST_DOCKER=FALSE
Add boolean check to `/core/tests/Drupal/Nightwatch/global.js` line 7if (process.env.DRUPAL_TEST_WEBSERVER_USER) {
becomes:if (process.env.DRUPAL_TEST_WEBSERVER_USER && process.env.DRUPAL_TEST_DOCKER) {