Почему мой тест Nightwatch. js не может подключиться к локальному порту 9515 на CircleCI, а успешно работает локально? - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь узнать, как настроить тесты CI, используя Nightwatch и CircleCI. У меня есть пример теста, выполняемый локально, но он не проходит при запуске CircleCI. Я получаю этот вывод:

#!/bin/bash -eo pipefail
sudo npm test -- --headless

> nw@1.0.0 test /home/seluser/project
> nightwatch "--headless"


[First Test] Test Suite
=======================
⠋ Connecting to localhost on port 9515...
⠙ Connecting to localhost on port 9515...
⚠ Error connecting to localhost on port 9515.
_________________________________________________

TEST FAILURE: 1 error during execution; 0 tests failed, 0 passed (384ms)

 ✖ firstTest

  Error: An error occurred while retrieving a new session: "unknown error: Chrome failed to start: exited abnormally."
       at endReadableNT (_stream_readable.js:1201:12)
       at processTicksAndRejections (internal/process/task_queues.js:84:21)

   SKIPPED:
   - Demo test ecosia.org

npm ERR! Test failed.  See above for more details.


Exited with code exit status 1
CircleCI received exit code 1

Я подозреваю, что изображение docker, которое я использую, неправильно настроено для того, что я пытаюсь сделать, но я не совсем уверен. Это мой config.yml:

version: 2.1
jobs:
  build:
    docker:
      - image: selenium/standalone-chrome:3.1.0
    steps:
      - checkout
      - run: sudo apt-get update
      - run: sudo apt-get install curl -y
      - run: sudo curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
      - run: sudo apt-get install -y nodejs
      - run: sudo npm install chromedriver
      - run: sudo npm install nightwatch
      - run: sudo npm test -- --headless

Наконец, вот мой nightwatch.conf. js:

module.exports = {
  // An array of folders (excluding subfolders) where your tests are located;
  // if this is not specified, the test source must be passed as the second argument to the test runner.
  src_folders: ['tests'],

  webdriver: {
    start_process: true,
    port: 9515,
    server_path: require('chromedriver').path,
    cli_args: [
      '--no-sandbox',
      '--headless',
      '--port=9515',
      '--verbose'
    ]
  },

  test_settings: {
    default: {
      launch_url: 'https://nightwatchjs.org',
      desiredCapabilities : {
        browserName : 'chrome',
        alwaysMatch: {
          'chromeOptions': {
            "args": [
               '--headless',
               '--verbose'
            ],
          }
        }
      }
    }
  }
};

Я думаю, что это вся необходимая информация. Я был бы очень признателен за понимание того, что здесь происходит не так!

На всякий случай, если это поможет, вот успешный вывод на мою локальную машину:

ubuntu@ubuntu:~/nw$ npm test

> nw@1.0.0 test /home/ubuntu/nw
> nightwatch


[First Test] Test Suite
=======================
ℹ Connected to localhost on port 9515 (358ms).
  Using: chrome (80.0.3987.149) on Linux platform.

Running:  Demo test ecosia.org

✔ Element <body> was visible after 31 milliseconds.
✔ Testing if the page title contains 'Ecosia' (6ms)
✔ Testing if element <input[type=search]> is visible (30ms)
✔ Testing if element <button[type=submit]> is visible (34ms)
✔ Testing if element <.mainline-results> contains text 'Nightwatch.js' (138ms)

OK. 5 assertions passed. (3.481s)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...