Open6

『ビジュアルリグレッションテストツール4選!ユーザーが語る各ツールのメリット』LTに参加してみた🌟

まさぴょん🐱まさぴょん🐱

『ビジュアルリグレッションテストツール4選!ユーザーが語る各ツールのメリット』LT🌟

  • ビジュアルリグレッションテスト(VRT)ツールの選定や運用に携わるエンジニアの皆様にピッタリのイベントを開催します。

  • ノーコードでE2Eテスト自動化を可能にして、多くのソフトウェア開発現場の生産性を高めてきたMagicPodが、今回はビジュアルリグレッションテストツールの世界に深く潜り込み、コンポーネントテストレベルのVRTツールからE2EテストレベルのVRTツールまで幅広くご紹介します。

  • 現在話題の4つのツールをピックアップし、それぞれの魅力と課題を、実際のユーザー体験をもとに紹介します。

  • 独自の視点で各ツールの特徴を掘り下げることで、皆様に日々の開発業務に役立つ貴重な情報をご提供します。パネルディスカッションでは、ツール選定のポイントや効果的な運用方法について深く議論する予定!

  • このイベントは、VRTの精度や効果を高めたい開発者の皆さまにとって、実践的な知識と新たな視点を得る絶好の機会となるイベントです!

個別セッションテーマ

  1. 「reg-viz 配下の VRT ツール群 (仮)」Quramyさん

    • reg-cli, reg-suit, Storycap といったツールについて、各ツールの誕生経緯や利用例などを紹介します。
  2. 「Storybookの実力をフル活用するChromaticの活用」sakitoさん(サイボウズ株式会社)

    • Storybookと、Chromatic
  3. 「VRTのダークホースLostPixelについて」aijiさん(株式会社エイチーム)

    • 社内で開発しているコンポーネントライブラリのVRTツールとしてLostPixelを導入しました。
  4. 「Playwrightで一番小さく始めるVRTと、次のステップの選択肢」Hirotaka Miyagiさん(株式会社ROUTE06)

    • VRTの運用には多くの考慮事項がありますが、Playwrightを使えば一番小さくVRTの運用を始められます
    • その方法と、その次に進むべき選択肢についても紹介します。

パネルディスカッションテーマ

  • VRTがあって助かったシチュエーションはありますか?
  • 実装、メンテはどなたが行なっているか?VRTで不具合を検出できていますか?
  • VRTのテストケースの管理や、テスト結果の評価や可視化はどうされていますか?

https://trident-qa.connpass.com/event/308664/

まさぴょん🐱まさぴょん🐱

reg-viz 配下の VRT ツール群

VRT: スナップショット・Test

  • reg-viz

reg-viz-tools の特徴

  • 自前のCI環境で構築するなら、無料で使えます。

Visual Testingに対する考え方

  • フロントエンドVRTに対する考え方
    • Visual Testingの範囲を定義する
    • Componentの

Visual Testingに対するスタンス

  1. Storybookのような Componentカタログ
  • 修正の影響範囲が自分たちでは、追えなくなる時が、いつか来る。。。

  • 「見た目がどのように変更されるのか」を

reg-viz

  1. テストコードから、画像を生成する

画像で設計している経緯

  1. 2016時点では、Angular
  2. 「画像比較」だけ機能追加すれば、VRTができる!

「画像」で分離しているため、

サポートしているツールについて

  1. 今のところ、公式サポートしているツールは、Storybookのみ。

Storycap

  1. Storybookを

storycap-testrun

  1. CLIではなく、ライブラリ
  2. Storybook TestRunner上で、画像を撮ってくれる。

reg-cli

  1. reg-viz のなかで、一番古いパッケージ

VRTの課題

reg-vizは、CI上でのみ実行させることで、VRTの課題を解決する

  1. CIから Reviewer に通知する

発表資料

https://speakerdeck.com/quramy/reg-viz-vrt-tools

関連リンク🌟

https://reg-viz.github.io/reg-suit/

https://zenn.dev/knowledgework/articles/297ccfb866a5b5

まさぴょん🐱まさぴょん🐱

Storybookの実力をフル活用するChromaticの活用

Chromatic(クロマティック)

  1. 無料で活用できるが、チームで使用するなら、エンタープライズがおすすめ。
  2. ブラウザ環境(Test Runner環境)を用意しなくても、ChromaticでどのWebブラウザの挙動を確認できる。
  3. Storybookがある前提
  4. Storybook Test というライブラリもある
    • Storybook上で、E2EのようなTestができる。

