testo/facade
Testo Facade is a static facade plugin for the Testo PHP testing suite that provides convenient static access to the suite's DI container through the global Testo class. It stores the container when the suite is configured, letting you resolve dependencies anywhere in your tests without passing the...
testo/facade solves a ~20-line problem (a global static holder for the suite's DI container). The real decision isn't "should we adopt this plugin" but "is the container-access convenience worth any dependency at all," given we could vendor an equivalent helper in an afternoon. Treat the package as a signal of what the Testo ecosystem considers table-stakes DevEx, not as a capability we couldn't otherwise obtain.Testo::get(Service::class)-style access in tests. That's a policy decision as much as a technical one — do we want service-location in tests, or explicit fixture injection? Whichever we pick becomes a style-guide and code-review rule that outlives the package.Adopt (or, more honestly, trial) when all of the following hold:
Look elsewhere — or write the ten-line helper ourselves — when:
Note the metadata honestly in any adoption record: read-only mirror, auto-synced from php-testo/testo, maturity limited to README + CHANGELOG, no dependents. That's "experimental," not "approved dependency."
To executives: This is a small developer-productivity plugin for a testing framework we're evaluating. Cost is negligible and the code is trivial to replace, so the financial exposure is effectively zero. The real risk is strategic, not financial: it only pays off if we commit to Testo, and Testo is a young, single-maintainer project with no ecosystem traction (0 stars, 0 dependents on this package). Recommendation: treat it as a spike, not a standard. Approve a timeboxed evaluation, not an adoption.
To engineering: testo/facade gives tests a global Testo class that exposes the suite's DI container, removing per-test container plumbing in integration-style tests. Two caveats to design around before we rely on it: (1) it's a read-only mirror of plugin/facade/ in the main monorepo — file issues and PRs upstream, and expect versions to move with the monorepo, not independently; (2) it's global static state, so confirm the container is reset between tests and that parallel runs stay isolated. If either caveat is unacceptable, a small internal trait gives us the same ergonomics with no third-party surface.
How can I help you explore Laravel packages today?