<< All versions

Skill v1.0.0

currentAutomated scan100/100
trongio/zomboid_server_manager_docker/pest-testing
──Details
PublishedOctober 22, 2026 at 03:21 AM
Content Hashsha256:74a40afc01c350ae...
Git SHA31453375aa66
──Files
Files (1 file, 3.0 KB)
SKILL.md3.0 KBactive
SKILL.md · 118 lines · 3.0 KB

version: "1.0.0" name: pest-testing description: "Tests applications using the Pest 3 PHP framework. Activates when writing tests, creating unit or feature tests, adding assertions, testing Livewire components, architecture 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." license: MIT metadata: author: laravel


Pest Testing 3

When to Apply

Activate this skill when:

  • Creating new tests (unit or feature)
  • Modifying existing tests
  • Debugging test failures
  • Working with datasets, mocking, or test organization
  • Writing architecture tests

Documentation

Use search-docs for detailed Pest 3 patterns and documentation.

Basic Usage

Creating Tests

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

Test Organization

  • Tests live in the tests/Feature and tests/Unit directories.
  • Do NOT remove tests without approval - these are core application code.
  • Test happy paths, failure paths, and edge cases.

Basic Test Structure

<!-- Basic Pest Test Example -->

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

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():

<!-- Pest Response Assertion -->

php
it('returns all', function () {
$this->postJson('/api/docs', [])->assertSuccessful();
});
UseInstead 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.):

<!-- Pest Dataset Example -->

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

Pest 3 Features

Architecture Testing

Pest 3 includes architecture testing to enforce code conventions:

<!-- Architecture Test Example -->

php
arch('controllers')
->expect('App\Http\Controllers')
->toExtendNothing()
->toHaveSuffix('Controller');
arch('models')
->expect('App\Models')
->toExtend('Illuminate\Database\Eloquent\Model');
arch('no debugging')
->expect(['dd', 'dump', 'ray'])
->not->toBeUsed();

Type Coverage

Pest 3 provides improved type coverage analysis. Run with --type-coverage flag.

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
All versions