CircleCIでFlakyテストを簡単に可視化する

## 結論 CircleCIのTest Insightを使うとFlakyテストの可視化が簡単。 ![スクリーンショット 2022-10-13 4.36.44.png](https://bootcamp.fjord.jp/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBOUxPQWc9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9pZCJ9fQ==--3d8d62de806e7d2d071331ae4c1c64d9eaf302f7/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202022-10-13%204.36.44.png) ## 経緯 フィヨルドブートキャンプ(以下FBC)ではGitHub Actionsを使ってCIを回していましたが、Flakyなテストに悩まされていました。落ちたテストを記録しようとするとGitHub Actionsだと手軽で安価な方法が見つからず、Twitterに悩みを吐露したところ :@willnet: から耳寄りな情報をいただきました。 ![スクリーンショット 2022-10-13 4.41.36.png](https://bootcamp.fjord.jp/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBOVRPQWc9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9pZCJ9fQ==--b879f39336380cc49852909becacc85836c86f43/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202022-10-13%204.41.36.png) [結果が不安定なテスト\(Flaky Test\)を検出できるテスト インサイト機能が登場](https://circleci.com/ja/blog/introducing-test-insights-with-flaky-test-detection/) ## Railsアプリでの使い方 CircleCiのTest InsightはJUnit XML形式のファイルを読み込んでくれるので、Railsで使う場合はminitest-ci gemなどを使ってJUnit XMLを出力すると楽です。(ファイルはデフォルトで`test/reports`に出力されます) [bhenderson/minitest\-ci: This has been moved to circleci\.](https://github.com/bhenderson/minitest-ci) CircleCIの設定ファイルの記述方法は長くなるので該当部分だけ掲載しますが、CircleCIを使ったことがある人ならすぐわかるはずです。 ```yaml - run: name: Test command: rails test:all when: always - store_test_results: path: test/reports ``` JUnit XMLファイルがあるディレクトリを`store_test_results`に設定しておくだけです。 これでテストを実行していけばデータが溜まっていき、Insightのページで見ることができます。 ## 導入後 一番落ちてるテストも自明なので、チームでFlakyなテストに立ち向かうのが楽になりました。 ![スクリーンショット 2022-10-13 4.36.44.png](https://bootcamp.fjord.jp/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBOUxPQWc9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9pZCJ9fQ==--3d8d62de806e7d2d071331ae4c1c64d9eaf302f7/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202022-10-13%204.36.44.png)