前提
Everyday Rails(2022年4月20日配信)の日本語版のサンプルアプリをAWS Cloud9にクローンし、設定を行いrails sでアプリを起動しTOPページを表示出来ました。
この後、mainブランチにおいてbundle exec rspecでテストを実行すると以下のテストだけが落ちてしまいます。
/spec/system/tasks_spec.rb:12 # Tasks user toggles a task
実現したいこと
- /spec/system/tasks_spec.rb:12 # Tasks user toggles a task のテストを通したい。
発生している問題・エラーメッセージ
Tasks user toggles a task (FAILED - 1) Failures: 1) Tasks user toggles a task Got 0 failures and 2 other errors: 1.1) Failure/Error: visit root_path RuntimeError: Failed to make system call: ["/opt/google/chrome/google-chrome", "--product-version"] # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/system.rb:190:in `call' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chrome_finder.rb:119:in `linux_version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chrome_finder.rb:10:in `version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chromedriver.rb:51:in `browser_version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chromedriver.rb:135:in `browser_build_version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chromedriver.rb:32:in `latest_version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/common.rb:122:in `download_version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/common.rb:134:in `correct_binary?' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/common.rb:91:in `update' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chromedriver.rb:149:in `block in <main>' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service.rb:101:in `binary_path' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service.rb:73:in `initialize' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service.rb:32:in `new' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service.rb:32:in `chrome' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:370:in `service_url' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:311:in `create_bridge' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:74:in `initialize' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:47:in `new' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:47:in `for' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver.rb:88:in `for' # /home/ec2-user/.rvm/gems/ruby-3.1.0/bundler/gems/capybara-d08e88dadd44/lib/capybara/selenium/driver.rb:83:in `browser' # /home/ec2-user/.rvm/gems/ruby-3.1.0/bundler/gems/capybara-d08e88dadd44/lib/capybara/selenium/driver.rb:104:in `visit' # /home/ec2-user/.rvm/gems/ruby-3.1.0/bundler/gems/capybara-d08e88dadd44/lib/capybara/session.rb:278:in `visit' # /home/ec2-user/.rvm/gems/ruby-3.1.0/bundler/gems/capybara-d08e88dadd44/lib/capybara/dsl.rb:52:in `call' # /home/ec2-user/.rvm/gems/ruby-3.1.0/bundler/gems/capybara-d08e88dadd44/lib/capybara/dsl.rb:52:in `visit' # ./spec/system/tasks_spec.rb:24:in `go_to_project' # ./spec/system/tasks_spec.rb:14:in `block (2 levels) in <top (required)>' 1.2) Failure/Error: raise "Failed to make system call: #{cmd}" unless $CHILD_STATUS.success? RuntimeError: Failed to make system call: ["/opt/google/chrome/google-chrome", "--product-version"] # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/system.rb:190:in `call' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chrome_finder.rb:119:in `linux_version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chrome_finder.rb:10:in `version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chromedriver.rb:51:in `browser_version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chromedriver.rb:135:in `browser_build_version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chromedriver.rb:32:in `latest_version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/common.rb:122:in `download_version' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/common.rb:134:in `correct_binary?' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/common.rb:91:in `update' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/webdrivers-5.0.0/lib/webdrivers/chromedriver.rb:149:in `block in <main>' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service.rb:101:in `binary_path' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service.rb:73:in `initialize' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service.rb:32:in `new' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/service.rb:32:in `chrome' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:370:in `service_url' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:311:in `create_bridge' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:74:in `initialize' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:47:in `new' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/driver.rb:47:in `for' # /home/ec2-user/.rvm/gems/ruby-3.1.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver.rb:88:in `for' # /home/ec2-user/.rvm/gems/ruby-3.1.0/bundler/gems/capybara-d08e88dadd44/lib/capybara/selenium/driver.rb:83:in `browser' # /home/ec2-user/.rvm/gems/ruby-3.1.0/bundler/gems/capybara-d08e88dadd44/lib/capybara/selenium/driver.rb:161:in `save_screenshot' # /home/ec2-user/.rvm/gems/ruby-3.1.0/bundler/gems/capybara-d08e88dadd44/lib/capybara/session.rb:745:in `block in save_screenshot' # <internal:kernel>:90:in `tap' # /home/ec2-user/.rvm/gems/ruby-3.1.0/bundler/gems/capybara-d08e88dadd44/lib/capybara/session.rb:745:in `save_screenshot' Finished in 0.27391 seconds (files took 1.19 seconds to load) 1 example, 1 failure Failed examples: rspec ./spec/system/tasks_spec.rb:12 # Tasks user toggles a task
該当のソースコード
ruby
1require 'rails_helper' 2 3RSpec.describe "Tasks", type: :system do 4 let(:user) { FactoryBot.create(:user) } 5 let(:project) { 6 FactoryBot.create(:project, 7 name: "RSpec tutorial", 8 owner: user) 9 } 10 let!(:task) { project.tasks.create!(name: "Finish RSpec tutorial") } 11 12 scenario "user toggles a task", js: true do 13 sign_in user 14 go_to_project "RSpec tutorial" 15 16 complete_task "Finish RSpec tutorial" 17 expect_complete_task "Finish RSpec tutorial" 18 19 undo_complete_task "Finish RSpec tutorial" 20 expect_incomplete_task "Finish RSpec tutorial" 21 end 22 23 ーー以下省略ーー
試したこと
- EC2インスタンス再起動、rails server再起動しましたがテストは落ちました。
- spec/support/capybara.rbの記述を確認。
headlessの記述あり。
ruby
1 RSpec.configure do |config| 2 config.before(:each, type: :system) do 3 driven_by :rack_test 4 end 5 6 config.before(:each, type: :system, js: true) do 7 driven_by :selenium_chrome_headless 8 end 9end
- spec/support/vcr.rbの記述を確認。
config.ignore_hosts 'chromedriver.storage.googleapis.com'の記述あり。
ruby
1require "vcr" 2 3VCR.configure do |config| 4 config.cassette_library_dir = "#{::Rails.root}/spec/cassettes" 5 config.hook_into :webmock 6 config.ignore_localhost = true 7 config.ignore_hosts 'chromedriver.storage.googleapis.com' 8 config.configure_rspec_metadata! 9end
- Gemfileの記述を確認。
gem "capybara"にバージョン指定なし。
gem "selenium-webdriver"、 gem "webdrivers"が記述されている。
ruby
1source "https://rubygems.org" 2git_source(:github) { |repo| "https://github.com/#{repo}.git" } 3 4ーー省略ーー 5 6group :test do 7 # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing] 8 # TODO: waiting for release https://github.com/teamcapybara/capybara/pull/2520 9 gem "capybara", github: 'teamcapybara/capybara' 10 gem "selenium-webdriver" 11 gem "webdrivers" 12 13 gem 'launchy' # add in chapter 6 14 gem 'shoulda-matchers' # add in chapter 9 15 gem 'vcr' # add in chapter 10 16 gem 'webmock' # add in chapter 10 17end 18 19gem 'devise' 20gem 'net-imap' 21gem 'net-pop' 22gem 'net-smtp' 23gem 'activestorage-validator' 24gem 'geocoder'
補足情報(FW/ツールのバージョンなど)
aws cloud9
Amazon Linux release 2 (Karoo)
rails 7.0.2.3
ruby 3.1.0 (このバージョンをdefault設定済)
git 2.32.0
yarn 1.22.19
Bundler 2.3.3
google-chrome-stable 102.0.5005.61(x86_64)
foreman 0.87.2
sqlite .x86_64 3.8.11-1.fc21
capybara 3.37.1 d08e88d
selenium-webdriver 4.1.0
あなたの回答
tips
プレビュー