PE

pest-testing

This skill manages the creation and execution of unit, feature, and browser tests using Pest 4.

Install

mkdir -p .claude/skills/pest-testing && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/5619" && unzip -o skill.zip -d .claude/skills/pest-testing && rm skill.zip

Installs to .claude/skills/pest-testing

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

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.
349 chars · catalog description✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Create unit, feature, and browser tests
  • Debug test failures with specific assertions
  • Implement datasets for repetitive validation
  • Perform architecture and visual regression testing
  • Execute test sharding for parallel CI runs

How it works

The skill provides commands to generate and execute Pest 4 tests, utilizing specific assertions and datasets to verify application logic and browser interactions.

Inputs & outputs

You give it
php artisan make:test --pest {name}
You get back
A functional test file in the tests directory

When to use pest-testing

  • Write a new feature test for a Laravel controller
  • Debug a failing unit test
  • Run a subset of tests using filters
  • Verify Livewire component functionality

About this skill

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

<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

FeaturePurpose
Browser TestingFull integration tests in real browsers
Smoke TestingValidate multiple pages quickly
Visual RegressionCompare screenshots for visual changes
Test ShardingParallel CI runs
Architecture TestingEnforce 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

When not to use it

  • Removing existing tests without approval

Prerequisites

Pest 4 framework

Limitations

  • Requires manual import of mock functions
  • Browser tests require specific directory placement

How it compares

Unlike manual testing, this skill automates test execution and validation using standardized Pest 4 patterns and architecture checks.

Compared to similar skills

pest-testing side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
pest-testing (this skill)36moNo flagsIntermediate
woocommerce-backend-dev72moNo flagsIntermediate
woocommerce-dev-cycle52moNo flagsIntermediate
pr05moReviewBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry