Use when
- Driving a feature with RED-GREEN-REFACTOR in a project that runs Pest v4 (PHP 8.3+).
- Writing
it()andexpect()tests that need the Symfony kernel or an HTTP client. - Converting existing PHPUnit class tests to Pest syntax with
pest-plugin-drift. - Adding a bug-reproducing test to a Pest suite before the fix.
Default workflow
- Confirm PHP 8.3+ and Pest v4, then generate
tests/Pest.phpwith./vendor/bin/pest --init. - Bind the bridge classes in
tests/Pest.php:uses(KernelTestCase::class, Factories::class, ResetDatabase::class)->in('Integration')anduses(WebTestCase::class, ...)->in('Functional'). - RED: write an
it()test with Foundry v2 factories, run./vendor/bin/pest --filterand check it fails for the right reason. - GREEN: write the minimal code, then REFACTOR and re-run
./vendor/bin/pest. - Gate the suite with
--paralleland--coverage --min=80.
Guardrails
- There is no official Symfony Pest plugin: never reference
pestphp/pest-plugin-symfony, bindKernelTestCaseorWebTestCasethroughuses(). - Foundry v2 factories return real objects: no
->object()call. - Pest test files are anonymous, so use the
FactoriesandResetDatabasetraits rather than the#[ResetDatabase]attribute. - Chain related checks with
expect()->and(); keep one concept per test.
Progressive disclosure
- Use this file for execution posture and risk controls.
- Open references when deep implementation details are needed.
Output contract
- The failing
./vendor/bin/pestoutput (RED), then the passing run. tests/Pest.phpbindings added or changed.- Test files changed and the commands executed.
References
reference.md