web-dev-qa-db-ja.com

phantomjsで実行されているember-cliテストをデバッグする方法

コンテキスト:ember-cliアプリケーションの受け入れテストがあります。テストはChromeで問題なく通過します。ただし、phantomjsでは、テストが失敗します。UIが同じ方法で作成されないため、その理由を解明しようとしています。 ( https://github.com/ember-cli/ember-cli/issues/176 が原因でテストが失敗したと思いますが、デバッグ方法に関する一般的な質問は残っています)

Chromeでは、テストで標準のデバッグツールを使用でき、すべて問題ありませんが、phantomjsでは、デバッガーでは使用できません。また、console.log()メッセージが出力に表示されません。取得するのは、ターミナルウィンドウのテスト結果のリストだけです。

私は次のようなことを書くことによって診断情報を取得することができます

equal(true, false, "This is a log message");

次に、失敗したアサーションの詳細としてメッセージを受け取ります。または、DOMの内容を試してみることができます。

equal(true, false, document.getElementsByClassName("my-class".innerHTML);

ただし、a:テストの続行を停止し、b:アプリケーションではなく、テスト自体からの情報のみをログに記録させます。

「embertest」の外部でテストを実行する方法、または実行中のテストプロセスにアタッチする方法はありますか?または、console.log()メッセージを出力に表示する方法はありますか?

23
Dan Mitchell

PhantomJSデバッグポートを公開してブラウザーで開くと、デバッガーのブレークポイントでコンテキストを操作できます。

Testemテストランナーを使用したPhantomJSでのテストのデバッグ

12
Pooyan Khosravi

testem.json"phantomjs_debug_port": 9000を追加します。

テストの実行中にブラウザでhttp://localhost:9000にアクセスし、表示される長いリンクをクリックします。

出典: cssugared

9
Nelu

私は他の答えに運がなかったので、これが私が見つけたものです:

ブラウザーでコンテナーと対話できるようにするテストのポイントにreturn pauseTest();を追加します。これはドキュメントにありますが、ガイドにあるかどうかはわかりません。

7
aceofspades

「ログメッセージを表示するにはどうすればよいですか」に関する元の質問の一部に答えるために、TAPレポーターを使用すると、console.log(アプリとテスト)メッセージが出力に表示されます。 xunitレポーターがconsole.logを渡さないため、混乱していました。

(teamcityでテストを実行すると、ローカルで実行した場合と動作が異なる問題にも遭遇しました。この状況では、TAPレポーターと https://github.com/aghassemi/tap-xunit (またはTAP teamcityプラグイン)を使用すると、ログメッセージを取得したり、カウントをテストしたりできます)

0
Dan Mitchell