価値提供スピード向上のため安心・低コストなリリースへ - Findy FreelanceでのPlaywright導入事例 -
ファインディ株式会社 / nesskazu
メンバー / フロントエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|
11名〜50名 | 2023年2月 | B to B B to C |
ツールの利用規模 | 11名〜50名 |
---|---|
ツールの利用開始時期 | 2023年2月 |
事業形態 | B to B B to C |
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
- Findy FreelanceではAutifyを利用し最重要な機能のみE2Eテストを実行しており、通常の機能にもE2Eテストの範囲を拡大したいと考えていたが現行プランの制約上E2Eテストが追加できていなかった
- リリース時のプルリクエストの段階でE2Eテストが実行されるため、不具合修正のためリリースが遅れたりテスト修正をリリース担当者が行うため属人化していた
どのような状態を目指していたか
- E2Eテストが低コストで行える環境を整備する
- プルリクエストを出したタイミングでテストが実行される
- リリースプルリクエスト時にテストが通ることでデグレ等の心配なくリリースできる
- リリースの心理的ハードルを下げ価値提供スピードを向上させる
比較検討したサービス
- Autify
- Cypress
比較した軸
- E2Eテストを追加しても費用的負担が少ないこと
- 属人化せずにE2Eテストの追加及び管理ができること
- E2Eテストがコードで管理できること
- ブラウザの操作をもとにコードが自動生成されること
選定理由
- VSCodeのPlaywrightプラグインのTest generator機能を使いテストのベースを作成できることと
- 要素取得の仕組みがTesting Libraryと似ており開発メンバーに親しみやすいから
導入の成果
改善したかった課題はどれくらい解決されたか
リリース前にしか実行できていなかったE2Eテストがプルリクエスト毎に実行できるようになり、不具合発見が早まるとともにプルリクエスト提出者が修正するようになり属人性が下がった。
どのような成果が得られたか
コストを気にせずにテストの追加ができる環境が手に入ったのでチームで実装していくための下地が整った
導入時の苦労・悩み
- 認証が必要なページをテストするため認証情報を保持する必要があるが、Findy FreelanceではIndexDBを使うFirebase Authを利用しているおり、認証情報を保持する処理を独自で実装する必要があったこと
- プルリクエスト毎にE2Eテストを実行するためCIの実行時間短縮は必須だったのでE2Eテストの並列実行を前提に書くことやCIのキャッシュを積極的に活用するために調整したこと
導入に向けた社内への説明
上長・チームへの説明
- CI実行以外の費用はかからないため実行時間x実行回数を想定し低コストで導入できることを説明
- E2Eテストが増えることでデグレ等の可能性を低減できることを説明
- リリース前だけではなくプルリクエストごとにテストが実行できることでリリースのリードタイムを削減できることを説明
活用方法
テスト作成時
- Playwright Test for VSCodeを利用してテストを生成
プルリクエスト時
- CI上で環境構築しテストを実行
- HTML ReportをAWS S3にアップロード
- 簡易レポートにHTML Reportのリンクを付与しプルリクエストにコメント
ステージングデプロイ後
- ステージングデプロイ後テストを実行
- HTML ReportをAWS S3にアップロード
- 簡易レポートにS3のHTML Reportのリンクを付与しプルリクエストにコメント
プロダクションデプロイ後
- プロダクションデプロイ後テストを実行
- HTML ReportをAWS S3にアップロード
- 簡易レポートにS3のHTML Reportのリンクを付与しSlackへ通知
よく使う機能
Reporters
- JSON Reporterを元に簡易レポート作成しプルリクエストにコメント
- HTML Reporterで生成した結果をS3にアップロードしプルリクエストのコメントにリンクを追加
modify-responses
- A/Bテストなどでレスポンスを変更することで意図したパターンのテストを実行
Playwright Test for VSCode
- ブラウザの操作からテストコードを生成
- ローカルでのテスト実行
ツールの良い点
- ブラウザの操作することでコードを生成できる
- ツール自体は費用がかからない
ツールの課題点
- テストがflakyになる場合がある
ツールを検討されている方へ
ブラウザの操作をすることでコードを自動生成することができるので最初導入しやすいと感じました。重要なシナリオだけのカバーであれば実装コストも少なく機能を担保できるのでリリース時の負担が減少します。 Playwright自体は費用が発生していないため気軽に試すことができるのでぜひ使ってみて欲しいです。
今後の展望
現状では重要な機能のみカバーしている状態ですが、チームへの浸透を進めて通常の機能にもテストの範囲を広げてサービスの安定稼働が継続できるようにしていきたい思います。また、テストが増えてくるとCIの実行時間も増えて来ることが予想されるので並列実行を前提とした実装やCIの高速化を進めて行きたいと考えています。
ファインディ株式会社 / nesskazu
メンバー / フロントエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
受託企業やEC企業でiOSアプリ開発をメインに行う。ファインディ株式会社に入社後は、フロントエンジニアとしてFindy Team+やFindy Freelanceのフロントエンド開発に携わる。
よく見られているレビュー
ファインディ株式会社 / nesskazu
メンバー / フロントエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
受託企業やEC企業でiOSアプリ開発をメ...