私はMink / Sahiと協力して、自分のサイトの機能テスト スイートを作成しています。
私は Firefox と Chrome で一連のテストを行っており、満足しています。それらは私たちの Jenkins ボックスで毎晩実行されており、うまく機能しています。
ただし、Jenkins ボックスはサーバーであり、Chrome/Firefox は GUI アプリであるため、デスクトップ PC でテストを実行する必要がありました。これは、毎晩スイッチを入れたままにしなければならないことを意味するため、環境上およびコスト上の理由から悪いことです。さらに、電源、ネットワーク、またはソフトウェアに問題がある場合、テストは失敗します。
そこで、Jenkins ボックス自体でヘッドレス ブラウザを使用するようにテストを切り替えることについてアドバイスをお願いします。
私には、Goutte、Zombie、Phantom の 3 つのオプションがあるようです (もちろん、他の人が推奨できる場合を除きます)。以下は、これまでの私の進捗状況をまとめたものです。
Goutte : これは PHP 駆動型であるため、Mink 内で実行され、Sahi の必要性がなくなります。Jenkins ボックスにはリソースが限られているため、これは素晴らしいことのように思えます。インストールして実行する必要が少ないほど良いのです。ただし、テストの一部として JS コードを実行する必要があり、Goutte ではこれができないことを理解しています。それはそれを除外しますか?
Zombie : Node.js で実行されます。残念ながら、私はこれをまったく機能させることができませんでした。Node、NPM、Zombie をインストールしましたが、Mink に認識させることができません。これを実行する方法について、Mink サイトよりも明確な指示を誰か教えてくれませんか?
Phantom : 残念ながら、Mink には Phantom 用のドライバーがないため、Sahi 経由で実行する必要があります。前述したように、Jenkins サーバーに Sahi をインストールする必要はありません。特にサーバーとして継続的に実行する必要があるためです。しかし、これまでに成功したのはこれだけです。Sahi の下で実行すると、テストを正常に実行できます (一貫性があるわけではありませんが、これは心配です。約 3 回に 1 回、ランダムにタイムアウトするようです)。Sahi (またはその他の中間層サーバー) をインストールせずにこれを実行する方法を提案できる人はいますか? または、Sahi が必要な場合は、Jenkins を構成して、テスト スイートの最初に Sahi を開始し、最後に停止する方法を誰か教えてもらえますか?
進め方についてアドバイスをいただければ幸いです。何らかの理由で、これらのオプションのいずれも明確な勝利を収めているようには見えません。しかし、機能テストは重要なので、これは解決された問題でなければなりません。私に最適なソリューションは何ですか?
(Zombie や Phantom と直接対話するために、Javascript でスクリプトを書き直すオプションがあることも知っています。失敗した場合でも、何が起こっているかを確認するために Firefox でそれらが実行されているのを確認する必要があるため、これは避けたいと思います。間違っているので、Mink のようなクロスブラウザー インターフェイスが理想的です。言うまでもなく、私は既にすべてのテストを PHP で記述しています!)
アドバイスをありがとう。:)