@memo

ゆるくインプット、ゆるくアウトプット

TestCafeのオプションをファイルで管理

こんにちは。asatoです。

TestCafeのオプションをコマンドで毎回書いていたのですが、Configuration fileなんてものがあったのか...

ファイルの適用

Configuration fileは.testcaferc.jsまたは.testcaferc.jsonの名前でワーキングディレクトリに置いておくと、testcafe実行時に自動的に読み込んでくれます。 --config-fileオプションを使えば、別の名前や別の場所に置いてあるファイルでも適用されます。

ファイルの中身

この記事では.testcaferc.jsを前提とします。

module.exports = {
  // options
}

ベースはこちらで、optionsのところに必要なオプションを定義していきます。

おすすめオプション

オプションいっぱいあるんですが、現状こんな感じの定義をしてます。

module.exports = {
  browsers: "chrome:headless",
  screenshots: {
    takeOnFails: true,
    fullPage: true,
    thumbnails: false,
  },
  concurrency: 3,
  stopOnFirstFail: true,
  cache: true,
};

browsers

テストを実行するブラウザを指定します。複数のブラウザを設定したい場合は配列で指定します。

browsers: ["ie", "firefox", "chrome"]

詳しくは公式!

screenshots.takeOnFails

テストが失敗したときにスクリーンショットを自動的に撮影するかどうかです。デフォルトはfalse

失敗の原因を調査するためにtrueにしてます。

screenshots.fullPage

スクリーンショットをページ全体で撮影するかどうかです。デフォルトはfalse

screenshots.thumbnails

スクリーンショットのサムネイルを作成するかどうかです。デフォルトはtrue

ただ僕は使っていないのでfalseに。ツールやサービスと連携して使っているとサムネイルが欲しくなったりするのかな?

concurrency

同時実行数です。ブラウザを何個起動するかですね。

この数を大きくすればテスト時間も短くなります。ただしリソースも必要になるので、環境に合わせていい感じの数に調整する必要があります。

stopOnFirstFail

テストが1つ失敗したタイミングで後続のテストを中断するかどうかです。デフォルトはfalse、つまり継続のテストもすべて実行するです。

僕は1つ失敗したらすぐに改修するってやり方が好きなのでtrueにしてます。CIで回すときも1つでも失敗したらどうせマージされないので、フィードバックをすぐに獲得するためにも、実行時間を抑えておくためにも、trueにしてます。

cache

スタイルシートスクリプトをキャッシュするかどうかです。デフォルトはfalseです。

テスト実行時間短縮のため、trueにしてます。

まとめ

TestCafeのオプションをコンフィグファイルで管理してみました。 かなりいろいろと設定できますねー。

自分たちの開発スタイルに合わせて調整していきたいですね。