Quantcast
Channel: Issues for Drupal core
Viewing all articles
Browse latest Browse all 293902

Nightwatch tests cannot run within lando environment

$
0
0

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

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 7
if (process.env.DRUPAL_TEST_WEBSERVER_USER) {
becomes:
if (process.env.DRUPAL_TEST_WEBSERVER_USER && process.env.DRUPAL_TEST_DOCKER) {


Viewing all articles
Browse latest Browse all 293902

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>