3
2

seleniumでのエラーについて

Posted at

【概要】


seleniumを利用したテスト時に、遭遇したエラーです。

【環境】


・Docker
・rspec
・factory_bot

Selenium::WebDriver::Error::InvalidSessionIdErrorについて


specでテストを実行した際に、下記のようなエラーが吐かれました。

user_session.rb
require 'rails_helper'
RSpec.describe 'UserSessions', type: :system do

    describe 'ログイン前' do
    #省略
        context 'フォーム値が正常' do
            let(:user) { create(:user) }
            it 'ログイン処理が成功' do
                visit login_path
                fill_in 'email', with: user.email
                fill_in 'password', with: 'password'
                click_button 'ログイン'
                expect(page).to have_content 'ログインに成功しました'
                expect(current_path).to eq root_path
            end
        end
    end
end
ターミナル実行ログ
    x.x) Failure/Error: Unable to infer file and line number from backtrace
          
          Selenium::WebDriver::Error::InvalidSessionIdError:
            invalid session id

解消方法

結論としては、メモリ不足のようでした。
compose.ymlで下記文言を追加することで、メモリ不足を解消し、実行することができます。

docker-compose.yml
  chrome:
    image: selenium/standalone-chrome:latest
    shm_size: 256m  # ← 追加しないと既存は64m
    ports:
      - 4444:4444
ターミナル
root@751b72a5cf5c:/myapp# bundle exec rspec spec/system/user_sessions.spec.rb

UserSessions
  ログイン前
    フォームの入力値が未入力
      ログイン処理が失敗
    emailのフォーム値が異常
      ログイン処理が失敗
    passwordのフォーム値が異常
      ログイン処理が失敗
    フォーム値が正常 ←メモリ不足を解消
      ログイン処理が成功

Finished in 17.5 seconds (files took 23.53 seconds to load)
4 examples, 0 failures

また、設定として、画像サイズをリサイズするといいかもです。

spec/support/capybara.rb
options.add_argument('window-size=950,800')

【引用】


3
2
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
3
2