# api-testing

Скилл для автотестов REST и GraphQL: проверяет формат ответов, коды статусов, заголовки, авторизацию и время отклика. Пригодится, когда фронтенд ломается от незаметного изменения схемы.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1300 установок · ★ 211
- Автор: kindlmann
- Лицензия: MIT · policy=mirror · лицензия открытая, файл — в исходнике
- Исходник: https://github.com/petrkindlmann/qa-skills/tree/HEAD/skills/api-testing/SKILL.md
- Обновлён: 2026-10-22
- HTML: https://affpapa.org/nevibecode/skills/api-testing

## Что делает

Скилл описывает, как писать тесты API против реального тестового окружения, а не мока. Внутри — работа с `APIRequestContext` в Playwright, Supertest для Node и httpx для Python, плюс разбор инструментов для ручного исследования API: Bruno, Hurl, Hoppscotch. Отдельная таблица подсказывает, что брать под конкретную задачу.

Главная идея — контракт вместо точечных проверок. Вместо `toHaveProperty` по отдельным полям ответ валидируется схемой: Zod 4 или AJV с JSON Schema. Если схему импортируют и API, и тесты, любое изменение формы ответа роняет сборку сразу. При этом в Zod 4 советует использовать нативные форматы вроде `z.email()` и `z.uuid()` — цепочки `z.string().email()` объявлены устаревшими и готовятся к удалению. Если библиотеки схем нет, а новые зависимости ставить нельзя, скилл предлагает проверять набор ключей и типы вручную одним общим хелпером.

Покрытие строится так: на каждый эндпоинт happy-path и хотя бы один тест на ошибку. Есть готовые схемы для CRUD-цикла, авторизации, ответов 400/422/429, заголовков, пагинации, загрузки файлов, GraphQL и вебхуков. Авторизацию скилл считает частью тестов: очищенная клиентская кука ещё не доказывает, что сервер отозвал сессию. Для проверки контрактов между сервисами через Pact или брокер это не подходит — там нужен скилл contract-testing.

## Требования
- Работает с: Playwright, Postman

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add petrkindlmann/qa-skills --skill api-testing -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/api-testing/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/api-testing/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add petrkindlmann/qa-skills --skill api-testing -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/api-testing/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add petrkindlmann/qa-skills --skill api-testing -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/api-testing/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install petrkindlmann/qa-skills api-testing
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/api-testing/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add petrkindlmann/qa-skills --skill api-testing -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/petrkindlmann/qa-skills --path skills/api-testing
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/api-testing/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add petrkindlmann/qa-skills --skill api-testing -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/petrkindlmann/qa-skills/tree/HEAD/skills/api-testing/SKILL.md

## Когда брать
- поймать изменение схемы ответа до того, как на нём упадёт фронтенд
- написать CRUD-тест, который проносит id ресурса через все шаги
- проверить коды 400, 422 и 429 вместе с заголовком `retry-after`
- залогиниться один раз в фикстуре и отдать тестам готовый контекст
- сравнить introspection-схему GraphQL и заметить пропавшее поле

## Примеры запросов агенту
- напиши тесты для эндпоинта создания заказа: happy path и ответ 422 с деталями по полям
- проверь схему ответа `/api/users` через Zod, схему вынеси в общий файл
- добавь тест на пагинацию: первая страница, пустая страница за границей, неверный размер

## Похожие
- [conducting-api-security-testing](https://affpapa.org/nevibecode/skills/conducting-api-security-testing.md) — скилл · 643 установки
- [api-testing-patterns](https://affpapa.org/nevibecode/skills/api-testing-patterns.md) — скилл · 605 установок
- [api-and-interface-design](https://affpapa.org/nevibecode/skills/api-and-interface-design.md) — скилл · 62600 установок
- [clerk-testing](https://affpapa.org/nevibecode/skills/clerk-testing.md) — скилл · 46300 установок
- [api-design-principles](https://affpapa.org/nevibecode/skills/api-design-principles.md) — скилл · 30348 установок
- [api-integration-surface-strategy](https://affpapa.org/nevibecode/skills/api-integration-surface-strategy.md) — скилл · 8000 установок

## Другие версии с тем же именем
- [api-testing · secondsky](https://affpapa.org/nevibecode/skills/secondsky-api-testing.md) — 890 установок

Из того же набора: [petrkindlmann/qa-skills](https://affpapa.org/nevibecode/by/petrkindlmann/qa-skills.md) — 49 карточек

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
