ビジュアルテスト向けCI/CDパイプラインでの画像Diff

CI/CDパイプラインに画像Diffを統合してビジュアルリグレッションを自動検出する方法を解説。ベースライン管理、Diff閾値、自動レポートの設定方法を学びます。

CI/CD & Automation

詳細な説明

CI/CDパイプラインでの画像Diff

CI/CDパイプラインに画像Diffを統合することで、ユニットテストや統合テストが見逃すUIの変更を自動的にビジュアルリグレッション検出します。すべてのコミットやプルリクエストがビジュアル比較をトリガーし、視覚的影響に関する即座のフィードバックを提供します。

パイプラインアーキテクチャ

典型的なビジュアルテストパイプライン:

コードプッシュ → ビルド → ステージングへデプロイ → スクリーンショットキャプチャ
    → ベースラインと比較 → レポート生成 → パス/フェイルゲート

実装手順

  1. 一貫した環境(固定ブラウザバージョン、フォント、ロケールのDockerコンテナ)でスクリーンショットをキャプチャ
  2. 専用リポジトリまたはアーティファクトストレージにベースラインを保存
  3. ピクセルレベルの比較アルゴリズムを使用してDiff比較を実行
  4. 閾値を適用 — 差分パーセンテージが設定可能な閾値を超えた場合のみビルドを失敗させる
  5. サイドバイサイド比較画像とDiff可視化でレポートを生成
  6. ビジュアルリグレッションが検出された場合、マージをブロック(または手動承認を要求)

環境の一貫性

CIビジュアルテストの最大の課題は、実行間で一貫したレンダリングを保証することです。一貫性のない環境はテストスイートへの信頼を損なう偽陽性を生成します。

制御すべき主要因子:

  • ブラウザバージョン — 特定のChromiumバージョンに固定
  • システムフォント — アプリケーションで使用される正確なフォントをインストール
  • タイムゾーンとロケール — 一貫した値に固定
  • 画面解像度 — 固定仮想ディスプレイサイズを使用
  • GPUレンダリング — 決定的レンダリングのためハードウェアアクセラレーションを無効化

ユースケース

エンジニアリングチームはビジュアルリグレッションがプロダクションに到達するのを防ぐためにCIパイプラインにビジュアルテストを追加します。1日に複数回デプロイするチームは、CSSリグレッション、依存関係更新からのレイアウト崩壊、コンポーネント変更の意図しない副作用をキャッチするための自動ビジュアルゲートが必要です。

試してみる — Image Diff

フルツールを開く