TestCafeのエラーメッセージはとてもわかりやすいのですが、「そんなわけない。実際に画面見たい。」となることもありますよね。
この記事では、TestCafeでテストに失敗時のスクリーンショットを自動的に保存できるようにします。
-s takeOnFails=true
オプションをつけるだけ
ま、以上なんですが...。
公式サイトだと、こちらに書かれております。
便利すぎやしませんか...TestCafeさん...。
TestCafeの起動時に次のようにオプションを付与するだけです。
package.jsonに追記する
僕たちはNuxtで開発をしており、テストはyarn test
コマンドで起動するようにしています。
と記載していました。ここを、次のように書き替えるだけです。
スクリーンショットはどこへ...
スクリーンショットはプロジェクトのルートディレクトリにscreenshots
ディレクトリが自動で作成され、その中にテストケースごとのディレクトリが作られて保存されます。 テストケースのディレクトリには番号が振られているので、複数のテストが失敗したときでもどのテストがどのスクリーンショットなのかわかりやすいです。
path
オプション を使えば、ディレクトリの場所を変えることもできるみたいですが、特にルートディレクトリにディレクトリが作成されても困っていないので指定していません。
ただ、screenshotはGitHubなどのGitサービスにあげる必要がないものなので、.gitignore
でGitの対象から外してます。
また、新しいテストを始めるときに、古いテストのスクリーンショットが残っているとわけがわからなくなってしまいます。 そこで、package.json
でtestcafe
実行前にscreenshots
ディレクトリを削除するようにしています。
これでステキな自動テストライフを過ごせます🎁。
番外編:失敗時のスクリーンショットじゃわからない...
そんなときもあります。 なんかエラー画面が出てるだけで終わり...その直前の画面が見たい... そんなときはテストコード内で意図的にスクリーンショットを撮ることもできます。
このように#button
のクリック直後のテストの失敗原因がスクリーンショットからはわからないときは、takeScreenshot()
を使ってクリック直前の画面をスクリーンショットを取得できます。 これも特に指定しなければ./screenshots
ディレクトリの中のテストケースのディレクトリ内に、テスト失敗のスクリーンショットと分けて格納されます。 takeScreenshot()
もパスや全画面を対象にするかを選択できますので、気になる人は公式サイトを御覧ください。
まとめ
前回に引き続き、TestCafeについてお話しました。 テスト時のスクリーンショットは、自作しなかったりしなくてはいけないテストフレームワークもあったりするので、TestCafeはかなり手軽でした。 みなさんにステキなテストライフが訪れますように🤞。