プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • JavaScript
  • StoryBookのビジュアルリグレッションテスト
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

StoryBookのビジュアルリグレッションテスト

09.28

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

アプリケーションの変更前後で画面のスクリーンショットを取得し、画像の差分比較を行うことで意図せぬ変更が生じていないかを検証するテスト。

アプリケーションのロジックや振る舞いのテストではなく、デザインに関するテストになります。

スナップショットテストとの違い

スナップショットテストはDOMの比較をするのだが、ビジュアルリグレッションテストは画像の差分を比較します。なので、スナップショットテストよりもより見た目に特化したテストと言えます。

仕組み

  1. 基準となるスクリーンショットを取得
  2. 変更後のスクリーンショットの取得
  3. 2つのスクリーンショットを比較して差分を検出する。

メリット

差分チェックが簡単に行える。

細かいズレを目視で確認することは困難ですが、このテストを使えば1pxのズレすら検知できます。

デザインレビューが容易になる。

意図しない変更だけでなく意図した変更も検出できるのでレイアウトの調整が簡単になります。

ツールの選択肢

Storybook単体で行うというよりはいくつかのツールを組み合わせで実施するのが一般的です。

reg-suit + Storycap

最も人気の高い組み合わせ

reg-suit

画像の差分検出を行うライブラリ

Storycap

Storybookのカタログの内容を画像として保存するアドオン

Chromatic

ビジュアルリグレッションテストを非常に簡単に行えるクラウドサービス、Storybookのメンテナーが開発・メンテナンスをしています。デザインの比較だけでなく、デザインに対するコメント、承認フローなど豊富な機能がそろっています。

月に5000スナップショットまでであれば無料で利用できます。(画面が少ない小規模なプロジェクト程度ならこれで十分かもしれません。)

Playwright

主にE2Eテストに利用されるサービスですが、ビジュアルリグレッションテストにも利用される場合があります。

Chromaticの導入

Chromaticを導入するにはプロジェクトがgit管理されている必要があります。

1.Chromaticの公式サイトでアカウント登録する。

2.プロジェクト名を入力する。

次に、画面上に出てくる以下のコマンドを実行してgitコミットします。

1
npm install --save-dev chromatic

次に画面上に出てくる以下のコマンドを実行して自分のstorybookをChromaticにパブリッシュします。

1
npx chromatic --project-token=chpt_xxxxxx

しばらく待つと以下のように聞かれます。

1
2
‼ No 'chromatic' script found in your package.json
Would you like me to add it for you? [y/N]

これはchromaticにパブリッシュするコマンドを追加しますか?というような質問になります。便利ですが、トークンの内容まで追加されてしまうのでセキュリティ上危険になるので心配であればNを選ぶようにしましょう。

パブリッシュに成功すると上記のようにパブリッシュが成功した画面が表示されます。

リグレッションテストを実行してみる。

ページ下の「Go to your project」をクリックする。

以下の表示が出てきます。これはStorybookをパブリッシュした単位になります。何度もパブリッシュするとその分だけ数値の数が加算されていきます。

クリックすると以下のような画面になります。

意図的に差分を起こしてパブリッシュすると以下のようになります。前回のビルドから差分があったStoryのみが表示されます。

クリックするとこんな感じでUIの差分を検出できます。

以下のようにDenyやAcceptなどのレビュー機能まで備わっています。議論などもできます。(Acceptを押すことで承認されて表示が緑色になります。)

スポンサーリンク
  • 2023 09.28
  • miyabisan2
  • コメントを書く
  • JavaScript
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 06.12

    【JavaScript】「jest」、モック化など

  2. 2023 09.28

    StoryBookのインタラクションテスト

  3. 2020 04.29

    【JavaScript】「シンボル」、「イテレーター」、「ジェネレータ」について

  4. 2020 04.05

    【JavaScript】「CORS」、「クロスドメイン制約」とは?

  5. 2023 01.09

    【JavaScript】ejsについて

  6. 2020 10.09

    【Babel】Babelの基本、「presets(プリセット)」、「プラグイン」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

StoryBookのインタラクションテスト

CloudFrontのキャッシュ設定、キャッシュポリシ…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー