Докер: Как использовать сервер selenium для выполнения теста nightwatchJS?

Я не знаю, как запустить сервер selenium с моим приложением NodeJS, файлы которого находятся в папке ./bundle пользовательского образа docker e2e:latest.

Я думаю, что мне нужно добавить сервер селена и webdriver chrome в файл Docker для изображения e2e:latest, не так ли?

Это то, что я сделал до сих пор:

Я создал jQuery: 8-jre на основе изображения докеров с NodeJS и nightwatchJS:

Dockerfile

FROM java:8-jre

## Node.js setup
RUN curl -sL https://deb.nodesource.com/setup_4.x | bash -
RUN apt-get install -y nodejs

## Nightwatch
RUN npm install -g nightwatch

Это изображение затем используется для теста:

gitlab-ci.yml

build:
  stage: build
  tags:
    - deploy
  script:
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
    - meteor npm install --production
    - meteor build $PACKAGE_PATH --directory
    # Maybe something like...? - docker build -t $CI_REGISTRY_IMAGE:e2e .

nightwatch:
  image: e2e:latest
  stage: e2e
  tags:
    - e2e
  before_script:
    - cd ./bundle
  script:
    - nightwatch

Конфигурация выглядит так:

nightwatch.conf.js

module.exports = {
    'src_folders'           : ['test/e2e'],
    'output_folder'         : 'reports',
    'custom_commands_path'  : '',
    'custom_assertions_path': '',
    'page_objects_path'     : '',
    'globals_path'          : '',
    'test_runner'           : {
        'type'   : 'mocha',
        'options': {
            'ui'      : 'bdd',
            'reporter': 'list'
        }
    },

    'selenium': {
        'start_process': false,
        'server_path'  : '',
        'log_path'     : '',
        'host'         : '127.0.0.1',
        'port'         : 4444,
        'cli_args'     : {
            'webdriver.chrome.driver': './bin/chromedriver'
        }
    },

    'test_settings': {
        'default': {
            'launch_url'   : 'http://localhost',
            'selenium_port': 4444,
            'selenium_host': 'localhost',
            'silent'       : true,
            'screenshots'  : {
                'enabled': true,
                'path'   : 'reports/error-screenshots'
            },
            'desiredCapabilities': {
                'browserName'      : 'chrome',
                'javascriptEnabled': true,
                'acceptSslCerts'   : true
            }
        },

        'chrome': {
            'desiredCapabilities': {
                'browserName'      : 'chrome',
                'javascriptEnabled': true,
                'acceptSslCerts'   : true
            }
        }
    }
}

Ответы

Ответ 1

Не уверен, подходит ли это для Gitlab CI, но посмотрите Selenoid. Это небольшой (6 Мбайт) двоичный файл, который запускает браузеры в отдельных контейнерах Docker или напрямую запускает процесс Webdriver. Поэтому, если контейнерный подход не подходит для ваших нужд, попробуйте упаковать Selenoid +, например. Chromedriver + Chrome в тот же контейнер с Node.js. Не нужно для установки Java при использовании Selenoid.