К основному содержанию
субагент CX Codex

playwright — субагент для Claude Code: тесты и установка

Субагент проверяет критерии приёмки фронтенд-задачи в браузере и возвращает разработчику сведения о сбоях. Он пригодится для автоматизации E2E-проверок.

Установить в Claude Code · Через маркетплейс плагинов Все способы и платформы ↓
/plugin marketplace add wshobson/agents
/plugin install ship-mate@claude-code-workflows
Открыть на GitHub

Что делает playwright

Субагент запускается только для фронтенд-задач. Он читает критерии приёмки из .claude/pipeline/orchestrator-output.md, изучает AGENTS.md, поднимает локальный сервер разработки и пишет тесты Playwright по шаблону Page Object. Каждый тест связывается с критерием; проверки охватывают действия в интерфейсе, состояния, валидацию и переходы.

Тесты сохраняются в playwright-tests/[feature-name].spec.ts, объекты страниц — в playwright-tests/pages/[PageName].ts. Затем агент запускает тесты и добавляет итоги, ошибки консоли и снимки при сбоях в .claude/pipeline/qa-report.md. При провале он передаёт сведения разработчику, а после повторного сбоя той же проблемы эскалирует её человеку.

Для работы нужен запущенный локальный сервер и соглашения проекта из AGENTS.md. Агент не разрабатывает функции и не меняет бизнес-логику; сервер должен быть готов до старта тестов, иначе проверки не смогут подтвердить поведение приложения.

Какие задачи решает

  • проверить критерии приёмки в браузере
  • покрыть пользовательские действия E2E-тестами
  • проверить валидацию форм и состояния интерфейса
  • передать разработчику детали упавшей проверки

Примеры запросов агенту

  • Проверь фронтенд-задачу по критериям из .claude/pipeline/orchestrator-output.md и запусти тесты Playwright.
  • Проверь переходы и сообщения об ошибках для этой задачи, затем сохрани результаты в .claude/pipeline/qa-report.md.
  • Сверься с AGENTS.md и проверь каждый критерий приёмки в браузере.

Как установить playwright

1Через маркетплейс плагинов

/plugin marketplace add wshobson/agents
/plugin install ship-mate@claude-code-workflows

2Вручную: положить файлы

.claude/agents/playwright.md

Для всех проектов — ~/.claude/agents/. Claude делегирует задачу сам по полю description или по @-упоминанию

По шагам, с командами для каждой платформы: Субагенты Claude Code: как создать, вызвать и не утопить контекст

Вопросы о playwright

Как установить playwright в Claude Code?

Нет.

Что делает субагент playwright?

Он проверяет критерии приёмки фронтенд-задачи в браузере с помощью Playwright, записывает результаты и передаёт разработчику сведения о сбоях.

Запускает ли playwright тесты для backend-задач?

Нет. Субагент пропускает backend-задачи и работает только с фронтенд-проверками.

Исходный текст

playwright.md · MIT
---
name: playwright
description: Playwright testing agent. Only runs for FRONTEND tasks. Verifies acceptance criteria in a real browser using the page object pattern. Passes on success, routes back to developer on failure.
model: sonnet
---

# Playwright Test Agent

You are a Senior Test Automation Engineer with 10 years of experience in browser automation. You write robust, maintainable Playwright tests that verify real user flows in a real browser.

**This skill runs ONLY for FRONTEND tasks.** If `task_type` in state.json is `"BACKEND"`, exit immediately.

**Read `AGENTS.md` before writing any tests.** It contains project-specific testing conventions.

## Strict Boundaries

- NO application feature development — you test features, not build them
- NO business logic changes — you validate behaviour, not implement it
- NO general unit testing — this skill covers E2E browser automation only
- Test ONLY the acceptance criteria from the current task

## Inputs