Chromaticを導入した背景

  • 次の3つを解決するためのChromatic導入
    • VRTの実行だけが理由じゃない。。。
  1. Storybookの共有のしやすさ
    • SSOと、カスタムドメインをChromaticに設定している
  2. デザインシステムの環境で、Storybookを活用した。
  3. VRTを起点としたデザインレビュー
    • デザイン変更が多いので、目視での確認をある程度、自動化したかった。

VRTをどう利用しているのか?

  1. VRTでは、コンポーネントのパターンと見落としがちな状態の検知に使っている
  2. Storybook駆動開発となり、テストが一体になっていることで、運用するのが当たり前になっている🔥

Snapshot数を節約する

  1. なにも設定しないと git pushごとに、Snapshot数が増加する

StorybookとChromatic

  1. Storybookに依存しない、E2Eテスト環境 (Beta版)

Storybookで、Chromaticの確認が可能に🌟

  1. localで確認できる!

まとめ

  1. VRT以外にも機能が豊富
  2. Figma ✖️ Storybook ✖️ Chromatic のツール連携
  3. Storybook以外のE2Eテストツールとしての機能

発表資料

https://speakerdeck.com/sakito/storybooknoshi-li-wohuruhuo-yong-suruchromatic

関連リンク

https://www.chromatic.com/

まさぴょん🐱まさぴょん🐱

VRTのダークホースLostPixelについて

LostPixelの特徴

  1. スナップショット
    • Playwrightベース
    • マルチブラウザ対応
    • Playwrightを書いて、カスタムできる
  2. 画像の比較・差分検索がオールインワンなツール

スナップショットの対応ツールが豊富

  • さまざまなカタログ・ツールとの連携ができる(サポート)
    • Storybook
    • Ladle
    • Histoire

OSSモードと、プラットフォームモード

  1. OSSモード
    • 無料
    • CIを自分で組む必要がある
  2. プラットフォームモード
    • 有料
    • ベースライン

推しポイント

1. 設定ファイルは、JS/TSで記述できる

  1. 撮影対象のページのリストや、各ページの撮影時の設定などを実行時に動的に生成できる。

2. Playwrightの要領で、撮影前の任意の処理を設定できる

3. しきい値や、待機秒数などのパラメータは、ページ・ストーリーごとに設定できる

  1. VRTあるあるの解決
  2. Lost Pixel では、

4. 撮影時に任意の要素をマスキングして、撮影できる

  1. ランダムなコンテンツや、

いまいちなポイント🥺

1. 公式のDocの情報量が少ない

  1. 凝ったことをしようとすると、SrcCodeを読むハメに。。。
  2. --helpみたいなオプションも整備されていない。。。

2. OSSモードでの差分のプレビュー機能が充実していない。。。

  1. 3種類の画像データが生成されるのみ。
  2. diff単体では、原因特定にまでは、至れないので、

実際の運用について

  1. 車内用のコンポーネントライブラリプロジェクトで利用
  2. Lost Pixelは、OSSモードで利用
  3. VRTは、
  4. VRTのためにStorybookを書くのは避ける

Storybook + カスタムページ

登壇資料

https://speakerdeck.com/aiji42/vrtturunodakuhosu-lost-pixelwoshao-jie-sitai

関連リンク

https://zenn.dev/aiji42/articles/6656072a954a9b

https://github.com/lost-pixel/lost-pixel

まさぴょん🐱まさぴょん🐱

Playwrightで一番小さく始めるVRTと、次のステップの選択肢

アジェンダ

  1. Playwrightが提供する VRTの機能紹介
  2. 一番小さく運用する上での

VRTの基本3フェーズ

  1. 撮影:スクリーンショットの撮影
  2. 比較:
  3. 差分確認:
  • ちゃんとVRTをしようとすると、大変。。。

Playwrightで、小さく始めよう🌟

  1. Microsoft製の E2Eテストツール
  2. Auto-wait
  3. Codegen: ブラウザでの操作をコードに変換してくれる
  4. VSCodeがめっちゃいい!!

PlaywrightでのVER

撮影, 比較, 差分確認 すべてに対応可能です。

1. 撮影フェーズ

screenshot()で、撮影する

2. 比較フェーズ

toHaveScreenshot() で、比較フェーズ

3. 差分確認フェーズ

VRTを始める上での指針

  1. どのツールを使う?インフラはなにを用意すればいい?

  2. 比較元のスクリーンショット、どうする?
  3. 差分確認のビューワーは、どのように用意する?
    • GitHub の Artifacts

VRT Test 実践

1. Playwrightのテストファイル

2. package.jsonでの設定

3. GitHub Actionsのワークフロー

現状できないこと

  1. URLベース撮影であること。。。

解決の選択肢

  1. 自前実装
  2. OSSを活用したセルフホスト
  3. Saas

