0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【RSpec】 Failure/Error: @pid = Process.spawn(*@command, options) エラーの対処法

Posted at

はじめに

RSpecのシステムスペックで非同期通信のテストをしていました。
visit root_pathによって画面を表示しようとした際に以下のエラーに遭遇しました。

     1.1) Failure/Error: visit root_path
          
          TypeError:
            no implicit conversion of nil into String
          # ./spec/system/tasks_spec.rb:20:in `block (2 levels) in <main>'

     1.2) Failure/Error: @pid = Process.spawn(*@command, options)
          
          TypeError:
            no implicit conversion of nil into String

環境

rails 6.1.3.7
selenium-webdriver 4.8.2
webdrivers 5.2.0

該当のコード

app/rspec/system/sample_spec.rb
require 'rails_helper'

RSpec.describe "Tasks", type: :system, js: true do

  before do
    driven_by :selenium_chrome_headless
  end
 
  scenario 'home画面に遷移する' do
    visit root_path
    .
    .
    .省略
  end

end

テストを実行すると、冒頭で記載したエラーがvisit root_pathの部分で発生しました。

     1.1) Failure/Error: visit root_path
          
          TypeError:
            no implicit conversion of nil into String
          # ./spec/system/tasks_spec.rb:20:in `block (2 levels) in <main>'

     1.2) Failure/Error: @pid = Process.spawn(*@command, options)
          
          TypeError:
            no implicit conversion of nil into String

他のテストでもvisit root_pathは使っていて問題はなかったので、なぜエラーが発生しているのか戸惑いました。

原因と対処法

原因
gem selenium-webdriver '4.8.2'で起こるバグのようです。
ブラウザを立ち上げた時にエラーが発生します。

参考:

対処法
gem selenium-webdriver '4.8.3'以上をインストールする。
(もしくは4.8.1にダウングレードする)

Gemfile
gem 'selenium-webdriver', '~> 4.8.3'

バージョンを変更した後、テストを実行すると非推奨通知が表示されます。

2023-04-27 20:09:03 WARN Selenium [:logger_info] Details on how to use and modify Selenium logger:
  https://selenium.dev/documentation/webdriver/troubleshooting/logging#ruby

2023-04-27 20:09:03 WARN Selenium [DEPRECATION] [:capabilities] The :capabilities parameter for Selenium::WebDriver::Chrome::Driver is deprecated. Use :options argument with an instance of Selenium::WebDriver::Chrome::Driver instead.

これを非表示にするには以下のような設定を追記します。

rspec
before do
  driven_by :selenium_chrome_headless
  Selenium::WebDriver.logger.ignore :capabilities
end
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?