Имеется следующий стек:
Ruby 2.3.3
selenium-webdriver
capybara
chromedriver-helper
Решил запустить тесты в докере (linux) с использованием headless chrome (раньше использовал poltergeist):
- Dockerfile:
FROM ruby:2.3.3
RUN apt-get update
RUN apt-get install -y libappindicator1 fonts-liberation curl \
libasound2 libgconf2-4 libnspr4 libxss1 libnss3 xdg-utils wget unzip
RUN apt-get install -y vim-gtk
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
RUN dpkg -i --force-depends google-chrome-stable_current_amd64.deb
RUN apt-get install -f -y
RUN curl -O https://chromedriver.storage.googleapis.com/2.31/chromedriver_linux64.zip && \
unzip chromedriver_linux64.zip && \
chmod +x chromedriver && \
mv -f chromedriver /usr/local/share/chromedriver && \
ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver && \
ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
RUN curl -LO https://releases.hashicorp.com/envconsul/0.6.1/envconsul_0.6.1_linux_amd64.zip && \
unzip envconsul_0.6.1_linux_amd64.zip && \
rm envconsul_0.6.1_linux_amd64.zip && \
mv envconsul /bin/envconsul && \
chmod +x /bin/envconsul
RUN mkdir -p /autotests
WORKDIR /autotests
ADD Gemfile* ./
RUN bundle install
2.Прописал настройки драйвера в env.rb:
Capybara.register_driver :selenium_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome,
args: ['--headless', '--disable-gpu'])
end
3.Контейнер запустился, но при запуске тестов возникает ошибка:
unknown error: Chrome failed to start: crashed
Я так понимаю что в env.rb нужно аргументом указать путь к бинарнику хрома, что я и делал, но такой конфиг его тоже не устраивает:
Capybara.register_driver :selenium_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome, binary: "/opt/google/chrome", args: ['--headless', '--disable-gpu','--window-size=1920,1080', '--disable-web-security'])
end
Так как он в методах класса Capybara::Selenium::Driver отсутствует аргумент binary