サイプレスのブラウザーログとコマンドログを出力にリダイレクトまたはキャプチャすることは可能ですか?
このトピックに関するサイプレスgithub issues を読みました。しかし、私はそれを機能させる方法を知りません。
基本的に、ヘッドレスの非GUIモードですべてのサイプレスGUIコマンドログをキャプチャします。ブラウザコンソールログを含めることができれば、さらに改善されます。目的は、テストが失敗したときに何が起こったかを理解することです。
Ciとしてteamcityを使用します。ビルドログの例を次に示します。ここでもすべてのコマンドログを表示したいです。実際、_cy.task
_を使用してサーバー側で実行されたconsole.logは、ビルドログに表示されます。 cy.task('log',message)
の実行は手動すぎます。よりスマートな方法はありますか?
_[09:49:08][Step 1/1] 2 of 4: new actions (52s)
[09:50:00][Step 1/1] 3 of 4: new actions (52s)
[09:50:53][Step 1/1] 4 of 4: new actions (53s)
[09:51:47][Step 1/1] (Results)
[09:51:47][Step 1/1]
[09:51:47][Step 1/1] ┌─────────────────────────────────────┐
[09:51:47][Step 1/1] │ Tests: 8 │
[09:51:47][Step 1/1] │ Passing: 8 │
[09:51:47][Step 1/1] │ Failing: 0 │
[09:51:47][Step 1/1] │ Pending: 0 │
[09:51:47][Step 1/1] │ Skipped: 0 │
[09:51:47][Step 1/1] │ Screenshots: 0 │
[09:51:47][Step 1/1] │ Video: true │
[09:51:47][Step 1/1] │ Duration: 3 minutes, 38 seconds │
[09:51:47][Step 1/1] │ Estimated: 1 minute, 8 seconds │
[09:51:47][Step 1/1] │ Spec Ran: action/action_spec.js │
[09:51:47][Step 1/1] └─────────────────────────────────────┘
_
サイプレス3.0.0以降、cy.task()
を使用してノードに直接アクセスし、ノードコンソールに出力できます。ドキュメントから:
// in test
cy.task('log', 'This will be output to the terminal')
// in plugins file
on('task', {
log (message) {
console.log(message)
return null
}
})
詳細については、 here を参照してください。
サイプレスのログをコンソールに直接ミラーリングする方法はわかりませんが、これは少なくとも実行可能な代替手段です。
@ Joshua-wadeの答えを展開すると、_cy.log
_を上書きして、すべての呼び出しをログタスクにリダイレクトできます。次のように:
Cypress.Commands.overwrite('log', (subject, message) => cy.task('log', message));
注:これには小さな欠点があります。テストランナーを使用してテストを実行すると、コマンドログに_LOG my message
_が表示される代わりに、_TASK log, my message
_が表示されます。しかし、私見それはごくわずかです。