Share
Embed
E2E Test というハーネス — AI時代の自動テスト民主化
Tokyo Test Fest 2026 における LT 登壇資料です。
https://tokyotestfest.com/home_2026/
Daishu
November 13, 2026
Transcript
22 slides
-
自己紹介 小島 大周 @Daishu QA エンジニア | AI × QA
推進 株式会社メドレー 所属 CLINICS(医療 SaaS)の QA リード・AI × QA 横断 これまでノーコードの E2E テストツールを 3 年運用 いまは Playwright に移行して、運用基盤「E2E Platform」を展開 Tokyo Test Fest 2026 · @Daishu 仕組みをつくるのが好き 2 -
E2E を書くことは、もう民主化された AI に頼めば、Playwright のテストコードが出てくる。 出てくるもの たとえば、こう頼む ログイン画面のテストを、 PageObject パターンで書いて
ディレクトリ構成から実装まで、 一気に出てくる。 → e2e/ ├─ playwright.config.ts ├─ config/ ├─ helpers/ ├─ page-objects/ ├─ tests/ └─ docs/ 今日お伝えする民主化は、E2E テストをチームの日々の開発に根付かせること。 Tokyo Test Fest 2026 · @Daishu 4 -
E2E を運用するために必要なもの 開発の中で使うには、必要なときに回して結果を見られること。 ノーコードツール テストを作れば、運用も付いてくる テスト作成 Playwright テスト作成 テスト実行 定期実行・並列
通知 失敗をすぐ届ける レポーティング 結果を誰でも開ける E2E Platform 社内で作った共通の仕組み テスト実行 通知 定期実行・並列 失敗をすぐ届ける レポーティング 結果を誰でも開ける チームで日常的に回せるよう、運用の仕組みを E2E Platform にした。 Tokyo Test Fest 2026 · @Daishu 5 -
E2E Platform を導入しているプロダクト(2026/11 現在) メドレーの医療プラットフォームの 5 つのプロダクトで、Playwright の E2E が動いている。
導入 PoC 中 ↑ 同じ E2E Platform に載っている E2E Platform ※ 詳細は後半で Tokyo Test Fest 2026 · @Daishu built on Playwright 6 -
CLINICS の Playwright 移行 5 か月 2025/10 PoC の 最初の
PR 2026/1 移行を 本格的に開始 5 か月 2026/6 CLINICS の 移行が完了 E2E Platform を切り出す 2026/11 5 つの プロダクトへ 移行の 5 か月でやっていたこと Playwright を学ぶ Tokyo Test Fest 2026 · @Daishu 運用の仕組みを作る 7 -
まず、E2E をプロダクトと同じリポジトリへ これまで いま プロダクトのリポジトリ 機能の実装 Unit・API・UI のテスト ・・・ 別の場所
・・・ E2E ノーコードツール Tokyo Test Fest 2026 · @Daishu → プロダクトのリポジトリ 機能の実装 Unit・API・UI のテスト E2E Playwright AI が実装と各層のテストを一緒に読める 機能と E2E を同じ PR で実装してレビューできる 9 -
方針|E2E にしかできないことを任せる(継続) CLINICS には既に各層のテスト基盤があり、どの層で何を守るかは、開発者と合意していた。 E2E 利用者の振る舞い 業務が最後までつながることを、 人が読める言葉で確かめる。 Component 画面部品の状態
API 部品の正しさ 速く、細かく検査する Unit リクエストと応答 関数の入出力 層ごとに得意なことを任せて、全体で品質を守る。 Tokyo Test Fest 2026 · @Daishu 10 -
規約|手順と期待値を step に書く 人が step の記載をレビューし、AI がその内容に沿って実装する。 step の記載 手順と期待値を人が確認する
実装 AI が step 通りに書く 手順 「〜する」 メールアドレスとパスワードでログインする" , async () => { 説明用サンプル await test.step( " await page.getByLabel("メールアドレス").fill("[email protected]"); await page.getByLabel("パスワード").fill("example-password"); await page.getByRole("button", { name: "ログイン" }).click(); }); 期待値 「〜すること」 ホーム画面が表示されること" , async () => { await test.step( " await expect(page.getByRole("heading", { name: "ホーム" })).toBeVisible(); }); step に書いた手順・期待値と、実装を常に同期する。 Tokyo Test Fest 2026 · @Daishu 11 -
方針と規約を、skill と lint で守る 決めたこと(抜粋) 方針 E2E にしかできないことを任せる 操作の自動化だけで終わらせない 規約
手順と期待値を step に書く 画面の状態を待つ 操作と期待値を分ける 根因を調べてから直す 書く前に → skill AI が読む。 判断の理由も入れる。 lint E2E を書く 機械で止める。 → AI が → 書いた後に 独自ルール 45 本。 方針と規約を skill と lint にして、誰でも同じ基準で E2E を書けるようにした。 Tokyo Test Fest 2026 · @Daishu 12 -
E2E Platform のしくみ 各プロダクトのリポジトリ スターターセット インストールで入る ディレクトリ構成 skil と lint
設定 オンボーディング資料 インストール 0→1 の構築 ← ふだんは 機能の実装 E2E のテスト 最初に 1 回 skill で実装 workflow を 呼び出す → E2E Platform 共通のリポジトリ スターターセット ディレクトリ構成・skil と lint・設定・オンボーディング資料 ① テスト実行 ② 通知 self-hosted runner 開発のメインチャンネルへ ③ レポーティング ④ 分析 失敗箇所・AI の失敗分析 Dashboard テストと規約は各プロダクトに。実行・通知・レポーティングは E2E Platform に。 Tokyo Test Fest 2026 · @Daishu 14 -
E2E の経験を、skill とオンボーディング資料に E2E の運用経験 ノーコードツールで 3 年。 E2E に任せる範囲の線引き。
移行の経験 日々の気づき 5 か月。 迷った所と、判断の理由。 レビューと、 失敗の調査から。 ↓ 書き起こして、育て続ける AI が読む skill 判断の基準と、その理由。 ⇄ 一緒に 更新する 人向けには オンボーディング資料 同じ内容を人が読む形で。 次のチームは、これまでの経験を引き継いで始められる。 Tokyo Test Fest 2026 · @Daishu 15 -
他のプロダクトへの展開 1 構築する スターターセットで 0→1。 2 引き継ぐ QA エンジニアへ、考え方ごと。 3
根付かせる QA エンジニアが開発チームへ。 4 E2E が回る 開発チームが回して、育てる。 E2E Platform built on Playwright ↓ skill と資料に、CLINICS での移行の経験が入っている QA エンジニア QA エンジニア QA エンジニア QA エンジニア 開発チーム 開発チーム 開発チーム 開発チーム CLINICS でうまくいった仕組みと考え方を、各プロダクトの QA がチームに根付かせる。 Tokyo Test Fest 2026 · @Daishu 16 -
開発プロセスの中の E2E テスト QA が頼まなくても、開発者が自分からやっていること。 1 実装する 機能と E2E を、
同じ PR で実装する。 skil が働き、AI が E2E も書く。 支えているもの skill と lint 2 確かめる → テストを選んで、 自分で実行する。 必要なときに何度でも。 3 リリースする → 通っていることを 確かめて、出す。 リリース前に自分から回す。 E2E Platform テスト実行・通知・レポーティング Unit・API・Component のテスト PR のたびに CI で回る 各層のテストと E2E が、リリース判断を支えるハーネスになった。 Tokyo Test Fest 2026 · @Daishu 18 -
目指していた運用が、チームに根付いた CLINICS で目指した「必要なときに回す・チームで育てる」が日常に。 以前 実行 主に QA 数人が 1 日
1〜2 回 作成・保守 QA チーム主体 いま(2026/11) 必要なときに、自分で回す → 私以外の アカウントが 14 182 回 開発チームも、作成・保守に参加する → 私以外の 13 アカウントが参加 集計:2026/10/13〜11/11(30 日間) コミットの約30%は私以外 集計:2026/10/13〜11/11(30 日間) 開発チームが自ら回し、育てる。E2E の民主化を実現した。 Tokyo Test Fest 2026 · @Daishu 19 -
E2E Platform は社内 OSS チームが日常的に使う共通基盤を、これからも育てていく。 今後、共通基盤へ広げる取り組み Agentic Test AI が実機で確かめる
実践中 Release VRT 画面の変化を確かめる E2E Platform 社内 OSS PoC 中 Web Vitals 性能の劣化を確かめる これから built on Playwright + 新しい プロダクト E2E の新しい機能や改善を、共通基盤から各プロダクトへ届ける。 Tokyo Test Fest 2026 · @Daishu 20 -
まとめ 見直した どこに置くか どう書くか どう守るか どう回すか 誰が育てるか これまで ノーコードツールの中 QA
が自分の手で組む レビューで人が指摘する ツールに付いてくる機能を使う QA チームが作って直す 続けている 各層で役割を分ける → → → → → いま プロダクトと同じリポジトリ step で設計・レビューし、AI が実装する skill と lint で守る 内製の E2E Platform 開発者・AI・QA 毎日回して育てる 開発者と一緒に品質を守る QA が育ててきた E2E を、開発者と AI も育てられるようにした。 Tokyo Test Fest 2026 · @Daishu 21