# snapshot-testing

Скилл учит агента писать снапшот-тесты на Verify: вывод сравнивается с эталонным файлом, который вы утвердили вручную.

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

## Что делает

Скилл описывает работу с библиотекой Verify в .NET-проектах. Первый прогон теста создаёт файл `.received.`, вы смотрите его и утверждаете — появляется `.verified.`. Дальше тест сравнивает вывод с этим эталоном и падает, если что-то изменилось. Так ловятся случайные правки, а намеренные проходят через явное подтверждение.

Внутри — готовые примеры под разные случаи: проверка отрендеренных HTML-писем, утверждение публичного API сборки для контроля ломающих изменений, тесты HTTP-ответов вместе со статусом и заголовками, валидация сериализации. Есть раздел про очистку динамических значений: `Guid` и `DateTime` меняются каждый прогон, поэтому их заменяют плейсхолдерами через `ScrubMember` или глобально в `VerifierSettings`. Отдельно разобрана раскладка файлов и настройка `.gitignore` с `.gitattributes`.

Понадобится пакет под ваш тест-фреймворк: `Verify.Xunit`, `Verify.NUnit` или `Verify.MSTest`. Для утверждения API можно взять `PublicApiGenerator`. В CI скилл советует выключать запуск diff-инструмента, иначе сборка повиснет на ожидании окна — проверка идёт по переменной окружения `CI`.

## Установка

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

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

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

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add Aaronontheweb/dotnet-skills --skill snapshot-testing -a codex
```

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

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add Aaronontheweb/dotnet-skills --skill snapshot-testing -a cursor
```

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

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install Aaronontheweb/dotnet-skills snapshot-testing
```

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

### Gemini CLI

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

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

### Windsurf (Devin Desktop)

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

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add Aaronontheweb/dotnet-skills --skill snapshot-testing -a opencode
```

### Claude.ai

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

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

## Когда брать
- утвердить публичный API сборки и заметить ломающее изменение
- поймать регрессию в вёрстке HTML-письма после правки шаблона
- сравнить тело и заголовки HTTP-ответа с эталоном
- проверить вывод сериализации сложного объекта
- убрать из снапшотов меняющиеся GUID и даты

## Примеры запросов агенту
- напиши снапшот-тест на Verify для этого DTO
- добавь тест, который утверждает публичный API сборки
- проверь отрендеренное письмо через Verify с расширением html

## Похожие
- [testing](https://affpapa.org/nevibecode/skills/codewithmukesh-testing.md) — скилл · 2800 установок
- [csharp-testing](https://affpapa.org/nevibecode/skills/csharp-testing.md) — скилл · 4500 установок
- [build-fix](https://affpapa.org/nevibecode/skills/build-fix.md) — скилл · 2800 установок
- [testability-obstacle](https://affpapa.org/nevibecode/skills/testability-obstacle.md) — скилл · 2500 установок
- [microsoft-extensions-dependency-injection](https://affpapa.org/nevibecode/skills/microsoft-extensions-dependency-injection.md) — скилл · 549 установок
- [detect-static-dependencies](https://affpapa.org/nevibecode/skills/detect-static-dependencies.md) — скилл · 3400 установок

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

_Часть страницы не вошла по размеру — она есть в HTML-версии._

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