前提・実現したいこと
docker環境でrspecのjs:trueのsystemspecでエラーが出てしまう。
発生している問題・エラーメッセージ
エラーメッセージ 1.1) Failure/Error: visit root_path Selenium::WebDriver::Error::UnknownError: unknown error: Chrome failed to start: crashed. (chrome not reachable) (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.) Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53' System info: host: '92c07f261f73', ip: '172.29.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.19.104-linuxkit', java.version: '1.8.0_275' Driver info: driver.version: unknown remote stacktrace: #0 0x004000614199 <unknown>
該当のソースコード
ソースコード **Dockerfile** FROM ruby:2.6.5 # yarnのインストール RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs yarn WORKDIR /local-eating COPY Gemfile Gemfile.lock /local-eating/ RUN gem install bundler -v 2.1.4 RUN bundle install COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 **docker-compose.yml** version: '3' services: db: image: mysql@sha256:e29f4d4b43951c766cd6bacca8d05ac545ec76bb7f42e798bed5e2038c5e2753 #macM1OSの為、ハッシュ指定でエラーとならないように5.6を指定 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: root ports: - "4306:3306" volumes: - ./mysql-data:/var/lib/mysql web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/local-eating - bundle:/usr/local/bundle ports: - "3000:3000" depends_on: - db - chrome env_file: my_env_file.env tty: true stdin_open: true environment: SELENIUM_DRIVER_URL: http://chrome:4444/wd/hub chrome: image: selenium/standalone-chrome:latest ports: - "4444:4444" volumes: mysql-data: bundle: **rails_helper.rb** Capybara.register_driver :remote_chrome do |app| url = "http://chrome:4444/wd/hub" caps = ::Selenium::WebDriver::Remote::Capabilities.chrome( 'goog:chromeOptions' => { 'args' => [ 'no-sandbox', 'headless', 'disable-gpu', 'window-size=1680,1050' ] } ) Capybara::Selenium::Driver.new(app, browser: :remote, url: url, desired_capabilities: caps) end RSpec.configure do |config| config.before(:each, type: :system) do driven_by :rack_test end # js:trueのテスト動かず config.before(:each, type: :system, js: true) do driven_by :remote_chrome Capybara.server_host = IPSocket.getaddress(Socket.gethostname) Capybara.server_port = 4444 Capybara.app_host = "http://#{Capybara.server_host}:#{Capybara.server_port}" end end **gemfile** group :test do # Adds support for Capybara system testing and selenium driver gem 'capybara', '>= 2.15' gem 'selenium-webdriver' end group :development, :test do gem 'rspec-rails' end
試したこと
js:true以外のsystemspecはパスするので、chromeの接続自体はできているが、selenium-webdriver使用時にエラーが出てしまう。quiteなどを参考にselenium-webdriverのupdateやchromeコンテナのバージョン確認等行ったがエラー分変わらず。丸2日かけて主にquiteを参考に様々なパターンを試したが改善に至らず、ご教授頂きたいです。
以下参考一部
https://qiita.com/ngron/items/f61b8635b4d67f666d75
https://qiita.com/masarashi/items/84761a4e8de494f4d073
https://qiita.com/ryohei_kh/items/2249c13d30648f50b9c8
補足情報(FW/ツールのバージョンなど)
環境
rails 6.0.3.4
capybara (3.35.3)
rspec-rails (4.0.1)
selenium-webdriver (3.142.7)
OS macM1
Docker previewバージョン7
あなたの回答
tips
プレビュー