$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
長年続く手動E2Eテストを自動化で救いたい
Search
kinosuke01
September 24, 2025
Technology
0
100
長年続く手動E2Eテストを自動化で救いたい
「10年以上続くプロダクトの苦労と知恵 ~運用と技術の本音、3社がぶっちゃけます~」におけるLT資料です。
https://replus.connpass.com/event/366589/
kinosuke01
September 24, 2025
Tweet
Share
More Decks by kinosuke01
See All by kinosuke01
Playwright x GitHub Actionsで実現する「レビューしやすい」E2Eテストレポート
kinosuke01
0
890
AIを導⼊しても、 開発⽣産性は"爆増"していない なぜ?
kinosuke01
4
5.7k
バックエンドエンジニアによるフロントエンドテスト拡充の具体的手法
kinosuke01
1
1.3k
生成AIで加速するテスト実装 - ロリポップ for Gamersの事例と 生成AIエディタの活用
kinosuke01
0
290
カンファレンス登壇資料を毎日読む習慣
kinosuke01
0
220
Notionで作るWebサイト「MuuMuu Sites」の裏側
kinosuke01
0
2.5k
Other Decks in Technology
See All in Technology
Snowflakeで実践する、生成AIを活用した「自然言語によるデータとの対話」
nayuts
0
130
文字列の並び順 / Unicode Collation
tmtms
3
630
フィッシュボウルのやり方 / How to do a fishbowl
pauli
2
310
AIプラットフォームにおけるMLflowの利用について
lycorptech_jp
PRO
1
180
SREには開発組織全体で向き合う
koh_naga
0
390
AlmaLinux + KVM + Cockpit で始めるお手軽仮想化基盤 ~ 開発環境などでの利用を想定して ~
koedoyoshida
0
130
AI-DLCを現場にインストールしてみた:プロトタイプ開発で分かったこと・やめたこと
recruitengineers
PRO
2
200
AIBuildersDay_track_A_iidaxs
iidaxs
3
680
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
140
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
1
730
たまに起きる外部サービスの障害に備えたり備えなかったりする話
egmc
0
350
ActiveJobUpdates
igaiga
1
280
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
180
Statistics for Hackers
jakevdp
799
230k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
26
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
47
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
85
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
110
Google's AI Overviews - The New Search
badams
0
860
Between Models and Reality
mayunak
0
150
Exploring anti-patterns in Rails
aemeredith
2
200
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
130
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対応等「ないものは作る」ことで課題解決。 ⾃動化を進めて、⻑年続くサービスを⽀えていきましょう。 以上になります。ありがとうございました!