前提・実現したいこと
現在、Railsを勉強しています。
現場で使えるRuby on Rails 5 速習実践ガイドという教材を進めています。
aws cloud9 を使ってRailsTutorialをしていたため、そのままawsで勉強を続けています。
その中で、新しくRSpecを用いてコードを書いています。
テストを作成し、rspecを実行したところで以下のエラーメッセージが出ました。
発生している問題・エラーメッセージ
Selenium::WebDriver::Error::UnknownError: unknown error: cannot find Chrome binary
これについては以下のページの内容を参考にしました。
参考: https://kuracux.hatenablog.jp/entry/2018/12/30/182617
Amazon LinuxにChromeが入っていないことが原因だと考えられます。
下記コマンドを実行し、インストールを行ないましょう。
$ curl https://intoli.com/install-google-chrome.sh | bash
これで解決したと思ったのですが、この後再度rspecを実行すると、
Selenium::WebDriver::Error::SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 74 (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Linux 4.14.97-74.72.amzn1.x86_64 x86_64)
と出て、テストが実行できず、詰まってしまいました。
試したこと
エラー文から察するに
chromedriverとChromeのバージョンが違うので、それをあわせることが必要という解釈をしました。
自分なりに調べて、以下のページなどを参考に、Chromeのバージョンを74にあげる方法を模索しましたが、できませんでした。
参考:CircleCIのChromeとchromedriver-helperのchromedriverのバージョンを揃える
https://qiita.com/IYD37/items/a5a9eee71dde858d19d3
参考:CircleCIのChromeを最新版に
https://ryotah.hatenablog.com/entry/2017/01/16/214215
OSなど何か前提条件が自分と違うため、上手くいかなかったと思います。
ex.apt-getが使えないなど。
補足情報(FW/ツールのバージョンなど)
環境設定やOSについての知識が乏しく、この問題を解決するために必要な情報を判断することができなかったため、
自分がわかる範囲で手がかりになりそうな情報を以下に記載しました。
開発環境 AWS cloud9
データベース PostgreSQL
Amazon Linux のバージョン Amazon Linux AMI release 2018.03
GemFile
source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.5.1' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.2.1' # Use postgresql as the database for Active Record gem 'pg', '>= 0.18', '< 2.0' # Use Puma as the app server gem 'puma', '~> 3.11' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # See https://github.com/rails/execjs#readme for more supported runtimes # gem 'mini_racer', platforms: :ruby # Use CoffeeScript for .coffee assets and views gem 'coffee-rails', '~> 4.2' # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks gem 'turbolinks', '~> 5' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.5' # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 4.0' # Use ActiveModel has_secure_password gem 'bcrypt', '~> 3.1.7' # Use ActiveStorage variant # gem 'mini_magick', '~> 4.8' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.1.0', require: false group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] gem 'factory_bot_rails', '~> 4.11' end group :development do # Access an interactive console on exception pages or by calling 'console' anywhere in the code. gem 'web-console', '>= 3.3.0' gem 'listen', '>= 3.0.5', '< 3.2' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' end group :test do # Adds support for Capybara system testing and selenium driver gem 'capybara', '>= 2.15' gem 'selenium-webdriver' # Easy installation and use of chromedriver to run system tests with Chrome gem 'chromedriver-helper' gem 'rspec-rails', '~> 3.7' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] gem 'slim-rails' gem 'html2slim' gem 'bootstrap' gem 'rails_autolink'
教材と違う環境で進めているため、そもそも間違った環境を作ってしまっているのかもしれません。
また、ひとつ気がかりなのは、教材で出てきた「windowsであればUbuntuをインストールする」というところを飛ばした点です。
awsで勉強を進めていくのには関係がないんじゃないかなと考えたため、飛ばしましたが正しい判断だったのでしょうか...
その他解決に必要な情報があれば、教えていただけると幸いです。
まとまっていない質問になりましたが、どうぞよろしくお願いします。
最後まで読んでくださりありがとうございます。
お力添えよろしくお願いします。
### 変更後
連絡お待たせしました。
ご助言通りに試した後、
Rspecを実行したところ、以下のエラーが起きました。
$ bundle exec rspec spec/system/tasks_spec.rb Capybara starting Puma... * Version 3.12.0 , codename: Llamas in Pajamas * Min threads: 0, max threads: 4 * Listening on tcp://127.0.0.1:33295 /home/ec2-user/.rvm/gems/ruby-2.5.1/bin/rspec: No such file or directory - google-chrome /home/ec2-user/.rvm/gems/ruby-2.5.1/bin/rspec: No such file or directory - google-chrome F Failures: 1) タスク管理機能 一覧表示機能 ユーザーAがログインしているとき ユーザーAが作成したタスクが表示される Got 0 failures and 2 other errors: 1.1) Failure/Error: visit login_path NoMethodError: undefined method `chomp' for nil:NilClass # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:69:in `chrome_version' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:55:in `release_version' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:19:in `latest_version' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/common.rb:37:in `desired_version' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/common.rb:16:in `update' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/selenium.rb:7:in `driver_path' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/chrome/driver.rb:38:in `initialize' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/common/driver.rb:44:in `new' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/common/driver.rb:44:in `for' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver.rb:86:in `for' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/selenium/driver.rb:31:in `browser' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/selenium/driver.rb:58:in `visit' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/session.rb:269:in `visit' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/dsl.rb:51:in `block (2 levels) in <module:DSL>' # ./spec/system/tasks_spec.rb:13:in `block (4 levels) in <top (required)>' 1.2) Failure/Error: ver = case platform when 'win' chrome_on_windows when /linux/ chrome_on_linux when 'mac' chrome_on_mac else raise NotImplementedError, 'Your OS is not supported by webdrivers gem.' end.chomp NoMethodError: undefined method `chomp' for nil:NilClass # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:69:in `chrome_version' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:55:in `release_version' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/chromedriver.rb:19:in `latest_version' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/common.rb:37:in `desired_version' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/common.rb:16:in `update' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/webdrivers-3.7.0/lib/webdrivers/selenium.rb:7:in `driver_path' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/chrome/driver.rb:38:in `initialize' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/common/driver.rb:44:in `new' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver/common/driver.rb:44:in `for' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/selenium-webdriver-3.14.0/lib/selenium/webdriver.rb:86:in `for' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/selenium/driver.rb:31:in `browser' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/selenium/driver.rb:112:in `save_screenshot' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/session.rb:709:in `block in save_screenshot' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/session.rb:709:in `tap' # /home/ec2-user/.rvm/gems/ruby-2.5.1/gems/capybara-3.6.0/lib/capybara/session.rb:709:in `save_screenshot' Finished in 0.91785 seconds (files took 1.09 seconds to load) 1 example, 1 failure Failed examples: rspec ./spec/system/tasks_spec.rb:19 # タスク管理機能 一覧表示機能 ユーザーAがログインしているとき ユーザーAが作成したタスクが表示 される
なるべく、自力で解決したいのですが、解決の糸口が見えません。
どこを修正すればよいかご助言いただけますか?