Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
長年続く手動E2Eテストを自動化で救いたい
Search
kinosuke01
September 24, 2025
Technology
0
30
長年続く手動E2Eテストを自動化で救いたい
「10年以上続くプロダクトの苦労と知恵 ~運用と技術の本音、3社がぶっちゃけます~」におけるLT資料です。
https://replus.connpass.com/event/366589/
kinosuke01
September 24, 2025
Tweet
Share
More Decks by kinosuke01
See All by kinosuke01
AIを導⼊しても、 開発⽣産性は"爆増"していない なぜ?
kinosuke01
0
720
バックエンドエンジニアによるフロントエンドテスト拡充の具体的手法
kinosuke01
1
1.1k
生成AIで加速するテスト実装 - ロリポップ for Gamersの事例と 生成AIエディタの活用
kinosuke01
0
260
カンファレンス登壇資料を毎日読む習慣
kinosuke01
0
180
Notionで作るWebサイト「MuuMuu Sites」の裏側
kinosuke01
0
2.4k
Other Decks in Technology
See All in Technology
Bedrock AgentCoreで解き放て! Strands Agentsで構築するマルチエージェントの実装Tips
minorun365
PRO
12
1.9k
みん強のこれまでとこれから
genshun9
1
130
中間管理職をなくしたら何が起きたか 〜AI時代の組織変革と3つの失敗〜
staka121
PRO
2
280
Создание мультиагентной системы на базе AI Studio
shwars
0
140
入門 FormObject / An Introduction to FormObject #kaigionrails
expajp
1
250
AIフレンドリーなコードベースを目指して/登壇資料(高橋 悟生)
hacobu
PRO
3
590
「その開発、認知負荷高すぎませんか?」Platform Engineeringで始める開発者体験カイゼン術
sansantech
PRO
2
1.3k
RevOps実践で学んだ俺が最強のデータ基盤になることの重要性 / revops-practice-learned
pei0804
1
700
iOSDC2025 みてねiOSアプリにおける バックグラウンドアップロード継続の挑戦
hikarusato
2
490
Kafkaを利用したIcebergへのデータストリーミング
shmza
0
170
PacketProxyで探るGemini CLIのコンテキストエンジニアリング 〜AIエージェントを信頼できる相棒に〜
kakira9618
0
590
日本語で指示するだけ!AIで業務効率化を実現する 〜90分で体感する実践ワークショップ〜
taka_aki
0
1.6k
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Music & Morning Musume
bryan
46
6.8k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Agile that works and the tools we love
rasmusluckow
330
21k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Designing Experiences People Love
moore
142
24k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Practical Orchestrator
shlominoach
190
11k
Transcript
1 ⻑年続く⼿動E2Eテストを ⾃動化で救いたい ロリポップ‧ムームードメイン事業部 ⻄⽥貴之 2025.09.24
2 ⾃⼰紹介 ロリポップ‧ムームードメイン事業部 事業開発チーム 2020年 中途⼊社 ⻄⽥ 貴之 Nishida Takayuki
• Webアプリケーションエンジニア • 主に新規事業開発を担当 • エンジニア組織におけるAI活⽤の推進や 開発⽣産性向上への取り組みも⾏っている。 • X : @kinosuke01
背景 3
背景 • GMOペパボのロリポップ‧ムームードメイン事業部は、 コンパネの操作でサーバー等のインフラをセットアップして提供する プロダクトが多い。 • 例)ロリポップ!レンタルサーバー • これらは個別のユニットテストだけではカバーできないので、 E2Eテストで品質担保する必要がある。
• 20年以上運⽤されてきたプロダクトもあるが、 E2Eテストが⼿動のままなので、これを⾃動化したい 🔥 E2Eテストを⾃動化したい
背景 • Playwrightとは • Microsoft社製のE2Eテストツール。 • 実装したテストコードに従い、ブラウザを⾃動操作‧動作検証してくれる。 • 実⾏結果をブラウザ画⾯のスクリーンショットつきで、レポートしてくれる。 •
このPlaywrightを、 事業部の主要なプロダクトに導⼊開始した。 解決策としてPlaywrightを導⼊開始 スクリーンショットつきの テスト結果のレポート例
現状と理想像 6
現状と理想像 1. 開発者は、PRを作る。 2. PRのコードを検証環境にデプロイする (ここは既に⾃動化されている)。 3. 開発者は、検証環境で必要なE2Eテストを⼿動で⾏いスクリーンショットを撮る。 4. 開発者は、E2Eテスト結果とエビデンス(スクリーンショット)をコメントする。
5. レビュアーは、コードレビューに加え、 E2Eテスト結果から本番環境に反映して問題ないかをチェックする。 6. 問題なければ承認&マージ。 現状の開発フローは、⼿動のE2Eテストとスクリーンショットが必要
現状と理想像 1. 開発者は、PRを作る。 2. PRのコードを検証環境にデプロイする (ここは既に⾃動化されている)。 3. 開発者は、任意のE2Eテスト実⾏をコメントで指⽰する。 4. GitHub
Actions で Playwright が起動。 コードに含まれるテストケースともとに、E2Eテストが⾃動実⾏。 結果がスクリーンショット付きでコメントされる。 5. レビュアーは、コードレビューに加え、 E2Eテスト結果から本番環境に反映して問題ないかをチェックする。 6. 問題なければ承認&マージ。 理想は、⼿動のE2Eテストとスクリーンショット登録を⾃動化
課題と対応 任意のE2Eテストを実⾏したい 9
課題と対応:任意のE2Eテストを実⾏したい • 課題 • E2E⾃動テストは時間もかかり不安定なので、PR作成やpushと同時に全部動かすという ことはしたくない。なので、任意のE2EテストをPRの中で発動させる必要がある。 • 対応 • Playwrightのタグ機能を使って、
特定のタグに紐づいたテストのみ実⾏できるようにする。 • PRのコメントで、スラッシュコマンドと実⾏対象のタグを受け取る。 • ⾃前でパースしてもいいし、カスタムアクション使ってもいい。 • これにより任意のテストだけの実⾏を実現する。 Playwrightのタグと、スラッシュコマンドで対応
課題と対応:任意のE2Eテストを実⾏したい PRに、このようにコメントすると Playwrightのタグと、スラッシュコマンドで対応 /pw signup npx playwright test --grep "@signup"
巡り巡って、これがGithub Actionsで実⾏される。 これは簡単にできる。
課題と対応 スクショつきのテスト結果がほしい 12
課題と対応:スクショつきのテスト結果がほしい • 課題 • 現状、⼿動のE2Eテストの結果は、スクリーンショットつきでPRコメントしている。 • これと同じことをやりたいが、GitHub API は画像登録に対応していない 🔥
• どこかにホストされている画像を、Markdownの中で表⽰させることはできるが、 GitHub上に画像を登録するAPIはなさそう。 スクリーンショット登録は簡単ではない 「ここにドラッグアンドドロップで画像 登録する」と同等のことがAPIではで きない
課題と対応:スクショつきのテスト結果がほしい • 対応案 • S3等のオブジェクトストレージを準備して、スクリーンショットをホストする。 • ホストされた画像URLを、PRコメント欄に登録する。 • 評価 •
管理対象のインフラを増やしたくないので、できれば避けたい ❌ • GitHub 上で完結できる⽅が望ましい。 案1: オブジェクトストレージにホストする
課題と対応:スクショつきのテスト結果がほしい • Playwrightはテスト結果として、 htmlとスクリーンショットのセットをレポート出⼒する。 • これを、GitHub Actions の中で、任意のリポジトリにプッシュして、 GitHub Pages
で公開する。 • 社内で利⽤している GitHub Enterprise には GitHub Pages のページにデフォルトでアクセス制御ついているので安⼼。 • Github Pages へのリンクをPRコメントに投稿する。 案2: GitHub Pages使う
課題と対応:スクショつきのテスト結果がほしい 案2: Github Pages 使うケースはうまく動いた GitHub Actions上で、 レポートとスクリーンショットを 任意のリポジトリにプッシュ ビルドとデプロイされて、
レポートがGithub Pagesで確認できる
課題と対応:スクショつきのテスト結果がほしい • GitHub Pages は静的サイトをビルドしてデプロイしている。 • 対象ファイルが増えれば増えるほど、時間がかかってしまう。 • レポートが増えてくると、反映されるまで相当の時間がかかりそう ❌
案2: GitHub Pages使うのは問題もある
課題と対応:スクショつきのテスト結果がほしい • Playwrightのテスト結果を、 Markdownとスクリーンショットのセットで出⼒する。 • これを、GitHub Actions の中で、任意のリポジトリにプッシュする。 • プッシュしたMarkdownファイルのGitHubのURLを、PRコメントに投稿する。
• Markdownファイルは、GitHub上でプレビュー表⽰されるので、 GitHub Pages のような仕組みが不要。 案3: スクショつきのMarkdownを使う
課題と対応:スクショつきのテスト結果がほしい • Playwright標準のレポーターはMarkdownに⾮対応。 • サードパーティ製のMarkdownに対応したカスタムレポーターはあるけど、 スクリーンショットを表⽰してくれなさそう... • 要件を満たすMarkdownレポーターがない 🔥 案3:
ただ、PlaywrightのはMarkdownのレポーターがない
課題と対応:スクショつきのテスト結果がほしい • 仕⽅ないので、Playwrightのカスタムレポーターを作って、 今回の要件に合うMarkdownファイルを出⼒できるようにした。 • こんな感じの構造で出⼒している。 案3: Markdownのカスタムレポーターを作った - playwright-md-report
- index.md - screenshots - xxx.png - xxx.png
課題と対応:スクショつきのテスト結果がほしい • 出⼒された index.md をエディタでプレビューするとこんな感じ • 出⼒項⽬は調整の必要があるけど、できるのはわかった。 案3: Markdownのカスタムレポーターを作った
課題と対応:スクショつきのテスト結果がほしい こんな感じになった 1. `/pw xxx` とコメント 2. xxxタグのE2Eテストが実⾏ 3. 結果がコメントされる
4. 結果コメント欄にある View Reportをクリックすると 案3: 全体の挙動確認
課題と対応:スクショつきのテスト結果がほしい 5.ViewReportをクリックすると Markdown形式のレポートが GitHub上でプレビュー表⽰。 スクショ付き。 案3: 全体の挙動確認 理想とする体験を 実現することができた 👏👏
課題と対応:スクショつきのテスト結果がほしい • Markdownのレポーターの出⼒内容を調整して、OSSにする。 • ⼀連のGitHub Actionsの流れをカスタムアクションにして、 複数のプロダクトで簡単に導⼊できるようにする。 • 複数のプロダクトに導⼊していく。 残作業
まとめ 25
26 まとめ 現業務プロセスを踏まえて、E2Eテスト⾃動化を進めている。 Markdown対応等「ないものは作る」ことで課題解決。 ⾃動化を進めて、⻑年続くサービスを⽀えていきましょう。 以上になります。ありがとうございました!