3

ヘッドレステスト用のヘッドレスgem、xvfb、capybara-webkitを使用して、ubuntuサーバーCIボックスで一連の統合仕様を実行しようとしています。すべてがローカル開発ボックスでうまく機能しますが、CIサーバーに移動すると、物事は面白くなります。

スペックヘルパーには、次のようにヘッドレスブロック内に:js対応の統合スペックをラップするコードが少しあります。

  config.around(:each, :js => true) do |example|
    Headless.ly &example 
  end

私が言ったように、これはすべてローカル開発ボックスでうまく機能します。ヘッドレスgemとxvfbを同じユーザーとして別のプロジェクトのテストに使用しているCIで、統合仕様を実行しようとすると、仕様がブラウザーインスタンスをインスタンス化する必要がある場合に、次のエラーが発生します。

webkit_server:致命的なIOエラー:クライアントが強制終了されました

私はそのエラーの原因を突き止めようとしてきましたが、それがどこから来たのか、または問題のデバッグに役立つその他の情報を見つけることさえできません。

これまでのところ、私は以下をチェック/試行しました:

  • CIユーザーは間違いなくxvfbを実行する権限を持っています
  • CIユーザーとして「Xvfb:99 -ac」を実行すると、フォントが見つからないことについて1つの警告が表示され、他の問題は発生しません。

誰かがこれを引き起こしているかもしれない、または私がより多くの情報を探すことができる場所について何か考えを持っていますか?私はこれにかなり困惑しています。

ありがとう!

4

3 に答える 3

9

これが完全に正しい解決策であるかどうかはわかりませんが、私にとってはうまくいくようです。行う代わりに:

bundle exec spec

このようにXvfbでコマンドを実行し、ヘッドレスgemの使用を削除します。

xvfb-run bundle exec spec

少し間違っているようですが、機能します。

于 2011-08-26T05:37:03.127 に答える
2

for me the following worked. I am not sure why missing "-a" fails to run xvfb. My build is running @javascript tests on ubuntu+jenkins CI now

DISPLAY=localhost:0.0 xvfb-run -a bundle exec cucumber
于 2012-11-22T06:32:20.417 に答える
1

これが関連しているかどうかはわかりませんが(ヘッドレスgemの代わりにcapybara-webkitを使用していました)、ubuntuインスタンス(ec2ではubuntu lucid)でも実行する必要がありました:

sudo xhost +local:jenkins

jenkinsアカウントにxvfbと通信する許可を与えるため。参照:QtアプリケーションでXサーバー:0.0に接続できない

于 2012-01-07T01:23:06.027 に答える