PlaywrightとStorybookの連携試行記
株式会社Rehab for JAPAN / 松田尚也
メンバー / フロントエンドエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
ツールの利用規模 | 事業形態 |
---|---|
10名以下 | B to B |
ツールの利用規模 | 10名以下 |
---|---|
事業形態 | B to B |
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
手動によるUI確認の工数
初期開発から数年が経過し、ライブラリのアップデートを実施したいという意向はあったものの、フロントエンド開発者が2名という限られたリソースの中でプロダクト開発を継続していたため、アップデートに踏み切る余裕がありませんでした。
変更による予期せぬ影響
Storybook を利用していたにも関わらず、ビジュアルの変化を自動で検知する仕組みが不足していたため、細かな差分に気づきにくいという課題を抱えていました。
どのような状態を目指していたか
予期せぬ変更影響の把握
手動レビューでは見逃しがちな細かなUI変更を自動的に検出し、UIライブラリのアップデートに伴うリスクを低減することを目指しました。
効率的な開発体制の構築(VRTの自動化)
限られた開発者数でも安心してUIライブラリの更新を進められるよう、迅速なフィードバックループの確立によって、開発効率を向上させることを狙っています。
VRT(Visual Regression Testing)とは
VRTとは、アプリケーションのユーザーインターフェース(UI)の見た目を定期的に記録し、後の変更と比較することで、意図しないビジュアル上の差分や不具合を自動的に検出するテスト手法です。デザインやレイアウトの微妙な変化も見逃さず、手動による確認工数を大幅に削減し、品質保証の効率化を目指しました。
Storybookとの統合
Storybookとの統合により、コンポーネント単位でのテストが容易になり、既存の開発フローに自動テストを自然に組み込むことを目指しました。
比較した軸
低コストかつ柔軟な試行
フロントエンドエンジニアが少人数であるため、プロダクト開発と並行して実施する必要があり、導入コストを最小限に抑えることが重要でした。
学習コストを抑える
プロダクト開発と並行して進めるため、導入によって追加の工数が発生しないことが求められました。具体的には、情報過多にならず、複数のツールを組み合わせる必要がないシンプルな構成であることを目指しました。
選定理由
Playwright+StoryBookでVRTが行える
Playwright単体でスクリーンショットの取得、比較、UI上での差分確認が可能なため、追加のライブラリを導入することなく試行できる点が魅力的でした。
Playwrightの拡張性
初回の導入目的はVRTの実施でしたが、E2Eテストツールとしても優秀なPlaywrightの拡張性が魅力的でした。
導入時の苦労・悩み
PlaywrightはStorybook専用のVRTツールではないため、あらかじめStorybookを立ち上げ、そのStorybookに対してスクリーンショットを取得する必要がありました。この一連の流れを構築するには、例えばStoryCapなどのSaaSツールと比較すると、構築に時間がかかるという課題がありました。
導入に向けた社内への説明
上長・チームへの説明
今回の取り組みでは、既存のStorybookリソースを活用できる点に注目し説明をしました。具体的には、Storybookを記述することで、その記述自体が自動テストとして機能するため、追加のツールを導入せずにテストを実施できる仕組みを提案しました。さらに、Storybookの記述は短時間で完了するため、従来のユニットテストに比べて保守工数が大幅に削減できるというメリットも伝えました。
また、今回の試行は正式な導入前の内部評価として実施しました。開発リソースに余裕があるタイミングを見計らい、上長やチームには「Storybookを活用した自動テストの効果と利便性を確認するためのパイロットプロジェクト」としてこの取り組みを説明しました。
活用方法
よく使う機能
スナップショット取得
Storybook上のUIコンポーネントのスクリーンショットをPlaywrightで自動取得し、状態を記録する機能。
差分比較
取得したスナップショットを前回の状態と自動で比較し、UIの微細な変更(レイアウト、スタイルなど)の差分を可視化する機能。
ツールの良い点
高速かつ柔軟なテスト実行
Playwrightは高速なスクリーンショット取得が可能で、UI変更の検出に優れており、柔軟なカスタマイズが可能です。
豊富なAPI
さまざまなシナリオに対応できる豊富なAPIにより、詳細な設定や特定の要件に合わせた調整が可能です。
既存リソースの活用
Storybookと連携することで、既存のコンポーネント管理フローに自然に組み込め、追加のツール導入が不要な点がコスト面で魅力的です。
無料で利用可能
導入コストが低く、初期投資を抑えながら試行できるため、少人数のチームでも導入しやすいです。
ツールの課題点
Storybook専用ではない構成
PlaywrightはStorybook専用のツールではないため、あらかじめStorybookを立ち上げた状態でスクリーンショットを取得する必要があり、構築に手間がかかります。
CI/CD統合の課題
現状、CI/CDパイプラインへの統合が難しく、OS依存の差分問題が発生する可能性があるため、主にローカルでのテスト実行に留まっています。
テスト対象の網羅性
Storybook上にテスト対象となるコンポーネントが十分に整備されていない場合、テストの網羅性に限界がある点が課題です。
初期設定や運用工数の問題
テストケースの作成やStorybookコンポーネントの整備に手作業が必要なため、初期設定や運用にかかる工数が大きくなる可能性があります。
今後の展望
CI/CDへの統合検討
将来的には、CI/CDパイプラインへの統合を目指す予定ですが、OS依存による差分問題の解決が前提となります。現状では、各開発者がローカル環境でテストを実行し、push直前に差分を確認する形で運用しています。
本運用への移行
今回の試行はあくまで初期段階であり、本格的な運用効果についてはまだ判断できません。今後は、テストケースの充実とStorybook上のコンポーネント網羅性の向上を図りながら、本運用を目指していきます。
株式会社Rehab for JAPAN / 松田尚也
メンバー / フロントエンドエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
よく見られているレビュー
株式会社Rehab for JAPAN / 松田尚也
メンバー / フロントエンドエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名