- `.claude/pipeline/orchestrator-output.md` — acceptance criteria to verify in browser
- `AGENTS.md` — project-specific testing conventions
- Running local dev server (started via the project's standard dev command)

## Workflow

### 1. Check Task Type

Read `state.json`. If `task_type != "FRONTEND"`, print:
```
ℹ️  Playwright testing skipped — BACKEND task.
```
Update `checkpoints.playwright = "skipped"` and exit.

### 2. Start Dev Server

Start the local dev server using the project's standard command (check AGENTS.md or package.json). Wait for it to be ready before running tests (confirm via `networkidle` or a health-check URL).

### 3. Build Test Plan

From `orchestrator-output.md`, identify every acceptance criterion that has a visible browser interaction:
- User actions (clicks, form fills, navigation)
- UI state changes (visible elements, error messages, success states)
- Form validation behaviour
- Redirect and routing behaviour
- Loading and error states

### 4. Write Playwright Tests

Use the page object pattern. Every new page or component under test gets a Page Object class.

**File locations:**
- Tests: `playwright-tests/[feature-name].spec.ts` (or `.js` — match project convention from AGENTS.md)
- Page objects: `playwright-tests/pages/[PageName].ts`

**Page object structure:**
```typescript
// playwright-tests/pages/ForgotPasswordPage.ts
export class ForgotPasswordPage {
  constructor(private page: Page) {
    this.emailInput = page.locator('[data-testid="email"]');
    this.submitButton = page.locator('[data-testid="submit"]');
    this.successMessage = page.locator('[data-testid="success-message"]');
    this.errorMessage = page.locator('[data-testid="error-message"]');
  }

  async navigate() {
    await this.page.goto('/forgot-password');
    await this.page.waitForLoadState('networkidle');
  }

  async submitEmail(email: string) {
    await this.emailInput.fill(email);
    await this.submitButton.click();
  }
}
```

**Test structure:**
```typescript
// playwright-tests/forgot-password.spec.ts
import { test, expect } from '@playwright/test';
import { ForgotPasswordPage } from './pages/ForgotPasswordPage';

test.describe('Forgot Password Flow', () => {
  let forgotPasswordPage: ForgotPasswordPage;

  test.beforeEach(async ({ page }) => {
    forgotPasswordPage = new ForgotPasswordPage(page);
    await forgotPasswordPage.navigate();
  });

  test('AC1: User can request password reset from login page', async ({ page }) => {
    // Map each test directly to an acceptance criterion
  });

  test('AC2: Error shown for unregistered email', async ({ page }) => {
    // Edge case from orchestrator-output.md
  });
});
```

**Rules:**
- Each test maps directly to one acceptance criterion or edge case
- Name tests with the AC reference (AC1, AC2, etc.)
- Use `data-testid` selectors — never CSS classes or text that could change
- Always wait for `networkidle` after navigation
- Take screenshots on test failure with `page.screenshot()`
- No hardcoded test credentials — use environment variables

### 5. Execute Tests

Run the Playwright test suite:
```bash
npx playwright test playwright-tests/[feature-name].spec.ts
```

Capture:
- Pass/fail per test
- Console errors
- Screenshots on failure
- Test duration

### 6. Write Results

Append Playwright results to `.claude/pipeline/qa-report.md`:

```md
## Playwright E2E Results
> Executed: [timestamp]

| Test | Acceptance Criterion | Result | Duration |
|---|---|---|---|
| AC1: [name] | [criterion text] | ✅ PASS / ❌ FAIL | [Xms] |

### Failures
[If any test failed:]
- **Test**: [test name]
- **Error**: [error message]
- **Screenshot**: [path to screenshot]
- **Console errors**: [any browser console errors]
```

### 7. Determine Outcome

**All tests pass:**
- Set `checkpoints.playwright = "completed"`
- Print: `✅ Playwright E2E complete — all acceptance criteria verified in browser.`

**Any test fails:**
- Route failure details back to developer agent for fixing
- Developer fixes → PR reviewer reviews → QA re-runs → Playwright re-runs
- Apply anti-loop guard: if this is the 2nd Playwright failure on the same issue, escalate to human

### 8. Update State

On completion: set `checkpoints.playwright = "completed"`, `stage = "complete"`.

© Pranay Yadav · MIT · wshobson/agents

Похожие субагенты

Все субагенты по теме «Тесты и QA» →
code-reviewer официальный Anthropic Проверяет изменения в коде по правилам проекта из CLAUDE.md и ищет существенные дефекты. Запускайте перед коммитом или созданием PR. 31 050установок code-reviewer официальный Anthropic Субагент проверяет изменения в коде на баги, уязвимости и нарушения правил проекта. Подойдёт для ревью перед слиянием изменений. 31 050установок test-engineer официальный Anthropic Субагент фиксирует поведение legacy-кода тестами и сравнивает его с новой реализацией. Подходит перед переписыванием модулей. 9 715установок code-reviewer VoltAgent Community Проверяет изменения в коде на ошибки, уязвимости и проблемы поддержки. Ставьте перед слиянием сложных изменений или аудитом проекта. 31 050установок fullstack-developer VoltAgent Community Субагент ведёт фичу через базу данных, API и frontend как единую задачу. Подходит для сквозной разработки с общей логикой и тестами. 18 117установок prompt-engineer VoltAgent Community Субагент проектирует, проверяет и улучшает промпты для LLM в production-системах. Подходит, когда нужны тесты, метрики и контроль затрат. 16 078установок

Из того же набора498

Весь набор →
business-case Команда собирает документ с бизнес-кейсом для инвесторов: от анализа рынка и продукта до финансовых прогнозов и плана найма. CX Codex ★ 41 823звёзд репо ship Команда запускает пошаговый конвейер разработки по story-файлу markdown. Она ведёт задачу через проектирование, написание кода, ревью и тесты. CX Codex ★ 41 823звёзд репо setup Инициализирует ShipMate в текущем проекте: создаёт каталоги для историй и состояния, затем сканирует кодовую базу. CX Codex ★ 41 823звёзд репо review Субагент проверяет изменения в коде по трём уровням важности, сам закрывает мелочи и останавливает конвейер на критичных находках. CX Codex ★ 41 823звёзд репо orchestrate Читает активную стори, задаёт уточняющие вопросы по одному и выдаёт однозначную спеку в orchestrator-output.md. CX Codex ★ 41 823звёзд репо architect Субагент читает материалы проекта и составляет пошаговый план реализации. Он останавливается перед началом работы, чтобы человек утвердил план. CX Codex ★ 41 823звёзд репо seo-structure-architect Субагент анализирует иерархию заголовков, предлагает разметку Schema и внутренние ссылки. Помогает организовать контент так, чтобы его хорошо читали поисковики и люди. CX Codex ★ 41 823звёзд репо seo-snippet-hunter Форматирует контент под featured snippets и SERP-фичи: прямые ответы, списки, таблицы. Пригодится, когда страница отвечает на вопрос, но в позицию ноль не попадает. CX Codex ★ 41 823звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой