К основному содержанию
скилл Claude Code

generate — скилл для Claude: тесты Playwright из описания

Скилл generate пишет тесты Playwright по пользовательской истории, URL, имени компонента или описанию фичи. Пригодится, когда надо быстро закрыть e2e-сценарий, а не писать его руками.

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

Что делает generate

Скилл принимает аргумент с тем, что нужно протестировать: строку вида «user can log in with email and password», путь к компоненту вроде src/components/UserProfile.tsx, название страницы или фичи. Дальше он разбирает вход, читает playwright.config.ts, смотрит существующие тесты в testDir, ищет page objects в pages/ и фикстуры в fixtures/, проверяет настройку авторизации через auth.setup.ts или storageState.

Под каждый тип сценария есть шаблон: логин, CRUD, checkout, поиск с фильтрами, формы, дашборд, настройки, онбординг, API, доступность. Шаблон адаптируется под проект — плейсхолдеры заменяются на реальные селекторы, URL и данные. Генерация идёт по правилам: локаторы в порядке getByRole(), getByLabel(), getByText(), getByPlaceholder(), getByTestId(); ассерты только web-first с авторетраем; page.waitForTimeout() и голые CSS-селекторы не используются. Если проект на TypeScript, выйдет .spec.ts, если на JavaScript — .spec.js с require().

После генерации скилл сам запускает npx playwright test --reporter=list и правит тест, если тот упал. Нужен установленный Playwright и настроенный конфиг — без них шаги разбора кодовой базы теряют смысл. Ставить стоит тем, у кого уже есть e2e-набор и он растёт; если Playwright в проекте не используется, скилл вам не нужен.

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

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

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

  • напиши тесты для страницы логина с email и паролем
  • сгенерируй e2e-тест для checkout flow
  • добавь тесты для src/components/UserProfile.tsx

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

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

/plugin marketplace add alirezarezvani/claude-skills
/plugin install pw@claude-code-skills

2Через Skills CLI (Vercel)

npx skills add alirezarezvani/claude-skills --skill generate -a claude-code

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

~/.claude/skills/generate/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/generate/

Похожие

skill-creator официальный anthropics Помогает создать новый скилл, доработать существующий и проверить результат через тестовые промпты и оценки. Claude Code Claude.ai 414 180установок improve-codebase-architecture Matt Pocock Скилл ищет архитектурные узкие места в кодовой базе и показывает варианты углубления модулей в HTML-отчёте. Подойдёт для ревью перед рефакторингом. Claude Code 1 163 035установок tdd Matt Pocock Скилл управляет циклом красный-зелёный в TDD: проверяет, что тесты пишутся до кода, держит их на уровне публичных интерфейсов и не завязывает на внутреннюю структуру. Claude Code 1 141 062установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. Claude Code 986 201установок codebase-design Matt Pocock Скилл помогает проектировать модули с небольшим интерфейсом и скрытой внутри сложностью. Подходит для рефакторинга, тестируемости и поиска чистого seam. Claude Code 850 344установок diagnosing-bugs Matt Pocock Скилл ведёт агента через воспроизводимую диагностику сложных багов и регрессий производительности. Нужен, когда код падает, работает неверно или тормозит. Claude Code 834 802установок

Вопросы о generate

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

Добавьте маркетплейс командой /plugin marketplace add alirezarezvani/claude-skills, затем поставьте плагин: /plugin install pw@claude-code-skills. Альтернатива — npx skills add alirezarezvani/claude-skills --skill generate -a claude-code.

Что делает скилл generate?

Генерирует тесты Playwright из пользовательской истории, URL, имени компонента или описания фичи. Перед этим читает конфиг и существующие тесты, чтобы попасть в конвенции проекта.

Что нужно, чтобы скилл заработал?

Установленный Playwright и файл playwright.config.ts с testDir и baseURL. Скилл также запускает сгенерированный тест через npx playwright test, поэтому окружение должно позволять прогон.

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

SKILL.md · MIT
---
name: "generate"
description: >-
  Generate Playwright tests. Use when user says "write tests", "generate tests",
  "add tests for", "test this component", "e2e test", "create test for",
  "test this page", or "test this feature".
---

# Generate Playwright Tests

Generate production-ready Playwright tests from a user story, URL, component name, or feature description.

## Input

`$ARGUMENTS` contains what to test. Examples:
- `"user can log in with email and password"`
- `"the checkout flow"`
- `"src/components/UserProfile.tsx"`
- `"the search page with filters"`

## Steps

### 1. Understand the Target

Parse `$ARGUMENTS` to determine:
- **User story**: Extract the behavior to verify
- **Component path**: Read the component source code
- **Page/URL**: Identify the route and its elements
- **Feature name**: Map to relevant app areas

### 2. Explore the Codebase

Use the `Explore` subagent to gather context:

- Read `playwright.config.ts` for `testDir`, `baseURL`, `projects`
- Check existing tests in `testDir` for patterns, fixtures, and conventions
- If a component path is given, read the component to understand its props, states, and interactions
- Check for existing page objects in `pages/`
- Check for existing fixtures in `fixtures/`
- Check for auth setup (`auth.setup.ts` or `storageState` config)

### 3. Select Templates

Check `templates/` in this plugin for matching patterns:

| If testing... | Load template from |
|---|---|
| Login/auth flow | `../pw/templates/auth/login.md` |
| CRUD operations | `templates/crud/` |
| Checkout/payment | `templates/checkout/` |
| Search/filter UI | `templates/search/` |
| Form submission | `templates/forms/` |
| Dashboard/data | `templates/dashboard/` |
| Settings page | `templates/settings/` |
| Onboarding flow | `templates/onboarding/` |
| API endpoints | `templates/api/` |
| Accessibility | `templates/accessibility/` |

Adapt the template to the specific app — replace `{{placeholders}}` with actual selectors, URLs, and data.

### 4. Generate the Test

Follow these rules:

**Structure:**
```typescript
import { test, expect } from '@playwright/test';
// Import custom fixtures if the project uses them

test.describe('Feature Name', () => {
  // Group related behaviors

  test('should <expected behavior>', async ({ page }) => {
    // Arrange: navigate, set up state
    // Act: perform user action
    // Assert: verify outcome
  });
});
```

**Locator priority** (use the first that works):
1. `getByRole()` — buttons, links, headings, form elements
2. `getByLabel()` — form fields with labels
3. `getByText()` — non-interactive text content
4. `getByPlaceholder()` — inputs with placeholder text
5. `getByTestId()` — when semantic options aren't available

**Assertions** — always web-first:
```typescript
// GOOD — auto-retries
await expect(page.getByRole('heading')).toBeVisible();
await expect(page.getByRole('alert')).toHaveText('Success');

// BAD — no retry
const text = await page.textContent('.msg');
expect(text).toBe('Success');
```

**Never use:**
- `page.waitForTimeout()`
- `page.$(selector)` or `page.$$(selector)`
- Bare CSS selectors unless absolutely necessary
- `page.evaluate()` for things locators can do

**Always include:**
- Descriptive test names that explain the behavior
- Error/edge case tests alongside happy path
- Proper `await` on every Playwright call
- `baseURL`-relative navigation (`page.goto('/')` not `page.goto('http://...')`)

### 5. Match Project Conventions

- If project uses TypeScript → generate `.spec.ts`
- If project uses JavaScript → generate `.spec.js` with `require()` imports
- If project has page objects → use them instead of inline locators
- If project has custom fixtures → import and use them
- If project has a test data directory → create test data files there

### 6. Generate Supporting Files (If Needed)

- **Page object**: If the test touches 5+ unique locators on one page, create a page object
- **Fixture**: If the test needs shared setup (auth, data), create or extend a fixture
- **Test data**: If the test uses structured data, create a JSON file in `test-data/`

### 7. Verify

Run the generated test:

```bash
npx playwright test <generated-file> --reporter=list
```

If it fails:
1. Read the error
2. Fix the test (not the app)
3. Run again
4. If it's an app issue, report it to the user

## Output

- Generated test file(s) with path
- Any supporting files created (page objects, fixtures, data)
- Test run result
- Coverage note: what behaviors are now tested

© Alireza Rezvani · MIT · alirezarezvani/claude-skills

Смотрите также

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

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