私は現在、CI(ハドソン)の小さなテストスイートを構築しようとしています。他のスクリプトを動的に呼び出し、特定のDIV要素にデータを入力する複雑なスクリプトを作成しました。
私のSeleniumテストは簡単な例で機能します(www.google.comをロードする、q要素を検索するなど)
しかし、PhantomJSインスタンスでFirefox-Driverで動作する複雑なテストを実行しようとすると、クラッシュします。セグメンテーション違反が発生します。
私の質問は、実行する(ヘッドレス)Hudson-Serverで動作するフロントエンドJSのテストをどのように書くことができるかです。
または、セグメンテーション違反の原因をデバッグする方法はありますか?
Xvfbを仮想フレームバッファーとして使用する場合(グリッドノードをホストするLinuxマシン上)、ヘッドレスインストールが可能です。これとデフォルトのFirefoxを使用してしまいました。
Slimer.jsはPhantom.jsに似ていますが、WebkitではなくGeckoを使用します。
Phantomは進化している製品であり、比較的最近になってSeleniumと統合できるようになったため、バグが発生した可能性があります。 Phantom開発者に報告してみましたか?
Phantomの代替:
多くはありません。 Zombie は私が知っているものですが、Phantomは他のヘッドレスブラウザよりも優れています。
ヘッドレス仮想サーバーを使用して、通常のWebブラウザーを実行することもできます。 (これには、Phantomよりも実際のテストであるという利点もあります)
セレンの代替:
Seleniumの直接の代替として Sahi を使用できます。ほぼ同じことが可能ですが、動作はまったく異なります。もちろん、テストスクリプトを書き直す必要があります。
Phantomはスクリプト化されるように設計されているため、実際にはSeleniumなどのドライバーツールを使用する必要はありません。直接スクリプトを作成するか、 CasperJS などのツールを使用してテストスクリプトを記述できます。
jsdomは、現在、非常に成熟した優れた代替手段です。
https://github.com/tmpvar/jsdom/
ヘッドレステスト用です。 Webkitやgekkoレンダラーに純粋なJSがないため、phantomjsのようにスクリーンショットを撮るとは思わない。
これは、phantomjsがセグメンテーション違反を起こし、新しいバージョンがビルドされないために見つかりました。 slimerjsは本当にヘッドレスではなく、FireFoxがドロップしたばかりのXULRunnerベースで、現在のFFでは動作しません。
jsdomは非常にクールで、XMLパーサーとして始まり、現在では完全なネットワークバックエンドとjQueryサポートを備えています。
APIはphantomjsとは異なります。