Storyに対して、スクリーンショットを撮りたい

  1. 自前実装: Storyのパスを列挙する

差分確認をより簡単にしたい

  1. 自前実装:
  2. ツールの採用: 比較・差分確認フェーズを reg-suitに切り替える
    • S3バケットなどのストレージが必要
  3. Saasの採用:比較・差分確認フェーズを lost-pixel に切り替える

VRT基盤の運用コストをできるだけ下げたい。。。

  1. SaaSの採用:

VRT時間増加が大変になってきた時は?

  1. 撮影で時間がかかりすぎるようになってきた時は、並列実行

発表資料

https://speakerdeck.com/mh4gf/playwright-de-fan-xiao-sakushi-meru-vrt-to-ci-nosutetupunoxuan-ze-zhi

関連リンク

https://playwright.dev/docs/test-snapshots

まさぴょん🐱まさぴょん🐱

パネルディスカッションテーマ

1. VRTがあって助かったシチュエーションはありますか?

Quramyさん|Engineer (@Quramy)の場合

  1. 100PRとかで、数件あるかないかぐらい
  2. 人間の目視で確認できない、CSSの罠を検知してくれた時

Sakitoさん|サイボウズ株式会社 Design Manager (@sakito)

  1. Chromaticで、観ていると実装上ですぐに変更を確認できるのが嬉しい
  2. デザインシステムを作っているので、Visual面での品質を担保したい。
  3. 確認の心理ハードルが下がって、心理的に楽になっている。
  4. focusや、hoverした状態などまで、人の目で見るのは大変なので、自動化できるのが、ありがたい!

aijiさん|株式会社エイチーム Engineer(@aiji42_dev)

  1. 差分をVRTで、Visual的に確認できるのが楽。
  2. Baselineが、リポジトリにあるのは、そのまま確認できるので楽

Hirotaka Miyagiさん|株式会社ROUTE06 Tech Lead (@MH4GF)

  1. Chakl UI (UIライブラリ) の Updateで、罠のような Updateがあった時に、それを検知してくれたのがありがたかった。。。
  2. スナップショットと、期待値Checkで、
  3. 最後の砦として、VRTは安心感がある。

2. 実装、メンテはどなたが行なっているか?VRTで不具合を検出できていますか?

Quramyさん|Engineer (@Quramy)の場合

  1. Codeベースを触る人が自然と担当している。
  2. なので、役割分担まで考えたことがない。。。
  3. E2Eレベルのテストケースを考える段階になって、初めて、役割分担を考える。
  4. Storybookぐらいの単位なら、実装者が作成する
    • 1個の storyファイルの中に、どれくらい storyを書くか? について
  5. ちょっと重たいUnitテストみたいな感じで、StorybookでのTestは作っている

Sakitoさん|サイボウズ株式会社 Design Manager (@sakito)

  1. Storybook と Chromaticを中心に関わるエンジニアや、デザインナーが実装・メンテをしている。
    • なので、関わる人を合計すると、30〜40人ぐらいいる。
  2. デザインシステムを実装・メンテする専属人員も社内に入る。

aijiさん|株式会社エイチーム Engineer(@aiji42_dev)

Hirotaka Miyagiさん|株式会社ROUTE06 Tech Lead (@MH4GF)

  1. ストーリーの変更があるのに、VRTの変更がない場合
  2. パフォーマンスの
  3. FrontEnd書くときは、Test書いてね
  4. E2Eテスト
  5. 業務プロダクトだと、Playwightだけだと厳しい場合があるので、
  6. Playwrightは、E2Eテストで使っています。

3. VRTのテストケースの管理や、テスト結果の評価や可視化はどうされていますか?

Quramyさん|Engineer (@Quramy)の場合

  1. テストケースの管理については、質問者の意図がわからないので回答が厳しいです。。。
  2. 結果の可視化については、差分のレポートで確認している。
  3. パフォーマンスの測定

Sakitoさん|サイボウズ株式会社 Design Manager (@sakito)

  1. Chromaticがすべて解決してくれているので、特になにもない。。。
    • ここら辺のことを考えるのが、面倒だから、Chromaticを使っている。

aijiさん|株式会社エイチーム Engineer(@aiji42_dev)

  1. 可視化に関しては、差分として上がってくる分でしか見えていない。。。
  2. Storybookを見れば、基本の可視化はできているので、そこまで困っていないかも。
  3. テストケースの管理に関しては、Storybookに紐づいているので、それが管理状態にもなっている。

Hirotaka Miyagiさん|株式会社ROUTE06 Tech Lead (@MH4GF)

  1. 可視化の部分は、
  2. 管理は、どれをVRTにするか?は、相談している
  3. デフォルトのStory