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

Rest Api Test Laravel Package

litvinab/rest-api-test

A Laravel/PHP package for REST API testing, offering helpers to exercise endpoints and assert responses in automated tests. It aims to simplify API test setup, though its low adoption and limited community signals make it best suited to small or experimental projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The first finding a TPM should log is a framing mismatch: despite the request labeling this a Laravel/PHP package, litvinab/rest-api-test is a Symfony bundle. It is built around Symfony's bundle registration contract, DI container extensions, KernelTestCase/WebTestCase, and (for fixtures) Doctrine. Laravel does not implement the Symfony bundle contract, and there is no service provider, config file, or Laravel test-case integration. The functional core — base test-case classes, REST assertion helpers, and console commands for fixture-driven tests — is portable in concept, but the packaging, wiring, and command registration are not. For a Laravel roadmap item, this is a reference implementation, not a dependency.

Integration feasibility. Low, and cheap to prove. A package last released 2019-09-10 will almost certainly constrain symfony/* to ^3.4|^4.x and PHP to 7.1–7.4; modern Laravel pulls Symfony components at ^6|^7. Those sets do not intersect, so composer require fails outright rather than degrading. Even if forked and loosened, adopting it means rewriting the base classes — which is exactly where the package's value lives — because Laravel's HTTP testing surface ($this->json(), RefreshDatabase, factories) is a different abstraction. And Laravel's first-party tooling already covers the stated use cases: fixture/seed-based functional tests via factories + RefreshDatabase, and Behat acceptance testing with a hand-rolled Laravel context. The package's differentiator is a few hundred lines of glue we would write anyway.

Technical risk. High on every axis except production blast radius. Abandonment dominates: 2 stars, 0 dependents, no release in roughly six years, no maintainer response path, no CVE coverage. PHP 7.1–7.4-era code is likely to emit deprecations or fatals on PHP 8.2+, especially around untyped properties and assertion signatures. The one mitigating factor is that this is a require-dev-only concern, so exposure is confined to CI and the developer toolchain — it never ships to production. That does not make adoption safe; it makes the failure mode "blocked merges during upgrade season" rather than "customer-facing incident."

Key questions.

  1. Is the actual objective Laravel API test scaffolding, or Behat acceptance testing? The answer changes build-vs-borrow entirely.
  2. Which PHP and Laravel versions are in scope, and is the target app already on 8.2+? If yes, the package is effectively disqualified.
  3. Is the alternative — a shared tests/Concerns trait plus a Behat context — cheaper than a fork-and-port? Assume yes until a spike proves otherwise.
  4. Does anyone on the team have Symfony bundle experience sufficient to own a fork? Forking converts a dependency into an owned asset with a maintenance budget.
  5. Any licensing or provenance concern with vendoring code from a 2-star, single-maintainer repo?
  6. Would adopting this set a precedent of picking dormant packages for test infrastructure, where breakage cost is CI-wide?

Integration Approach

Stack fit. Poor as a library, moderate as a pattern source. The useful design idea — data-fixture-driven functional tests with reusable REST assertion helpers and commands to seed/tear down fixtures — maps cleanly onto Laravel idioms: a TestCase trait wrapping $this->json() with shared auth/header assertions, model factories or JSON/CSV fixture loaders, and Artisan commands replacing the Symfony console commands.

Migration path. Do not attempt a runtime integration. If the team wants the pattern, treat the repository as a specification: read the base test-case classes, extract the assertion helpers and fixture-loading contract, and reimplement in roughly 1–2 developer-weeks on top of Laravel's testing API. If a fork is mandated for legacy Symfony purposes, fork to an internal namespace, drop the bundle class, rewrite DI wiring to Laravel's container (or use plain classes), and pin to our supported matrix.

Compatibility. Assume PHP 7.x-era constraints. Before any commitment, run composer why-not against the target app and a static analysis pass (PHPStan/Larastan) on the vendored source. Test-only dependencies still break CI on a PHP minor upgrade, so the compatibility surface must be entered into the upgrade runbook rather than discovered mid-upgrade.

Sequencing.

  1. Confirm the objective and the alternative cost — do not spend spike time on a Laravel target until step 1 is answered.
  2. Timebox a 2–3 day spike: composer resolution attempt plus a read-through of the test-case base classes.
  3. If resolution fails (the likely outcome), close the evaluation and redirect to an internal scaffolding package.
  4. If a fork proceeds, land it behind require-dev, gate it in CI, and assign a named owner before the first merge.

Operational Impact

Maintenance. This is the decisive factor. An abandoned dependency in test infrastructure means we own every future break: PHP upgrades, Laravel majors, and the PHPUnit 10/11 migration that changed setUp signatures and assertion APIs. A fork is sustainable only with an explicit owner and a small standing budget; unfunded, it rots silently and blocks upgrades at the worst possible moment.

Support. Effectively none. No issue triage, no security response, no upstream to escalate to. Internal documentation and a single point of knowledge become mandatory — a bus factor of one on infrastructure the whole CI pipeline depends on. Contrast with Laravel's testing docs, which are current and widely known across the team.

Scaling. The package never runs in production, so the relevant scaling dimensions are CI wall-clock time and concurrency. Fixture-based suites grow superlinearly if fixtures reload per test rather than per class, and parallel runners need per-worker fixture isolation. A 2019 package designed for serial Symfony test runs addresses neither.

Failure modes. Ranked by likelihood × impact:

  • Composer constraint conflict on the next Laravel/PHP upgrade — blocks all merges until resolved. High/high.
  • Silent abandonment — no fix available when it breaks, forcing an emergency rewrite. High/high if adopted widely.
  • PHP minor-version break from promoted deprecations — intermittent, confusing CI failures. Medium/medium.
  • Fixture leakage without transactional isolation — flaky suites that erode trust in CI signal. Medium/medium.
  • Bus factor on our internal fork if the sole porting engineer leaves. Medium/high.

Ramp-up. Deceptively small at first: the API surface is narrow and the concepts (fixtures, REST assertions) are familiar. The hidden cost is the Symfony bundle mental model, which most Laravel developers lack and which is wasted knowledge because the code gets rewritten anyway. Budget 1–2 days to read the source, 1–2 weeks to produce an equivalent internal implementation, versus a few hours to onboard to Laravel's first-party testing utilities.

Recommendation. Do not adopt as a dependency. The combination of zero adoption, six years without a release, a framework mismatch with Laravel, and near-total overlap with first-party tooling makes this negative value as a library. Retain the repository as a design reference for a small, explicitly funded internal test-scaffolding package owned by a named engineer, and close the dependency evaluation.

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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin