Выполнение тестов E2E с помощью программы-исполнителя докеров gitlab-runner вылетает с ошибкой spawn chromedriver ENOENT

У меня есть проект тестов e2e в транспортире (v7) с хромом, установленным в качестве целевого браузера в config.ts

...
directConnect: true,
multiCapabilities: [
    {
      browserName: 'chrome',
      chromeOptions: {
        args: ["--headless", "--disable-gpu", "--window-size=1920x1080", "--no-sandbox"]
      }
    }
],
...

Запуск проекта через исполнитель оболочки gitlab-runner с gitlab-runner exec shell run_tests работает нормально, но если я запускаю его через исполнитель докеров gitlab-runner с gitlab-runner exec docker run_tests, он вылетает на yarn test cmd (который в основном переводится как protractor config.ts) скрипта gitlab-ci со следующим журналы:

protractor config.ts
[09:14:27] I/launcher - Running 1 instances of WebDriver
[09:14:27] I/direct - Using ChromeDriver directly...
[09:14:27] E/launcher - spawn /builds/project-0/node_modules/webdriver-manager/selenium/chromedriver_90.0.4430.24 ENOENT
[09:14:27] E/launcher - Error: spawn /builds/project-0/node_modules/webdriver-manager/selenium/chromedriver_90.0.4430.24 ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:249:19)
    at onErrorNT (internal/child_process.js:442:16)
    at processTicksAndRejections (internal/process/task_queues.js:84:9)
[09:14:27] E/launcher - Process exited with error code 199
error Command failed with exit code 199.

.gitlab-ci.yml выглядит так:

image: node:12.2.0-alpine

stages:
  - run

variables:
  SERVER_URL: "https://xyz.io/login"
  USER_1_USERNAME: "rico"

run_tests:
  stage: run
  script:
    - echo $SERVER_URL
    - echo $USER_1_USERNAME
    - yarn install:deps
    - yarn test

Любая помощь будет высоко ценится. Мне не хватает установки Chrome в скрипте ci?


person oomer    schedule 06.05.2021    source источник


Ответы (1)


Итак, моя догадка была правильной, в основном отсутствовала установка google chrome, и, поскольку я использовал образ alpine docker, установка Chrome была тоже нелегкий подвиг. Итак, мне пришлось изменить образ докера на node:<version>, который является образами на основе debian и включает инструкции по установке Chrome, используя информацию из https://askubuntu.com/a/196100/1217294, только исключая sudos (они не нужны в контейнере gitlab-runner) и включая и -y (чтобы обойти подсказку пользователя) после установки apt-get, и это сработало. Вот как выглядит мой скрипт gitlab ci:

image: node:12

stages:
  - run

run_tests:
  stage: run
  script:
    - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - 
    - sh -c 'echo "deb https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
    - apt-get update
    - apt-get install -y google-chrome-stable
    - yarn install:deps
    - yarn test
person oomer    schedule 07.05.2021