nicolasguilloux/wiremock-bundle
Symfony bundle that integrates WireMock into your test suite, letting you start stub HTTP services, define request/response mappings, and verify outgoing calls so functional tests run against realistic APIs without hitting external systems.
Architecture fit: The headline fact is a stack mismatch. nicolasguilloux/wiremock-bundle is a Symfony bundle, not a Laravel package — it integrates through Symfony's DependencyInjection extension, KernelEvents, and test-kernel bootstrapping. Laravel has no equivalent lifecycle, so the bundle's core value (automatic WireMock server start/stop tied to a test kernel, Symfony service configuration) does not transfer. Laravel auto-discovery, extra.laravel.providers, and vendor:publish are all inapplicable. What is portable is the pattern: the bundle is essentially a thin orchestration layer over WireMock's admin REST API (/__admin/mappings, /__admin/requests) plus a declarative stub-file convention. That pattern can be reused; the code cannot.
Integration feasibility: Low as a dependency, moderate as a reference. The repository is archived and carries a v1.0.0 with a one-line release note ("First version") and 1 star — no ecosystem validation, no downstream users to learn from. Even in a Symfony codebase I would not adopt an archived bundle; in a Laravel codebase it is a non-starter at the framework level. Feasibility of the underlying capability is high: WireMock runs as a standalone Java process or Docker image and is HTTP-native, so it can front any Laravel HTTP client (Guzzle, Laravel Http, vendor SDKs, SOAP clients) without framework coupling.
Technical risk:
composer.lock and CI, so supply-chain and drift risk are real even for a test-only dependency.Http::fake(). Laravel's built-in fake covers the common case cheaply. WireMock only earns its cost when we need cross-language contract fidelity, request verification against the wire format, a client we don't control (SDKs, generated clients), or a shared stub corpus across services.Key questions:
Http::fake() cannot express, or is the need hypothetical?Stack fit: Poor as shipped, good as a design input. Laravel is the target runtime; the bundle targets Symfony. There is no realistic path where composer require nicolasguilloux/wiremock-bundle delivers value inside a Laravel app. The viable route is to treat the repository as a specification for a small internal Laravel package (or a base TestCase trait): boot WireMock (Docker or JAR), load YAML/JSON stub files, expose an assertion helper over /__admin/requests, tear down in tearDown(). That is a few hundred lines, not a fork.
Migration path: Not a migration — a translation. Inventory the bundle's concepts (stub mapping format, per-test isolation, multi-instance support, request assertions), re-implement the subset we need natively, and keep the stub files in a repo-level tests/stubs/ directory so they're portable if we later swap the harness. Do not attempt to shim Symfony's kernel hooks into Laravel.
Compatibility: Assume the bundle is pinned to a Symfony generation and a PHP floor we will not track. WireMock itself is version-independent of our PHP runtime — that is the durable, low-risk layer. Our internal harness must declare an explicit WireMock image tag (e.g. wiremock/wiremock:3.x) and pin it, because image tags move.
Sequencing:
Http::fake() cannot satisfy. If none exists, close the initiative.Http::fake() for the cases we care about.Maintenance: The upstream is finished — archived means zero. Any adoption is a permanent internal maintenance commitment for the harness, with no upstream to absorb churn. That is acceptable only if the harness stays small (one trait, one Docker fixture) and we resist building a miniature framework around it. Budget an owner and a quarterly review of the pinned WireMock image.
Support: None. No issues process, no security disclosure path, no maintainer responsiveness to measure. Internal support falls entirely on the adopting team, and the reference repo will not answer questions in two years.
Scaling: Test-time scaling is the concern, not production. WireMock instances are cheap individually but multiply per parallel test process (PHPUnit/Pest with Paratest), so container count, port allocation, and startup time scale linearly. The bundle's multi-instance support is a hint that this gets awkward quickly; plan for a shared instance per process rather than per test class.
Failure modes:
Http::fake() would have solved in one line.Ramp-up: Low for the concept, moderate for the harness. WireMock's admin API is well documented and stable; the risk is that engineers read this archived bundle, assume it is the recommended approach, and either try to install it or copy its Symfony-shaped abstractions. The onboarding artifact should be our internal README, with the upstream repo cited only as prior art — never as an install target.
Recommendation: Reject as a dependency; selectively harvest as a design reference. The archived status and Symfony/Laravel mismatch make direct use indefensible. Before funding any replacement work, require a written test case that Laravel's Http::fake() cannot handle — if that case is weak, the correct answer is no action, and this package remains a useful example of how to structure stub fixtures if the need ever becomes real.
How can I help you explore Laravel packages today?