LoginSignup
2
1

More than 3 years have passed since last update.

System specを動かすのにはまった

Last updated at Posted at 2021-03-15

概要

rspecでSystem specを流そうと思いましたが、いろいろハマるところが多かったので、自分がハマったところを記載しておきます。

環境

  • 共通
    • Ruby 2.5.8
    • Rails 5.2.4
    • rspec 3.10.0
    • selenium-webdriver 3.142.7
  • ローカル環境
    • Ubuntu 16.04(WSL2)
    • Chromium 87.0.4280.66
    • ChromeDriver 87.0.4280.66
  • CI環境
    • Github Actions
      :bulb: Chrome環境は特にインストールしなくても大丈夫でした

ローカル環境でChromeが動かない

最初はWSL1上でSystem specを動かそうとしていましたが、うまく動いてくれませんでした。
いろいろな可能性を試したところWSLをVersion2にすることで動作させることが出来ました。
最終的に動作した内容が下記になります。

:pencil: ChromeとChromeDriverのバージョンを合わせないといけないという記述がありましたが、下記をインストールすればChromiumがブラウザとして使われてバージョンも同じになるので簡単そうです。

chromeドライバのインストール
sudo apt-get install chromium-chromedriver
rails_helper.rb
Capybara.default_driver = :selenium_chrome_headless
Capybara.register_driver :selenium_chrome_headless do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('--headless')
  options.add_argument('--no-sandbox')
  options.add_argument('--disable-gpu')
  options.add_argument('--window-size=1280,1024')

  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
spec_helper.rb
  config.before(:each, type: :system) do
    driven_by :selenium_chrome_headless
  end

Github Actionsで日本語環境を整える

ローカル環境でSystem specが動くように整えた状態でGithub Actionsで動かしてみたところ、rspec自体は何もしなくて動きました :smile:
Chrome環境を整える必要があると思っていたのですが、特に何もしなくても動きました。

ただ、System specは失敗になっていて失敗時の画像を見るとChromeの言語が英語になっているようでした。

user_spec.rb
require 'rails_helper'

RSpec.feature 'Users', type: :system do
  let!(:user) { create :user }

  scenario "ログインできること" do
    visit login_path
    fill_in "email",    with: user.email
    fill_in "password", with: user.password

    click_button "ログイン"

    expect(page).to have_content("ホーム")
  end
end
  • 失敗時のスクリーンショット
    image.png

ChromeDriverの設定にlangをオプションとして追加すると解決するというページもちらほらあったのですが、うまくいきませんでした。

rails_helper.rb
  options.add_argument('--lang=ja-JP')

結果的にはなんて言うことはなく、rspecを動かすときにLANG環境変数を設定してあげるだけでした :sweat_smile:

run_rspec.yml
    - name: Run rspec
      run: bundle exec rspec
      env:
        LANG: ja-JP
        RAILS_ENV: test

最後に日本語フォントを入れてあげないと日本語が表示されないので、事前にインストールするようにしました。

run_rspec.yml
    - name: Install fonts
      run: sudo apt-get install fonts-ipafont-gothic fonts-ipafont-mincho
  • 成功時のスクリーンショット
    image.png
2
1
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
2
1