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

Pact Messenger Bundle Laravel Package

tienvx/pact-messenger-bundle

Symfony bundle that brings Pact consumer-driven contract testing to Symfony Messenger. Verify message-based interactions between services by recording and replaying message expectations in your test suite, helping catch breaking changes early.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy (test tooling): v1.0.0 is the first stable cut of a Pact consumer contract-testing bundle for Symfony Messenger. If your PHP services communicate over async messaging (queues, transports, envelopes) and you are evaluating contract testing against broker/consumer teams, this is a candidate to trial rather than build in-house.
  • Roadmap: async integration risk reduction. The headline functional change — filtering envelopes by transport (EnvelopeCollector + SendMessageToTransportsEventListener) — is exactly the capability you need to assert "this handler dispatched this message to this transport" in isolation. That maps to a product decision about whether messaging contracts are covered by automated verification or left to manual QA/staging.
  • Scope reality check: This is a Symfony bundle, not a Laravel package. It hooks into Symfony Messenger's event dispatcher and envelope/stamp model. A PM on a Laravel codebase should treat this as a reference implementation / pattern, not a drop-in dependency — Laravel's queue and event system do not share these extension points.
  • Feature gating: The release notes show the author still carrying an open "Add todo" in the docs plus test-coverage PRs landing at the same time as the 1.0.0 tag. Treat feature parity and documented support as unproven; don't commit roadmap items that depend on behavior only described in a README example.
  • Use cases this unlocks: consumer-side contract verification in CI for message-driven services; catching producer schema drift before it hits a shared staging broker; giving QA a repeatable assertion on transport routing rather than eyeballing logs.

When to Consider This Package

Consider it when all of the following hold:

  • The service is Symfony-based and uses symfony/messenger for async communication.
  • You have a producing counterparty willing to publish Pact contracts (or you are the consumer of a broker contract).
  • You need transport-level assertions (which transport a message was dispatched to), not just payload shape.
  • You can absorb the risk of a v1.0.0, single-maintainer, pre-adoption package — first contributor, tests still being filled in, docs still carrying a TODO.

Look elsewhere (or do not adopt) when:

  • You are on Laravel. The Messenger-specific extension points don't exist; you would be porting concepts, not installing a package. Budget this as custom middleware work against pact-php instead.
  • Your integration surface is synchronous HTTP — plain Pact PHP consumer tests already cover it; this adds nothing.
  • You need vendor-backed SLAs, LTS guarantees, or a security review trail. There is no release history, no prior version to compare against, and no downstream usage evidence in the notes.
  • The producing side has no Pact tooling and no appetite to adopt it — contract testing is a two-party commitment, and this package only covers one half.
  • You need producer-side verification — this is a consumer test harness, not a broker or verifier.

Suggested adoption posture: spike, don't standardize. Timebox a proof-of-concept on one non-critical consumer, measure whether it actually catches a schema/routing regression in CI, and only then decide. Pin the version explicitly.

How to Pitch It (Stakeholders)

For executives (one paragraph): A small open-source library was released that lets our PHP messaging services automatically verify, in CI, that the messages they send match what downstream teams expect — including which queue they go to. The business value is fewer integration failures reaching staging and production, and faster diagnosis when a producer changes a message format. The cost is low but so is the maturity: this is a solo-maintainer 1.0.0 with no adoption track record, and it targets Symfony rather than Laravel. Recommendation is a contained, few-day evaluation on one service, not an org-wide standard.

For engineering leadership: This is contract testing for async messaging — the gap most teams have after they've adopted Pact for HTTP. It plugs into Symfony Messenger's event system to collect dispatched envelopes and filter by transport, which is what you need for deterministic assertions. The release is functional work (arg fixes, transport filtering), dependency bumps, and a batch of test-coverage PRs — a healthy signal, but a signal that the test suite is being completed at 1.0.0, not before it. Treat the version number as optimistic.

For the engineering team: Expect to write your own harness glue regardless. The README example is our primary documentation, and there is a literal TODO in the docs at release. If you're on Laravel, plan to reimplement the envelope-collection idea as middleware over pact-php — the concepts transfer, the code does not. If you're on Symfony Messenger, this is plausibly a day of integration work; verify it survives a real contract before we depend on it.

Risks to state plainly: single maintainer, first contribution, no security posture, no deprecation/support policy, and no evidence of production use. Mitigate by pinning the version, isolating it to test/dev dependencies only (never production runtime), and keeping a fallback of hand-rolled assertions.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource