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

Testbench Core Laravel Package

graham-campbell/testbench-core

Laravel TestBench Core by Graham Campbell provides reusable testing functionality for Laravel packages and applications, supporting PHPUnit 9-12 and Laravel 8-13 on PHP 7.4-8.5.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for test scaffolding. The package is a deliberately small set of PHPUnit traits and helpers for Laravel package authors — facade assertions, service-provider bootstrapping, Mockery integration, and a couple of assertion helpers (e.g. assertArraySubset). There is no service provider to register and no configuration file, so the decision it informs is narrow and concrete: do we hand-roll and maintain base TestCase classes and mocking helpers for our Laravel packages, or take a dev dependency? Adoption cost is effectively a line in composer.json; the decision is cheap to trial and cheap to reverse.
  • Compatibility and upgrade-window planning. The changelog doubles as a compatibility ledger: v4.3 covers PHP 7.4–8.5, PHPUnit 9–12, and Laravel 8–13, with PHPUnit 13 explicitly unsupported and PHPUnit 12 recommended. That is a hard planning constraint — our Laravel major upgrade, our PHPUnit pin, and this dev dependency move as one unit. Useful as a recurring canary question in upgrade planning: is our test stack ready for the next Laravel major, and what's blocking it?
  • Standardization across a package portfolio. Because it supplies facade/service-provider/Mockery plumbing, the value is consistency rather than velocity: "every publishable package in the monorepo uses the same base traits." That reduces review friction, drift between bespoke TestCase implementations, and ramp-up time for engineers rotating onto package work. Frame the benefit as reduced maintenance surface, not more tests.
  • Roadmap triage: how much of our work is package-shaped? The value concentrates in codebases where service providers and facades are the public surface — published packages, SDK-style internal libraries, shared domain packages, multi-tenant plugins. If the roadmap is a single monolith with conventional feature tests, this delivers little, and the correct product decision is "skip." Answering "how much of our roadmap is distributable, provider-registered code?" is a prerequisite, and it's a useful question on its own.
  • Risk and exit assessment for a dev-only dependency. MIT license, a long release history (v1.0 through v4.3), a documented security policy, and an optional Tidelift commercial support channel. It is a test-time dependency only — it never ships to production — so the blast radius of abandonment is limited to test breakage, not runtime incidents. That asymmetry is what makes "adopt and move on" a defensible call without a formal vendor review.
  • Portfolio-level buy signal, not a feature enabler. Nothing here unlocks a user-facing capability or changes what we ship. Treat it as internal developer-experience infrastructure: it should appear in an engineering-health or tech-debt line item, not a product roadmap item.

When to Consider This Package

Consider adoption when most of the following hold:

  • You maintain one or more Laravel packages or package-shaped internal modules whose public surface is a service provider, facade, or config-driven extension point.
  • You are on a supported matrix cell: Laravel 8–13, PHP 7.4–8.5, PHPUnit 9–12. Verify your exact combination against the README tables before committing; the support windows are versioned and not open-ended.
  • Your suite is PHPUnit-based. The helpers are PHPUnit traits; a Pest-first shop gains little and should evaluate Pest plugins instead.
  • You are currently duplicating base test-case boilerplate across packages, or reviewers are repeatedly flagging inconsistent mocking patterns.
  • You want zero onboarding cost — no config, no provider registration, no runtime footprint.

Look elsewhere when:

  • The codebase is a single application monolith with ordinary feature tests and no provider/facade publishing surface. Laravel's own test scaffolding is sufficient; this adds a dependency for no gain.
  • You need broader package-testing capability — HTTP assertions, package discovery, database and fixture orchestration, workbench-style app bootstrapping. That is the larger TestBench/orchestra ecosystem, not this core layer.
  • You require PHPUnit 13 support now, or a Laravel/PHP combination outside the published matrix.
  • You already have working in-house base test classes with no maintenance pain. Rewriting stable scaffolding to adopt a thin dependency is negative value.
  • Supply-chain diligence flags it. The package shows zero listed dependents, which is worth verifying rather than assuming: check whether the maintainer's own published packages pull it in transitively. Single-maintainer risk is real, though mitigated by MIT licensing, a full changelog, and the fact that the code is small enough to vendor if it is ever abandoned.

How to Pitch It (Stakeholders)

For executives (one paragraph). This is a small, free, MIT-licensed testing utility that makes our Laravel packages cheaper to maintain and safer to upgrade. It does not change what we ship to customers; it reduces the bespoke test plumbing our engineers write and re-write, and it gives us a clear early signal when a Laravel or PHPUnit upgrade will break our package suite. Cost is a single line in a development dependency file, there is no production footprint, and — because the code is small, openly licensed, and backed by an optional commercial support subscription — the downside if the maintainer walks away is limited to test breakage, not customer-facing risk. Recommendation: adopt in package work, run it for one upgrade cycle, and re-evaluate.

For engineering leads. You get tested facade, service-provider, and Mockery traits instead of hand-rolled base classes; no configuration and no service provider to register. Constraint to plan around: the supported matrix is Laravel 8–13 / PHP 7.4–8.5 / PHPUnit 9–12, with PHPUnit 13 deliberately unsupported and PHPUnit 12 recommended — so treat this pin as part of any framework upgrade ticket. Standardize on it across the package monorepo so reviewers see one testing idiom, and note the adoption criterion is package-shaped code, not test count. Two caveats to check before rollout: confirm your PHP/Laravel/PHPUnit combination against the README table, and confirm transitive usage inside the maintainer's ecosystem, since the package's own dependent count is not a reliable adoption signal.

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.
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
noith/settings
kda/laravel-package