2016-04-02 17:57:46 +0900
CircleCI上でCapybara, Poltergeist, PhantomJSを利用したテストがMouseEventFailed失敗する問題を解消した。
以下のような構成のRailsアプリをCircleCI上でビルドすると、Capybara::Poltergeist::MouseEventFailed
という例外が発生してテストが失敗するケースがあった。
- Rails 4.2.x
- RSpec 3.4.x
- Capybara 2.6.2
- Poltergeist 1.9.0
- PhantomJS 2.1.1 (CircleCIのプロジェクト設定でUbuntu 14.04 (Trusty) containerを利用するように設定しておく必要あり)
この時、失敗の原因となっているテストコードは、
click_link '日本語のラベル'
のようなもの。
調査のためにCircleCIにSSHで接続し、テストコードにsave_screenshot('test.png', full: true)
を追加&実行して取得した画像ファイルをscp
でローカルにダウンロードして確認してみたところ、日本語フォントが無い状態でページがレンダリングされており「日本語のラベル」に該当する要素がページ上では目視できない状態になっていた。
そこで、cricle.yml
に以下のようなエントリを追加してビルド前に日本語フォントがインストールされるようにすることで、テストが無事に成功するようになった。
dependencies:
pre:
- sudo apt-get install fonts-migmix