web-dev-qa-db-ja.com

テストフレームワークを使用するだけでなく、開発者がPhantomJSを必要とするのはなぜですか?

PhantomJSが必要な理由がわからないので、誰かが助けてくれることを期待しています。

49
Leila Hamon

DOMを必要とするJavaScriptは、通常はブラウザーで実行するための場所が必要です。そのため、テストフレームワークは、テストを実行してアサートを実行するために制御するブラウザを起動することがよくあります。多くの場合、テストフレームワーク自体はブラウザーを直接制御できないため、テストには3つのレイヤーが必要になります。

  • フレームワーク:例ジャスミン
  • ドライバー:例セレン
  • ブラウザ:例Firefox

簡単に言うと、PhantomJSはヘッドレスで実行する(つまり、画面を表示しない)ブラウザーです。もたらす利点はスピードです。コンピューター上の実際のプログラムを制御している場合、ブラウザーの起動、プロファイルの構成などに一定のオーバーヘッドがあります。

PhantomJSの方がはるかに高速です(テストが1/3未満の時間で実行されるのを見てきました)。唯一のトレードオフは、テストが実行されていることを確認できないことですが、それは自動化されたスイートにとってはそれほど問題ではありません!必要に応じてスクリーンショットを撮ることもできます(失敗した場合など)。本当にしたい場合は、24fpsでスクリーンショットを撮ってffmpegに送信し、テストのビデオをレンダリングすることができますが、その場合は速度の節約を損なう可能性があります:)

119
anotherdave

これはよくある誤解です。 documentation で時間を費やすと、通常は混乱が解消されます。たとえば、PhantomJSは、Buster.JS、Capybara、Mocha、Jasmine、QUnit、WebDriver、YUI Testなど、多数のフレームワークで記述されたテストの headless test runner としてよく使用されます。ここでわかるように、PhantomJSはこれらのフレームワークをまったく置き換えません。

もちろん、PhantomJSには他にも多くの用途があります。プログラム的に ウェブページをキャプチャ から自動化 ネットワークモニタリング まですべてです。 PhantomJSのさまざまな報告された使用例を示すさまざまなブログ投稿および記事の list があります。

25
Ariya Hidayat

PhantomJSはテストフレームワークを置き換えるものではなく、テストフレームワークと連携して動作します。

たとえば、ここではランダムな例 PhantomJSをJasmine と組み合わせて使用​​しています。

この例

7
manzoid

ここで言及されていないもう1つの使用例は、Webページのレンダリングと画像またはPDFそのページのスナップショットの生成です。

たとえば、請求書、レポート、ドキュメントなどをHTML Webページとしてレンダリングし、PDFにレンダリングして、ダウンロード可能なドキュメントとしてエンドユーザーに送信できます。

または、多分 ウェブページのスクリーンショットのサムネイル ?別の可能なユースケース。

0
BlaM