0からのPlaywright導入とその成果
株式会社EVERSTEEL / 日野原真也
メンバー / フルスタックエンジニア・プロダクトエンジニア
| 利用機能 | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
|---|---|---|---|
E2Eテスト | 10名以下 | 2024年12月 | B to B |
| 利用機能 | E2Eテスト |
|---|---|
| ツールの利用規模 | 10名以下 |
| ツールの利用開始時期 | 2024年12月 |
| 事業形態 | B to B |
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
全体的にUIを刷新したタイミングで、自動遷移などの機能が増え、フロントエンドの複雑性が高まりました。さらに、古いUIと新しいUIを工場ごとに出し分けていたため、両方のUIの動作確認を行う必要がありました。 その結果、不具合の見落としが発生しやすくなっていました。
どのような状態を目指していたか
- ユーザーにとって重要な部分は自動でテストができ、不具合の見落としてを防いで安心して機能の追加などができること。
- また、ビジュアルリグレッションテストを導入して、UIのデグレを防ぐこと。
比較検討したサービス
Cypress
比較した軸
- ツールの便利さ
- 信頼性
- 導入のしやすさ
選定理由
Cypressとどちらを使用するか悩みましたが、テストの並列実行が可能だったりビジュアルリグレッションテストも簡単に導入できたりと、機能的にPlaywrightの方が便利な点がいくつかありました。
また、導入の2024年当時にPlaywrightの方がダウンロード数の面でも勢いがあったのでPlaywrightを選択しました。
テストもTesting Libraryと同じような文法なので、学習コストが低そうだったのも要因の一つです。
導入の成果
改善したかった課題はどれくらい解決されたか
かなり解決したと感じています。
現在はポストモーテムを実施していますが、テスト導入前は特にそのような定期的な障害の振り返りを行っておらず、厳密な比較はできないですが、体感や最近のポストモーテムの内容的にテスト導入前に比べてフロントエンドにおけるクリティカルな障害はかなり減ったかなと思います。
最初はテストケースの漏れなどで不具合が発生することがありましたが、その度に足りてなかったテストケースを追加することで不具合の発生をさらに減らすことができました。
現在はE2Eテストが通る = クリティカルな不具合は無いという状態にできているので、安心して機能追加などができています。
導入時の苦労・悩み
- 0からのE2Eテストの導入だったので工数が少しかかってしまった
- 最初はビジュアルリグレッションテストを実施していましたが、プロダクトのUI変更が多くメンテナンスが大変になり、費用対効果を考えて実施しなくなりました
導入に向けた社内への説明
上長・チームへの説明
冒頭で説明したような課題があったので、そもそも他のチームメンバーともE2Eテストを導入したいという話をしていました。 とりあえず試しに1つのテストケースを作成し、それを元に導入をチームに提案しました。
活用方法
GitHub Actionsを使用しPR作成時にE2Eテストを実行して、不具合の混入を未然に防いでいます。
よく使う機能
- E2Eの自動テスト
- ビジュアルリグレッションテスト(上記記載の通り、今は実行していない)
ツールの良い点
- E2Eテストだけでなく、他のライブラリを追加せずにビジュアルリグレッションテストもできる
- Microsoftが開発しているため信頼性があり、npmダウンロード数も他のツールと比較して最も多い
- 文法がTesting Libraryに似ているため学習が容易
ツールの課題点
Playwrightに限った話ではなくE2Eテストの特性上仕方ないところではありますが、実行時間がかかってしまいます。
私たちのアプリでは一部並列実行ができない処理があるため、今はE2Eテストの実行に10分弱ほどかかっています。
とはいえ、基本的には並列実行が可能なツールですので、一般的な構成のアプリであればそこまで実行時間はかからないと思います。
ツールを検討されている方へ
上記で挙げたツールのメリットからE2Eテストの選定で悩んでいるのであれば、特別なユースケースがない場合は、Playwrightを選択しておけば問題ないと思います。
他にもフロントエンドのテスト導入で迷っていることがあれば、こちらの記事を参考にしてください。
株式会社EVERSTEEL / 日野原真也
メンバー / フルスタックエンジニア・プロダクトエンジニア
よく見られているレビュー
株式会社EVERSTEEL / 日野原真也
メンバー / フルスタックエンジニア・プロダクトエンジニア


