cruciblephp/crucible
Crucible is a PHP package that provides a clean, extensible foundation for building robust applications. It pairs sensible defaults with flexible configuration and a developer-friendly API, helping teams ship maintainable features faster.
describe(), beforeAll/afterAll handling, global afterEach ordering from Pest.php, and ->in(__DIR__) directory selection. This directly supports decisions about whether to standardize on Pest-compatible tooling or migrate suites with lower risk — parity gaps in hook scoping and directory targeting are exactly the failure modes that produce false confidence during a migration.->in(__DIR__) matching nothing and dropping classes, traits, groups, and hooks without error).compat-check results, mutation scores, coverage reliability, and PHPStan/Pest friction to prioritize test-debt work, CI stabilization, and framework-upgrade readiness. The v1.1.7 fixes convert several previously silent misconfigurations into either correct behavior or explicit collection-time refusal, which makes audit findings actionable.Pest.php suite configuration and describe() hook semantics, CI coverage hardening, mutation-score tracking, architecture-rule adoption, and pre-migration compatibility checks in monorepos or multi-package Laravel estates.Consider adoption when:
pestphp/pest-plugin-laravel.describe() blocks, scoped beforeEach/afterEach, beforeAll/afterAll, or Pest.php global hooks — v1.1.7 aligns these with Pest's ordering and scoping rules and rejects unsupported beforeAll/afterAll inside describe() at collection time rather than running them incorrectly.Pest.php uses ->in(...) path targeting for per-directory classes, traits, groups, or hooks; the prior silent-drop behavior is a real configuration hazard worth verifying.$this->user assigned in beforeEach.toThrow() behavior, stale verdicts on resumed mutation runs, and mis-scoped or silently dropped hooks.Look elsewhere when:
Executive summary: This is an engineering-enablement package that reduces risk and cost in Laravel/PHP test modernization. v1.1.7 closes behavioral gaps with Pest in suite composition and hook execution — areas where mistakes cause tests to run in the wrong scope or not at all, without any error. Combined with the v1.1.5 reliability work on mutation testing, coverage, and PHPStan, this improves release confidence and lowers CI/test-infrastructure waste. It is not customer-facing.
Engineering summary: v1.1.7 is a Pest-parity correctness release with no breaking changes called out. It fixes beforeEach/afterEach inside describe() running for every test in the file (now scoped to its block and nested blocks, in declaration order with file hooks); rejects beforeAll/afterAll inside describe() at collection with Pest's message and runs nothing from that file; orders a global afterEach from Pest.php before the file's own hooks; and fixes ->in(__DIR__) matching nothing, which had been silently dropping classes, traits, groups, and hooks. Teams with Pest.php path targeting should audit those blocks, since the previous behavior failed silently. Re-run coverage and mutation baselines after upgrade.
Recommended ask: Pilot in one Laravel repository and one CI lane. Track compat-check pass rate, mutation-score trend, coverage stability, PHPStan noise, and verified Pest.php suite selection. Use a two-sprint decision gate before broader adoption.
How can I help you explore Laravel packages today?