Jenkins CI環境でドラック&ドロップのテストが落ちた時にやった事
いまだに Jenkins で消耗してます ^^;
2015-12-17 追記
現象
現在のメンテしているプロジェクトは下のようなCI環境で行っています、 この中のエンドツーエンド テストのうち、jQuery-UIのSortableを使った並べ替え部分のテストが通っていない事に気がつきました。
- OS: Mac miniの上のVMWareで動くUbuntu 14.04 server
- CI: Jenkins
- Test: RSpec feature + Capybara + PhantomJS (poltergeis)
ドラック&ドロップの部分で例外等は発生してないのですが、全く処理が無視されていて結果としてRSpecが失敗になります。それ以外のJavaScriptを使うUIのRSpecは通っています。
もちろん開発環境のMacではRSpecは通りますし、Mac/Ubuntuで動くアプリも正常に動作します。
原因追求
ログをチェックするなど基本的な事は行い、後はGoogle先生に問い合わせた先のIssueを読んだりで半日近い時間が過ぎましたが解決へのヒントは全く得られず・・・・
古いバージョンのPhanotomJSはXvbfなどが無いとheadless環境でテストが出来ないようでししたが、今は問題無いです。試しに Xvbfを入れてみましたが結果は同じでした。
次の日の朝、ふとGUI(X Window System)のあるUbuntuで動かしたらどうだろうと思い、VMWare上に環境を作り、RSpecを実行すると・・・・ 通ります !!
ということで、CI環境の Ubuntu を Server版ではなく Desktop版 にすれば良いことがわかりました。 幸運なことに(?) Mac mini + VMWare でUbuntuを動かしているので Desktop変えることは出来ます。 しかし、作業時間も掛かるるし、非力な Mac mini 上で Desktop版を動かすのはねぇ・・・ と悩みました。
もう少し検討
本当にGUI(X Window System)が動いてないとPhanotomJSは正しく動作しないのでしょうか?
試しに、GRUBの設定を変え GUI(X Window System) が起動しないようにして、 GUIの動いてないUbuntuにSSHでログインしてRSpecを実行すると・・・・ 通りました ^^)/
多分、PantommJSでドラック&ドロップを動作させるには、Xやマウスなどの何らかのライブラリー等のインストールが必要なのだと思われます。Server版ではこのライブラリーが入らないのではないでしょうか?
疲れたのこれ以上は追求しませんでしたが・・・
判りました! 日本語フォントをインストールすれば良いようです。
対処結果
現在の Server版をやめてDesktop版を入れるのは面倒なので Ubuntu/Ubuntuサーバーにデスクトップをインストールする手順 を参考に現行の Ubuntu serverにDesktopをインストールし、GRUBの設定を変え GUI(X Window System) が起動しないようにしました。
Ubuntu なら
$ sudo apt-get install fonts-takao-mincho
めでたしめでたし・・・・