🧪
Playwright Agentsを使ったテスト計画・コード・自動修復のサイクル検証
はじめに
Playwright公式が、テストの計画・実装・修正を行うエージェントを提供し始めたようなので試してみる。
https://playwright.dev/docs/test-agents
Playwright Agentsを使ってみる
環境
- Windows11上のWSL2 (Ubuntu)
事前準備
Playwrightインストール
npm init playwright@latest
https://playwright.dev/docs/intro
手順
1. Playwright Agentをインストール
npx playwright init-agents --loop=vscode
コマンドを実行したディレクトリに、いくつかファイルが生成されている
Need to install the following packages:
playwright@1.56.1
Ok to proceed? (y) y
Writing file: .github/chatmodes/🎭 generator.chatmode.md
Writing file: .github/chatmodes/🎭 healer.chatmode.md
Writing file: .github/chatmodes/ 🎭 planner.chatmode.md
Writing file: .vscode/mcp.json
Writing file: seed.spec.ts
2. VSCode Insidersを起動
CopilotのChatペインに、エージェントが増えている。

3. エージェントにテスト計画してもらう
ローカルに適当なアプリを立ち上げた上で、plannerエージェントに以下を指示。

仕様書を生成してくれた。


同じコンテキストで、テスト計画書作成もお願いしてみる。


4. テストの実装
generatorエージェントにテスト計画に沿ったテスト実装を指示。

テストコードをもりもり作成していく。
// spec: docs/webapp-test-plan.md
// seed: tests/seed.spec.ts
// Scenario: 5.5 サインアップ(正常系)
import { test, expect } from '@playwright/test';
test.describe('シナリオ 5.5 サインアップ(正常系)', () => {
test('5.5 サインアップ(正常系)', async ({ page }) => {
// 1. /register を開く
await page.goto('http://localhost:4200/register');
// 2. Username/Email/Password を有効値で入力
const username = `e2e_signup_${Date.now()}`;
const email = `${username}@example.com`;
await page.getByRole('textbox', { name: 'Username' }).fill(username);
await page.getByRole('textbox', { name: 'Email' }).fill(email);
await page.getByRole('textbox', { name: 'Password' }).fill('Passw0rd!');
// 3. Sign up をクリック
await page.getByRole('button', { name: 'Sign up' }).click();
// 期待結果: Home に遷移、ヘッダがログイン状態に変化
await expect(page.getByRole('link', { name: 'New Article' })).toBeVisible();
await expect(page.getByRole('link', { name: 'Settings' })).toBeVisible();
await expect(page.getByRole('link', { name: username })).toBeVisible();
// 期待結果: LocalStorage に JWT 保存
const token = await page.evaluate(() => window.localStorage.getItem('jwtToken'));
expect(token, 'jwtToken should be set in localStorage').toBeTruthy();
});
});

- たくさん失敗している
テストの修正
ヒーラーエージェントに修正をお願いしてみる。

- 何回かやりとりしたらすべてPassedになった
おわりに
- 雑に使ったけど、結構使いやすかった
- テスト自動化のとっかかりとしては良いかも
- MCP活用してもっと開発効率上げていきたい。
- テストケースとして価値があるのか、実装は妥当かなどチェックはいる
- それ自体もプロンプトにいれるべき
補足:Playwright Agentsの実装調査
-
mcp.json記載のrun-test-mcp-serverコマンドの実装は以下
Discussion