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

Phpunit Accelerator Laravel Package

padraic/phpunit-accelerator

padraic/phpunit-accelerator is a PHPUnit extension that speeds up test execution for PHP projects. It helps shorten feedback loops by reducing time spent waiting on test suites, making it easier to iterate quickly while continuing to use PHPUnit.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. padraic/phpunit-accelerator is not a Laravel package — it ships PHPUnit test listeners, so it would live entirely in the dev-dependency and test-harness layer (composer require-dev, phpunit.xml listener registration). It has no service provider, no config surface, no runtime footprint, and no coupling to the framework. That makes it architecturally cheap to trial and irrelevant to production code. The conceptual fit is decent (Laravel teams care about test-suite wall time because it dominates CI cost), but the implementation targets a PHPUnit extension point that the framework's current test stack no longer exposes.

Integration feasibility. Low. The package originates from the PHPUnit 3.x/4.x listener era; PHPUnit\Framework\TestListener was deprecated in PHPUnit 9 and removed in PHPUnit 10, along with the <listeners> section of phpunit.xml. Laravel 9+ ships PHPUnit 9/10, Laravel 11 ships PHPUnit 10/11, and Pest 2/3 sits on the same modern event system. A current Laravel app therefore cannot register these listeners at all without a compatibility shim or fork. Realistic viability is limited to legacy Laravel ≤8 on PHPUnit ≤9 with a PHP version the package's constraints still permit — and the constraint metadata itself needs verification, since the last meaningful activity predates PHP 8.

Technical risk. High, concentrated in three areas:

  • Abandonment: 12 stars, 0 dependents, no active maintainer. There is no one to file a CVE with and no release cadence to track PHPUnit majors.
  • Semantic risk (the real one): "acceleration" via a listener usually means short-circuiting work — skipping test bodies, memoizing results, mutating globals, or deferring setup/teardown. Any of those can convert a red suite to green. A false-positive test suite is a worse outcome than a slow one, and it is invisible until production.
  • Opaque mechanism: the description does not state what is being accelerated. Without reading the source, we cannot size the speedup, the correctness trade-off, or the blast radius on Laravel's RefreshDatabase, transaction-wrapped tests, or database/queue fakes.

Key questions for the maintainer/spike owner.

  1. Which listeners are included, and precisely which PHPUnit hooks do they override?
  2. Does any listener suppress test execution, assertions, or setUp/tearDown? Under what conditions?
  3. Maximum supported PHPUnit and PHP versions; is the constraint expressed in composer.json or implied?
  4. What is the measured wall-time delta on a representative suite (~1k tests), and does the pass/fail count stay identical?
  5. Is it PSR-0 or PSR-4 autoloaded, and does it declare dependencies?
  6. Has anyone audited the source for filesystem/network/env side effects (supply-chain check for a dev dependency run in CI with secrets present)?

Integration Approach

Stack fit. The only sensible placement is require-dev on a legacy Laravel/PHPUnit branch, invoked from phpunit.xml and exercised in CI (GitHub Actions/GitLab/Docker). It does not touch application code, so there is no service-container, config-publishing, or facade work. For any Laravel ≥9 target, the honest answer is that this package does not fit and should be evaluated as a reference design, not a dependency.

Migration path. There is no migration here — only a build-vs-buy-vs-alternatives decision. Before touching the package, establish a suite-time baseline (wall clock, test count, CI minutes, flake rate). Then compare against the options that actually accelerate modern Laravel suites:

  • php artisan test --parallel / ParaTest — the default answer; parallelizes by process and scales with cores.
  • CI sharding across runners — scales with budget rather than with code.
  • Coverage driver swap (pcov/phpdbg instead of Xdebug) and static analysis moved out of the test job — often the single largest cheap win.
  • --order-by=defects, Pest's parallel mode, and trimming RefreshDatabase per-test migrations.
  • PHP/JIT and opcache tuning in the CI image.

If the accelerator's specific trick still looks valuable after that comparison, the migration path is a small internal fork: vendor the logic and port the listeners to PHPUnit 10+ event subscribers (PHPUnit\Event\*). The porting cost is modest (listener code of this vintage is typically a few hundred lines), but the maintenance obligation becomes ours permanently — which is usually a worse trade than adopting ParaTest.

Compatibility. Assume no formal support matrix. Verify composer.json constraints, autoload standard (PSR-0 is likely and will not autoload cleanly under modern Composer setups), and behaviour under PHP 8.x (typed properties, deprecations promoted to errors in CI, dynamic properties). Expect bootstrap-time fatals rather than graceful degradation when the PHPUnit version is wrong.

Sequencing.

  1. Spike (½ day): install on a throwaway branch against the actual PHPUnit version; confirm it boots. Most spikes should end here.
  2. Behaviour audit (1 day): read the listeners; document exactly what is skipped or cached.
  3. Measurement (1 day): A/B the suite; require identical pass/fail counts and identical test counts, not just identical exit codes.
  4. Decision: adopt as fork/vendored code, or close with a written rationale and ship ParaTest/sharding instead.
  5. Documentation: record the outcome in the test-infrastructure ADR so the question is not re-litigated.

Operational Impact

Maintenance. Effectively unmaintained. Any adoption implies owning the code: pin to a commit or fork, add it to the test-infrastructure ownership map with a named owner, and budget rework at every PHPUnit major (roughly annual). For a 12-star package with 0 dependents, the ecosystem signal is that nobody else has accepted this burden.

Support. Community-only, and the community is empty. No security policy, no issue triage, no release notes. Supply-chain exposure is low (MIT, tiny surface, likely zero runtime dependencies) but should still be audited because dev dependencies execute in CI where deployment credentials usually live.

Scaling. The benefit is bounded by per-test overhead reduction and does not compound with suite size; parallelization and sharding do. Frame the business case in CI minutes: if the accelerator cuts 8 minutes per run on a 20-minute suite across ~200 runs/month, that is a quantifiable number — measure it, don't assume it. Conversely, a 1-2% improvement is not worth a permanent fork.

Failure modes to plan for.

  • Silent test suppression → false greens reaching production (highest severity, lowest detectability).
  • Order dependence and memoized state producing flaky, non-reproducible failures.
  • Bootstrap fatals on PHPUnit/PHP upgrades, blocking the whole team's CI.
  • Interference with Laravel's RefreshDatabase, transactional tests, database/queue fakes, and parallel process isolation.
  • Retention of references in long-running processes and interactions with coverage drivers.
  • Mitigation: treat test count parity as a merge gate, keep a coverage floor, and run the experimental suite in a non-blocking CI job before any rollout.

Ramp-up. Installing is minutes; trusting is weeks. The learning curve is not the API — it is building enough confidence that a faster suite is still a correct suite. That is precisely the cost this package externalizes onto the adopting team.

Recommendation. Given a composite score of 0.12 and 19.58 opportunity, the expected value of adoption is negative. Do not add it to the dependency tree. Run the one-day behaviour audit only if the team is actively hunting suite-time wins, and use the findings as design input for ParaTest, CI sharding, and coverage-driver tuning — which deliver comparable or better gains, are actively maintained, and carry no correctness risk.

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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource