Ruby on Rails

【Rails】system spec が動かない件

system spec を動かそうとしたら、以下のエラーが起きました。

Net::HTTPServerException: 404 "Not Found" with https://chromedriver.storage.googleapis.com/LATEST_RELEASE_118.0.5993 (Webdrivers::NetworkError)

これは以下の Qiita 記事に従って gem webdrivers をコメントアウトしたら消えました。なぜなのかは分かりません。。

その後、次に以下のエラーが出るようになりました。

Error:
QuotesTest#test_Updating_a_quote:
ArgumentError: unknown keyword: :capabilities
    test/system/quotes_test.rb:38:in `block in <class:QuotesTest>'

Error:
QuotesTest#test_Updating_a_quote:
ArgumentError: unknown keyword: :capabilities
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/selenium-webdriver-4.16.0/lib/selenium/webdriver/common/driver.rb:315:in `create_bridge'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/selenium-webdriver-4.16.0/lib/selenium/webdriver/common/driver.rb:74:in `initialize'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/selenium-webdriver-4.16.0/lib/selenium/webdriver/chrome/driver.rb:35:in `initialize'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/selenium-webdriver-4.16.0/lib/selenium/webdriver/common/driver.rb:47:in `new'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/selenium-webdriver-4.16.0/lib/selenium/webdriver/common/driver.rb:47:in `for'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/selenium-webdriver-4.16.0/lib/selenium/webdriver.rb:89:in `for'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/capybara-3.39.2/lib/capybara/selenium/driver.rb:83:in `browser'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.2.2/lib/action_dispatch/system_testing/driver.rb:64:in `block in register_selenium'
    <internal:kernel>:90:in `tap'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.2.2/lib/action_dispatch/system_testing/driver.rb:63:in `register_selenium'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.2.2/lib/action_dispatch/system_testing/driver.rb:49:in `block in register'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/capybara-3.39.2/lib/capybara/session.rb:105:in `driver'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/capybara-3.39.2/lib/capybara/session.rb:91:in `initialize'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/capybara-3.39.2/lib/capybara.rb:421:in `new'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/capybara-3.39.2/lib/capybara.rb:421:in `block in session_pool'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/capybara-3.39.2/lib/capybara.rb:317:in `current_session'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/capybara-3.39.2/lib/capybara/dsl.rb:46:in `page'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.2.2/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:99:in `save_image'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.2.2/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:36:in `take_screenshot'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.2.2/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:45:in `take_failed_screenshot'
    /Users/sakaishun/Desktop/projects/hotwire-example-template/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.2.2/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb:8:in `before_teardown'

これは、selenium-webdriver のバージョンが低かったことが原因なようで、以下の記事に従って、gem 'selenium-webdriver', '4.9.0' でバージョンを指定して bundle install し直しました。

今度はまた別のエラーが発生しました。

Error:
QuotesTest#test_Creating_a_new_quote:
Selenium::WebDriver::Error::SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 97
Current browser version is 118.0.5993.117 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    test/system/quotes_test.rb:11:in `block in <class:QuotesTest>'

ChromeDriver と Chrome のバージョンが合っていないことが原因のようでした。chromedriver のバージョンが 97 と古いので、brew upgrade chromedriver をして chromedriver のバージョンを上げました。

今度は chromedriver のバージョンが最新の 120 で、Chrome のバージョンが 118 で少し古くエラーを起こしました。

Error:
QuotesTest#test_Updating_a_quote:
Selenium::WebDriver::Error::SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 120
Current browser version is 118.0.5993.117 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    test/system/quotes_test.rb:38:in `block in <class:QuotesTest>'

今度は、使っている Chrome のバージョンを上げました。

そうしたら、System Spec が動きました。(めでたし)

ABOUT ME
sakai
東京在住の30歳。元々は車部品メーカーで働いていてましたが、プログラミングに興味を持ちスクールに通ってエンジニアになりました。 そこからベンチャー → メガベンチャー → 個人事業主になりました。 最近は生成 AI 関連の業務を中心にやっています。 ヒカルチャンネル(Youtube)とワンピースが大好きです!