Bitbucket Pipeline не может запустить тесты Nightwatch E2E с ошибкой Chromedriver

Я пытаюсь запустить свои тесты E2E, используя nightwatch, при развертывании в конвейере битбакета. У меня установлены ночные часы, локально установлен chromedriver на моем компьютере с Windows, и все работает.

Когда я запускаю npm nightwatch в конвейере, я получаю эту ошибку

An error occurred while trying to start ChromeDriver: cannot resolve path: "/opt/atlassian/pipelines/agent/build/node_modules/chromedriver/lib/chromedriver/chromedriver". Please check that the "webdriver.server_path" config property is set correctly.

Это файловая структура пути, который он указывает

Структура файла

node_modules/
    chromedriver/
        lib/
            chromdriver/
                chromerdriver.exe
                chromedriver_win32.zip

Так что ясно, что node_modules/chromedriver/lib/chromedriver/chromedriver не существует. Контейнером является Linux, поэтому он не знает, как выполнить файл chromedriver.exe.

Итак, как я могу заставить конвейер битбакета запускать chromedriver.exe? Или как мне указать chromedriver путь, который он ищет. Я уверен, что кому-то приходилось сталкиваться с этим раньше. Какое-то время боролся с этим и ищу помощи. Спасибо.

файл bitbucket-pipelines.yml

image: rastasheep/alpine-node-chromium
pipelines:
  custom:
    develop:
      - step:
          name: Serve and Test
          caches:
            - node
          script:
            - apt-get update && apt-get install -yq libnss3
            - if [ ! -d "node_modules/nightwatch" ]; then npm install; fi
            - npm start
            - npm run nightwatch

nightwatch.conf.js

const chrome = require('chromedriver')

module.exports = {
  'src_folders': [
    './nightwatch/tests/elements'
  ],
  'output_folder': './nightwatch/reports',
  'globals_path': './nightwatch/utils/globals/globals.js',
  'webdriver': {
    'start_process': true,
    'server_path': chrome.path,
    'log_path': './nightwatch/reports',
    'cli_args': [
      '--verbose'
    ],
    'port': 9515
  },
  'test_settings': {
    'default': {
      'launch_url': 'http://localhost:3100',
      'desiredCapabilities': {
        'browserName': 'chrome',
        'javascriptEnabled': true,
        'chromeOptions': {
          'args': [
            'no-sandbox',
            'headless'
          ]
        }
      },
      'screenshots': {
        'enabled': true,
        'on_failure': true,
        'on_error': true,
        'path': 'nightwatch/screenshots'
      }
    }
  }
}

person bilcker    schedule 05.09.2019    source источник


Ответы (1)


Я смог решить эту проблему, удалив rastasheep/alpine-node-chromium, добавив изображение узла и самостоятельно установив хром на этом этапе.

image: node:10.15.0
pipelines:
  default:
    - step:
    name: NewHomePageNav
    script:
      # First we are going to install dependencies that chrome and chromedriver will need
      - apt-get update && apt-get install -yq libnss3 unzip openjdk-8-jre-headless xvfb libxi6 libgconf-2-4
      # Install chrome browser as it does not exist with the node image
      - curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
      - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
      - apt-get -y update
      - apt-get -y install google-chrome-stable
      - npm install
      # Start and run your server. Using the & will allow bitbucket to move onto testing
      - npm start &
      - npm test
person bilcker    schedule 05.09.2019