画像回帰テストのスクリーンショットどこで撮る問題
@laco2net: 画像回帰テストのスクリーンショット、ローカルのMacとリモートのUbuntuでフォントレンダリング等変わっちゃう問題をDocker以外で解決する手札がなかなかない 外部ストレージに退避するパターンなら自前S3だったりSaaSだったりあれこれやりようはあるが、GitHubで完結しようとするとけっこう難しい。
根本的にこの問題は「そもそもローカルで撮影しない」しか解決方法がないので、うまいことGitHub Actions使ってやるほかない。
mainブランチのon:pushで撮るアイデア
mainブランチの on: pushでワークフローを実行する
スクリーンショットを撮影する
差分が出ていれば画像ファイルを更新するPRを自動作成する
expectedが更新済みなのでこのPRのテストは通る
マージする
フィーチャーブランチを作る
CIで撮影してexpectedと比較する
差分が出ていればテストが落ちる
特定のラベルをPRに付与することで、差分が出ているがステータスをGreenにできるようにする
マージする
最初に戻る
試作してみた
基本的には期待通りに動いた
課題
ワークフローから作成されたPRは別のワークフローを起動しないので、スナップショット更新PRでCIを回せない
このためにtokenは使いたくないし、やるならGitHub Appsでやるか
差分が出て落ちたときの確認がめんどくさいのでアーティファクトのURLをPRにコメントして確認したい