Я пытаюсь настроить непрерывную интеграцию с Gitlab для очень простого проекта Rails и, несмотря на все мои поиски, не могу найти никакого работоспособного решения для обеспечения работы системных тестов с использованием Chrome без головы.
Вот мой .gitlab-ci.yml
файл:
image: 'ruby:2.6.3'
before_script:
- curl -sL https://deb.nodesource.com/setup_11.x | bash -
- apt-get install -y nodejs
- apt-get install -y npm
- gem install bundler --conservative
- bundle install
- npm install -g yarn
- yarn install
stages:
- test
test:
stage: test
variables:
MYSQL_HOST: 'mysql'
MYSQL_DATABASE: 'cwrmb_test'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
SYSTEM_EMAIL: 'test@example.com'
REDIS_URL: 'redis://redis:6379/'
SELENIUM_URL: "http://selenium__standalone-chrome:4444/wd/hub"
services:
- redis:latest
- selenium/standalone-chrome:latest
- name: mysql:latest
command: ['--default-authentication-plugin=mysql_native_password']
script:
- RAILS_ENV=test bin/rails db:setup
- bin/rails test:system
Вот мой application_system_test_case.rb
:
require 'test_helper'
def selenium_options
driver_options = {
desired_capabilities: {
chromeOptions: {
args: %w[headless disable-gpu no-sandbox disable-dev-shm-usage]
}
}
}
driver_options[:url] = ENV['SELENIUM_URL'] if ENV['SELENIUM_URL']
driver_options
end
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by :selenium, using: :chrome, screen_size: [1400, 1400], options: selenium_options
end
Однако эта конфигурация выдает следующую ошибку для каждого системного теста:
Selenium::WebDriver::Error::UnknownError: java.net.ConnectException: Connection refused (Connection refused)
Я не верю, что в этом файле конфигурации есть какие-либо другие ошибки (связанные с Redis или MySQL), потому что, как только я опускаю системные тесты, все работает отлично.
Кстати, если у кого-то есть более подходящие файлы конфигурации для достижения той же цели, мне бы хотелось посмотреть, что делают другие. Заранее спасибо.