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

pest-testing — скилл для Claude Code: что делает и как установить

Скилл настраивает работу с тестовым фреймворком Pest 4 в PHP. Он помогает писать юнит-, фиче-, браузерные и архитектурные тесты по правилам экосистемы.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add spatie/freek.dev --skill pest-testing -a claude-code
Открыть на GitHub

Что делает pest-testing

Инструкции задают стандарты написания тестов для приложений на Laravel и Pest 4. Все новые тесты создаются через php artisan make:test --pest {name} и раскладываются по каталогам tests/Unit, tests/Feature или tests/Browser/. Скилл запрещает удалять существующие тесты без согласования, потому что считает их частью кода приложения.

В проверках ответов скилл требует заменять assertStatus(200) на assertSuccessful(), а для кодов 404 и 403 — вызывать assertNotFound() и assertForbidden(). Перед моками обязательно импортируется use function Pest\Laravel\mock;, иначе тест упадёт с ошибкой. Для повторяющихся проверок валидации задаются датасеты через ->with([...]).

В Pest 4 поддерживаются браузерные тесты в реальном браузере с проверкой отсутствия консольных ошибок через assertNoJavascriptErrors(). Также доступны смоук-тесты списков страниц, скриншотные тесты регрессии, шардинг для параллельного запуска в CI и архитектурные правила через arch().

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

  • написать юнит- и фиче-тесты для Laravel на Pest 4
  • настроить браузерные тесты с проверкой ошибок JavaScript
  • задать архитектурные правила для контроллеров через arch()
  • проверить ответы API через assertSuccessful() вместо статус-кодов

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

  • Напиши тест на Pest для проверки сброса пароля пользователя
  • Добавь архитектурный тест для контроллеров в tests/Feature
  • Создай смоук-тест на Pest 4 для проверки отсутствия ошибок консоли на главных страницах

Как установить pest-testing

1Через Skills CLI (Vercel)

npx skills add spatie/freek.dev --skill pest-testing -a claude-code

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

~/.claude/skills/pest-testing/SKILL.md

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

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

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

Похожие

laravel-tdd iSerter Скилл ведёт агента по циклу red-green-refactor в Laravel: сначала падающий тест на Pest, потом минимальный код, потом рефакторинг. CX Codex +1 378установок laravel-specialist https://github.com/Jeffallan Настраивает агента на разработку бэкенда на Laravel 10+ и PHP 8.2+. Помогает писать модели Eloquent, очереди Horizon, API resources и тесты Pest. CX Codex +1 23 300установок php-pro https://github.com/Jeffallan Задаёт правила разработки на PHP 8.3+ для Laravel и Symfony: включает strict_types, анализ в PHPStan на уровне 9 и тесты PHPUnit или Pest. CX Codex +1 15 500установок filament-pro marcelorodrigo Скилл для сборки админ-панелей Laravel на Filament v5: ресурсы, формы, таблицы, виджеты и тесты на Livewire v4. CX Codex +1 1 200установок laravel-11-12-app-guidelines thienanblog Скилл задаёт правила работы с проектами на Laravel 11 и 12. Он заставляет агента проверять реальное окружение перед внесением правок, а не угадывать дефолты чистой установки. CX Codex +1 976установок laravel-verification affaan-m Прогоняет проект на Laravel по фазам: окружение, линт, статический анализ, тесты с покрытием, аудит зависимостей и готовность к деплою. Пригодится перед PR и релизом. CX Codex +1 4 700установок

Рядом в теме «Тесты и QA»

Всё по теме «Тесты и QA» →

Вопросы о pest-testing

Как установить pest-testing в Claude Code?

Выполните команду npx skills add spatie/freek.dev --skill pest-testing -a claude-code в терминале.

Что делает скилл pest-testing?

Он даёт агенту правила и шаблоны для написания тестов на Pest 4 в PHP-проектах. Скилл охватывает юнит-, фиче-, браузерные и архитектурные проверки.

Какие правила по ассертам задаёт скилл?

Вместо числового вызова assertStatus(200) скилл требует писать assertSuccessful(). Для кодов 404 и 403 используются методы assertNotFound() и assertForbidden().

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

SKILL.md · MIT
---
name: pest-testing
description: >-
  Tests applications using the Pest 4 PHP framework. Activates when writing tests, creating unit or feature
  tests, adding assertions, testing Livewire components, browser testing, debugging test failures,
  working with datasets or mocking; or when the user mentions test, spec, TDD, expects, assertion,
  coverage, or needs to verify functionality works.
---

# Pest Testing 4

## When to Apply

Activate this skill when:

- Creating new tests (unit, feature, or browser)
- Modifying existing tests
- Debugging test failures
- Working with browser testing or smoke testing
- Writing architecture tests or visual regression tests

## Documentation

Use `search-docs` for detailed Pest 4 patterns and documentation.

## Basic Usage

### Creating Tests

All tests must be written using Pest. Use `php artisan make:test --pest {name}`.

### Test Organization

- Unit/Feature tests: `tests/Feature` and `tests/Unit` directories.
- Browser tests: `tests/Browser/` directory.
- Do NOT remove tests without approval - these are core application code.

### Basic Test Structure

<code-snippet name="Basic Pest Test Example" lang="php">

it('is true', function () {
    expect(true)->toBeTrue();
});

</code-snippet>

### Running Tests

- Run minimal tests with filter before finalizing: `php artisan test --compact --filter=testName`.
- Run all tests: `php artisan test --compact`.
- Run file: `php artisan test --compact tests/Feature/ExampleTest.php`.

## Assertions

Use specific assertions (`assertSuccessful()`, `assertNotFound()`) instead of `assertStatus()`:

<code-snippet name="Pest Response Assertion" lang="php">

it('returns all', function () {
    $this->postJson('/api/docs', [])->assertSuccessful();
});

</code-snippet>

| Use | Instead of |
|-----|------------|
| `assertSuccessful()` | `assertStatus(200)` |
| `assertNotFound()` | `assertStatus(404)` |
| `assertForbidden()` | `assertStatus(403)` |

## Mocking

Import mock function before use: `use function Pest\Laravel\mock;`

## Datasets

Use datasets for repetitive tests (validation rules, etc.):

<code-snippet name="Pest Dataset Example" lang="php">

it('has emails', function (string $email) {
    expect($email)->not->toBeEmpty();
})->with([
    'james' => '[email protected]',
    'taylor' => '[email protected]',
]);

</code-snippet>

## Pest 4 Features

| Feature | Purpose |
|---------|---------|
| Browser Testing | Full integration tests in real browsers |
| Smoke Testing | Validate multiple pages quickly |
| Visual Regression | Compare screenshots for visual changes |
| Test Sharding | Parallel CI runs |
| Architecture Testing | Enforce code conventions |

### Browser Test Example

Browser tests run in real browsers for full integration testing:

- Browser tests live in `tests/Browser/`.
- Use Laravel features like `Event::fake()`, `assertAuthenticated()`, and model factories.
- Use `RefreshDatabase` for clean state per test.
- Interact with page: click, type, scroll, select, submit, drag-and-drop, touch gestures.
- Test on multiple browsers (Chrome, Firefox, Safari) if requested.
- Test on different devices/viewports (iPhone 14 Pro, tablets) if requested.
- Switch color schemes (light/dark mode) when appropriate.
- Take screenshots or pause tests for debugging.

<code-snippet name="Pest Browser Test Example" lang="php">

it('may reset the password', function () {
    Notification::fake();

    $this->actingAs(User::factory()->create());

    $page = visit('/sign-in');

    $page->assertSee('Sign In')
        ->assertNoJavascriptErrors()
        ->click('Forgot Password?')
        ->fill('email', '[email protected]')
        ->click('Send Reset Link')
        ->assertSee('We have emailed your password reset link!');

    Notification::assertSent(ResetPassword::class);
});

</code-snippet>

### Smoke Testing

Quickly validate multiple pages have no JavaScript errors:

<code-snippet name="Pest Smoke Testing Example" lang="php">

$pages = visit(['/', '/about', '/contact']);

$pages->assertNoJavascriptErrors()->assertNoConsoleLogs();

</code-snippet>

### Visual Regression Testing

Capture and compare screenshots to detect visual changes.

### Test Sharding

Split tests across parallel processes for faster CI runs.

### Architecture Testing

Pest 4 includes architecture testing (from Pest 3):

<code-snippet name="Architecture Test Example" lang="php">

arch('controllers')
    ->expect('App\Http\Controllers')
    ->toExtendNothing()
    ->toHaveSuffix('Controller');

</code-snippet>

## Common Pitfalls

- Not importing `use function Pest\Laravel\mock;` before using mock
- Using `assertStatus(200)` instead of `assertSuccessful()`
- Forgetting datasets for repetitive validation tests
- Deleting tests without approval
- Forgetting `assertNoJavascriptErrors()` in browser tests

© spatie · MIT · spatie/freek.dev

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

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

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