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

Functional Test Bundle Laravel Package

i22/functional-test-bundle

i22/functional-test-bundle provides functional testing helpers for PHP applications, with utilities to bootstrap test environments and assert end-to-end behavior. It aims to reduce boilerplate when adding reliable functional coverage to your test suite.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor for a Laravel codebase. This is a Symfony bundle, not a framework-agnostic PHP library. Its integration surface is the Symfony kernel/bundle registration model (bundles.php, Bundle subclasses, container-compiled services) plus hautelook/alice-bundle, which is itself a Symfony bundle wired to Doctrine ORM. Laravel does not load Symfony bundles, and its default persistence layer is Eloquent, not Doctrine. The package is therefore not a drop-in for the target stack; the only portable assets are its patterns (declarative fixture-set loading per test, base test-case helpers, database reset strategy).

Integration feasibility — near zero as a dependency, moderate as a reference. Composer will resolve it, but nothing will bootstrap it in a Laravel app. Even in a Symfony app, it is an abstraction over WebTestCase/KernelTestCase and AliceBundle; Laravel's Illuminate\Foundation\Testing\TestCase boots a different kernel and has no equivalent lifecycle hook for it. Realistic leverage paths are: (1) treat it as a design reference for an internal Laravel fixture-loading trait, or (2) if the org runs Symfony services, evaluate it there against modern alternatives.

Technical risk — high, and mostly unmitigated.

  • Abandonment: last release 2019-08-27, 0 stars, 0 dependents. No upstream triage, no security response, no compatibility work.
  • Version drift: 2019-era constraints will pin Symfony 3/4, PHP 7.x, and PHPUnit 6/7. Current Laravel (10/11) requires PHP 8.1+ and PHPUnit 10/11. Expect hard Composer conflicts, and expect the base test classes to break against modern PHPUnit's API.
  • Ecosystem supersession: zenstruck/foundry is the maintained, actively developed successor for exactly this problem space in Symfony. Adopting the 2019 bundle over Foundry would be a regression on every axis.
  • AliceBundle status: the Alice layer it depends on is itself in maintenance mode, so the risk compounds rather than sitting in one place.

Key questions to resolve before any decision.

  1. Is the consuming codebase Laravel, Symfony, or mixed? The answer flips this from "no" to "maybe."
  2. Are we solving fixture authoring (Alice-style YAML/JSON data definitions) or functional test scaffolding (HTTP client, DB reset, assertion helpers)? Laravel factories/seeders already cover most of the former.
  3. What is the database target, and does the test suite run in parallel? Fixture/transaction strategy must be decided up front.
  4. Is there appetite to fork and own a package with no upstream, or is this strictly a read-only reference?
  5. What is the actual pain we're trying to remove — fixture verbosity, DB reset flakiness, or boilerplate around HTTP tests?

Integration Approach

Stack fit. Do not add this as a production or dev dependency in a Laravel project. If the organization also operates Symfony applications, scope the evaluation there — and benchmark it against zenstruck/foundry before committing, since Foundry occupies the same niche with current maintenance.

Migration path, by target framework.

  • Laravel: Build a thin internal package instead. A LoadsFixtures trait on top of RefreshDatabase, reading YAML/JSON fixture files, hydrating through model factories and seeders. If Alice-style data definitions are genuinely valuable, use the standalone nelmio/alice core (still maintained) with a custom Eloquent persister — roughly 150–250 lines of glue, fully owned by us. This bundle is useful here only as a spec for what the trait should look like.
  • Symfony (legacy): If existing tests already depend on it, pin and freeze; plan migration to Foundry rather than extending the 2019 surface. Do not introduce it to new Symfony projects.

Compatibility checks required regardless of path. Read composer.json require/require-dev verbatim: PHP floor, Symfony component versions, doctrine/orm, hautelook/alice-bundle, and PHPUnit. Any of these pinning below PHP 8.1 or PHPUnit 9 disqualifies it from a current Laravel or Symfony 6/7 codebase.

Sequencing.

  1. Confirm framework target (one-week decision, no code).
  2. If Laravel: spike the fixture trait against one representative test suite; measure setup time and flake rate versus plain factories.
  3. If Symfony legacy: baseline existing suite, evaluate Foundry in parallel on a branch.
  4. Only if a spike shows concrete failure does a fork become a candidate — and a fork is a standing maintenance cost, not a one-time task.
  5. Record the decision as a deliberate non-adoption so it isn't re-evaluated ad hoc.

Operational Impact

Maintenance. Effectively an orphaned dependency. Every fix, PHP 8.x compatibility patch, and PHPUnit major-version adaptation becomes ours. A fork means owning CI, release cadence, and security posture for a package with no user base to share that cost.

Support. No vendor, no active issue triage, no upstream contact. Internal ownership must be named explicitly, with a defined sunset review. Absent that, the package becomes undocumented tribal knowledge.

Scaling. Functional test suites scale on two axes: fixture-load cost per test and parallel execution. Alice-driven Doctrine fixtures on large object graphs are slow; transaction-rollback isolation is faster than truncation but constrains tests that commit. For parallel runs (paratest/pest parallel), each worker needs its own database — this is a design decision the bundle cannot make for us, and it is the same decision we'd face with a self-built trait.

Failure modes to plan for.

  • Silent fixture drift: fixtures no longer matching the schema, surfacing as opaque test failures rather than clear errors.
  • Cross-test state leakage from incomplete resets — the classic flake source.
  • Kernel/container boot overhead per test inflating suite duration past the point where developers stop running it locally.
  • SQLite-in-memory vs. production MySQL/Postgres divergence (JSON columns, enums, constraints, collation) hiding real defects.
  • Hard break on the next PHPUnit major upgrade, with no upstream to absorb it.

Ramp-up. Learning the bundle's small API is inexpensive; the expensive part is the context switch to Symfony idioms for a Laravel-oriented team, and the ongoing cost of owning an unmaintained dependency. Net: low adoption cost, high total cost of ownership. Recommend the self-built Laravel trait or Foundry-on-Symfony, and treat this package as a design reference only.

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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
cgv/localized-resource