Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Pest Laravel Package

nunomaduro/pest

Pest is an elegant PHP testing framework focused on simplicity. Built on top of PHPUnit, it offers a clean, expressive syntax that makes writing tests enjoyable, with readable expectations and a developer-friendly API.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

Short answer: this package does not support a product decision — it supports a procurement and governance decision, and the answer is "decline, adopt the successor." nunomaduro/pest is the archived v0 of the Pest testing framework, explicitly superseded by pestphp/pest. Its value to a PM is not as a dependency but as the concrete artifact that makes a real roadmap conversation cheap to have:

  • Build vs. buy for developer tooling. Every Laravel/PHP team eventually chooses whether to maintain bespoke test harnesses, internal assertion helpers, and hand-rolled PHPUnit conventions, or to adopt an opinionated framework. Pest's pitch — expressive expectations like expect($value)->toBeTrue(), higher-order test syntax, PHPUnit under the hood — is a developer-experience purchase, not a feature purchase. That is a resource allocation decision a PM can frame and defend.
  • Test-authoring velocity as a leading indicator of quality. The cost of writing the first test in a file changes team behavior far more than improving the hundredth. This gives the PM a measurable lever: tests per PR, time-to-first-test, CI feedback duration, defect escape rate. Those are metrics a PM can put in a quarterly plan.
  • Standardization and onboarding economics. One house style for tests (naming, dataset-driven cases, expectations vs. assertions) cuts review friction and shortens ramp-up for new hires. That is a hiring-and-onboarding decision as much as a technical one, and it belongs in the PM's domain.
  • Dependency governance policy. Archived = yes, dependents = 0. This package is the textbook case for a written policy: archived, superseded, or unmaintained packages are blocked at the package-manager level, with a documented successor path. Codifying that once prevents this evaluation from recurring every time someone Googles "Pest."
  • Tech-debt sequencing and exit criteria. If any legacy service still pins nunomaduro/pest, that is a tracked tech-debt item with a defined exit — migrate to pestphp/pest — not an open evaluation. A PM can put a scope and a date on that.

What it does not support: framework selection for production runtime, budget approval for this dependency, a roadmap commitment to build on it, or any customer-facing feature. Test tooling sits in the development/CI toolchain, not in application architecture — so the blast radius of the decision is delivery speed and risk, not product capability.

When to Consider This Package

For new work: never. Do not evaluate, pilot, or vendor this package. Every disqualifying criterion is met:

  • Archived repository. No security patches, no PHP-version compatibility work, no bug fixes. Every future PHP or PHPUnit release is a potential unmendable break.
  • Author-declared obsolescence. The maintainer states a better version exists and points to pestphp/pest. There is no scenario where adopting a deprecated predecessor is the lower-risk choice.
  • Zero dependents. No ecosystem pressure to keep it working, no community fork, no de facto support.
  • Asymmetric migration cost. Starting on the successor is free today; starting here and migrating later is pure waste plus interest.
  • Misleading documentation surface. Public Pest docs and examples describe the successor. New engineers will follow current guidance and hit incompatibilities in a codebase pinned to this package.

Look instead at pestphp/pest — and only consider testing-framework standardization at all — when:

  • You are consolidating tooling across one or more Laravel/PHP services and want a single documented convention.
  • Your bottleneck is test authoring cost rather than test runtime, and PHPUnit setup ceremony is measurably slowing adoption.
  • You want PHPUnit compatibility so existing tests, coverage, parallelization, and IDE integrations keep working — Pest is additive, not a rewrite.
  • You have a platform or DX function that can own upgrades and codify conventions in a shared dev dependency.

The only case for touching this repository at all: a legacy codebase already pinned to it. Even then the correct action is a scoped migration ticket to pestphp/pest — or back to plain PHPUnit if the test surface is small — not continued use. If a service is frozen and cannot take a PHP upgrade, containment (pin the lockfile, change nothing) is acceptable but should be explicitly time-boxed.

How to Pitch It (Stakeholders)

For executives: There is a low-cost, high-leverage DX improvement available across our PHP/Laravel services — modernizing how we write tests — but this specific package is not it. nunomaduro/pest is an archived, explicitly superseded early version with zero dependents and no maintenance path. I recommend we formally decline it and evaluate its actively maintained successor, pestphp/pest. The ask is small: one engineer-week to pilot on a single service, measured against test-authoring time, tests per PR, and defect escape rate. The risk of the archived package is real and unbounded — unpatched breakage on the next PHP upgrade — while the upside is zero.

For engineering leadership: Pest's proposition is an expressive, low-ceremony API layered on top of PHPUnit, so it is additive rather than a rewrite: existing tests keep running, and coverage and parallelization tooling keep working. The decision on the table is whether to invest in test-authoring velocity and a house convention. This package is not eligible — it is archived and explicitly replaced, which means no security patches and no compatibility work for new PHP or PHPUnit releases. If we pursue the successor, we scope it to a one-service pilot with success criteria defined up front, and we add automated policy blocking archived dependencies so this evaluation doesn't recur.

For the pilot team: Treat nunomaduro/pest as a dead end and pestphp/pest as the candidate. Confirm current PHP and Laravel version support, confirm PHPUnit compatibility against our existing suite, inventory any service still pinned to the old package, and migrate CI configuration and developer documentation in a branch with old and new suites running in parallel until results match. Expect Composer abandonment warnings and possible resolution conflicts; treat forced downgrades in unrelated packages as a blocker, not a workaround. Remove the archived dependency only after verifying no transitive references remain.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route