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

Praspel Extension Laravel Package

atoum/praspel-extension

Atoum extension that brings Praspel design-by-contract support to PHP test suites, letting you declare and verify preconditions, postconditions, and invariants alongside atoum assertions. Use annotations to specify expected behavior and catch contract violations early.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for contract/property-based testing in PHP. This package is the "borrow from the community" option for design-by-contract testing — and it is effectively off the table. The decision it forces is whether we build lightweight contract and generative assertions on top of tooling we already own (PHPUnit/Pest), or deprioritize the capability entirely.
  • Roadmap signal for test-quality investment. Praspel's @requires / @ensures / @invariant annotations plus generated test data represent a QuickCheck-style capability that the PHP ecosystem attempted and abandoned around 2017. Useful evidence when arguing that generative testing in PHP is a niche, under-supplied need — an opportunity framing, not an adoption framing.
  • Feature scope: contract annotations on domain models. As prior art for what a contract surface looks like in PHPDoc, it informs a possible internal spec layer for high-value domain objects (money, pricing rules, state machines) where invariants are worth expressing explicitly.
  • Use-case triage for legacy hardening. Retrofitting behavior specs onto untested legacy services is exactly where contracts pay off; this package documents the intended workflow even though its implementation isn't viable.
  • Extensibility pattern evaluation. It demonstrates a test-runner plugin model (atoum's extension API hosting an external spec language) — relevant if we extend our own harness to accept a declarative spec format.
  • Vendor-risk checklist calibration. Four stars, zero dependents, archived, last release February 2017 is a textbook dead-end profile; the decision it supports is procedural — codifying this profile as a hard-reject gate in technology evaluations.

When to Consider This Package

  • Read-only reference. Consider it only when studying how Praspel's annotation grammar and data generation were bound into a test runner — e.g., while designing a PHPUnit/Pest plugin for contracts. Read the source; do not require it.
  • Never as a production dependency. Archived, unreleased since 2017, PHP 7-era constraints that will collide with modern runtimes, no dependents, and no one to answer issues or ship a security patch. Adopting it is a maintenance liability with a predetermined expiry date.
  • Look elsewhere for generative/property-based testing: PHPUnit with giorgiosironi/eris, Pest datasets for table-driven property checks, Infection for mutation coverage as a complementary confidence signal.
  • Look elsewhere for contracts: Psalm or PHPStan assertion annotations for static contract checking in CI; PhpSpec/Behat-style spec tools for example-driven behavior specs.
  • Hard rejects: any requirement for PHP 8+, security review, framework integration, or a supported upgrade path. All four disqualify it immediately.

How to Pitch It (Stakeholders)

  • Executives (one paragraph): This is not an adoption candidate — it's a data point. A promising idea, automated contract-based testing for PHP, was attempted by the community and abandoned in 2017 with no dependents and no releases since. The "buy/borrow" path is closed. If we want this capability, it is a small, contained build on top of test tooling we already maintain, not a new vendor relationship.
  • Engineering: Treat it as prior art. Skim the annotation grammar and the data-generation approach before designing internal spec helpers; expect PHP 8 incompatibility and do not port dependency-era code. The transferable idea is "state the invariant once, generate the cases" — the implementation is not transferable.
  • Recommendation: No-go on the dependency. Conditional go on a one-to-two sprint spike to add lightweight generative and contract-style assertions to our existing PHPUnit/Pest suite, scoped to a small number of high-value domain objects, with an explicit sunset criterion if adoption stalls after the first quarter.
  • Process note: The 4-star/0-dependent/archived profile is the canonical signal of an ecosystem dead end. Add it as a standing checklist item in future build-vs-buy evaluations so this analysis doesn't have to be redone.
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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource