web-dev-qa-db-ja.com

テスト用のPhantomJSの代替

私は現在、CI(ハドソン)の小さなテストスイートを構築しようとしています。他のスクリプトを動的に呼び出し、特定のDIV要素にデータを入力する複雑なスクリプトを作成しました。

私のSeleniumテストは簡単な例で機能します(www.google.comをロードする、q要素を検索するなど)

しかし、PhantomJSインスタンスでFirefox-Driverで動作する複雑なテストを実行しようとすると、クラッシュします。セグメンテーション違反が発生します。

私の質問は、実行する(ヘッドレス)Hudson-Serverで動作するフロントエンドJSのテストをどのように書くことができるかです。

または、セグメンテーション違反の原因をデバッグする方法はありますか?

25
schlingel

Xvfbを仮想フレームバッファーとして使用する場合(グリッドノードをホストするLinuxマシン上)、ヘッドレスインストールが可能です。これとデフォルトのFirefoxを使用してしまいました。

14
schlingel

Slimer.jsはPhantom.jsに似ていますが、WebkitではなくGeckoを使用します。

http://slimerjs.org/

15
Corey Goldberg

Phantomは進化している製品であり、比較的最近になってSeleniumと統合できるようになったため、バグが発生した可能性があります。 Phantom開発者に報告してみましたか?

  • Phantomの代替:

    多くはありません。 Zombie は私が知っているものですが、Phantomは他のヘッドレスブラウザよりも優れています。

    ヘッドレス仮想サーバーを使用して、通常のWebブラウザーを実行することもできます。 (これには、Phantomよりも実際のテストであるという利点もあります)

  • セレンの代替:

    Seleniumの直接の代替として Sahi を使用できます。ほぼ同じことが可能ですが、動作はまったく異なります。もちろん、テストスクリプトを書き直す必要があります。

    Phantomはスクリプト化されるように設計されているため、実際にはSeleniumなどのドライバーツールを使用する必要はありません。直接スクリプトを作成するか、 CasperJS などのツールを使用してテストスクリプトを記述できます。

9
SDC

jsdomは、現在、非常に成熟した優れた代替手段です。

https://github.com/tmpvar/jsdom/

ヘッドレステスト用です。 Webkitやgekkoレンダラーに純粋なJSがないため、phantomjsのようにスクリーンショットを撮るとは思わない。

これは、phantomjsがセグメンテーション違反を起こし、新しいバージョンがビルドされないために見つかりました。 slimerjsは本当にヘッドレスではなく、FireFoxがドロップしたばかりのXULRunnerベースで、現在のFFでは動作しません。

jsdomは非常にクールで、XMLパーサーとして始まり、現在では完全なネットワークバックエンドとjQueryサポートを備えています。

APIはphantomjsとは異なります。

6
teknopaul