LoginSignup
1

More than 1 year has passed since last update.

Golden テストがCIで実行すると失敗する場合の対策法

Last updated at Posted at 2022-01-18

Flutter で便利な Goldenテスト、これをGitHub Actions等のCIで実行すると、失敗してしまうことがあります。
ローカルの環境では成功するのに何故、、、?と頭を悩ましました。

この問題の解決法について解説します。

課題

Goldenテストがローカルの環境では成功するが、
GitHub Actions等のCIで実行すると失敗してしまう。

解決法

Goldenを生成したOSとCIで実行するOSを揃える。

Goldenを生成したPCのOSがMac OSの最新版ならば、
CIの実行環境のOSもMac OSの最新版にする。

解説

CIの失敗はオペレーションシステムによって、生成されるGolden(スクリーンショット)が微妙に異なることが原因で発生します。
こちら、公式で言及されています。

Golden tests may be executed locally on Linux, MacOS, and Windows platforms. All reference images can be found at Flutter Gold baselines. Some tests may have multiple golden masters for a given test, to account for rendering differences across platforms. The parameter set for each image is listed in each image digest to differentiate renderings.

引用元
https://github.com/flutter/flutter/wiki/Writing-a-golden-file-test-for-package:flutter#adding-a-new-golden-file-test

また、同じMacでもOSのバージョン違いで失敗する場合があるようです。

参考
https://github.com/flutter/flutter/issues/56383

なので、CIの設定ファイルにて、実行するOSを合わせることで、
同じGoldenが生成され、テストが無事成功します。

まとめ

Goldenテストがローカルの環境では成功するが、
GitHub Actions等のCIで実行すると失敗してしまう場合、
Goldenを生成したOSとCIで実行するOSを揃えることで、想定通りの実行結果となります。

GitHub Actionsで指定するOSはLinuxが多いと思うので、
多くの人がハマってしまうのではないでしょうか。

ぜひこの方法で対策してみてください。

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1