facile-it/paraunit
Run PHPUnit test suites faster by executing tests in parallel across multiple processes. Includes Symfony-based CLI, compatibility across PHPUnit/Symfony versions, and parallel code coverage generation (auto-chooses PCOV, Xdebug, or PHPDbg).
Paraunit is a drop-in replacement for PHPUnit designed to speed up test suite execution via parallelization. To begin:
composer require --dev facile-it/paraunitvendor/bin/paraunit runStart with the basic run command. It discovers and runs all tests from your phpunit.xml configuration, respecting test suites, filters, and timeouts — just like plain PHPUnit, but faster. Coverage collection is also supported out-of-the-box: vendor/bin/paraunit coverage --html=coverage.
phpunit with minimal changes. Drop in vendor/bin/paraunit for vendor/bin/phpunit in scripts or Composer scripts.--chunk-size=N to batch tests into N parallel workers, reducing memory pressure and improving fairness in worker load.--testsuite=unit,integration, --exclude-testsuite=slow, --test-suffix=.test.php, or --sort=random to control execution patterns while retaining parallel speed.pcov > xdebug > phpdbg). Generate diverse reports (--cobertura, --clover, --html) for integration with tools like GitLab, SonarQube, or CI dashboards.-vvv to see full subprocess output, aiding in diagnosing failing tests in parallel runs. For flaky tests, temporarily disable parallelization (--processes=1) to reproduce issues.E_USER_NOTICE, deprecations) are surfaced as distinct test issues alongside failures and errors. This improves visibility into soft failures without breaking the build; use --fail-on-notices to enforce strict failure conditions.phpunit.xml (auto-added on first run). If tests fail silently, verify the <extension class="Paraunit\Extension\ParaunitExtension" /> line exists.phpunit --coverage and paraunit coverage without cleanup).setUpBeforeClass() and tearDownAfterClass() with caution — they run per-process, not per-class globally.echo, dump) may interleave unpredictably in parallel runs. Prefer assertions over stdout. Use --debug to associate output with specific tests when debugging.--detect-deadlocks and review your transaction boundaries.--pass-through="option=value" to forward raw PHPUnit CLI flags unsupported by Paraunit directly — e.g., --pass-through="--convert-deprecation-to-exceptions".phpunit.xml respects updated event system requirements — the bootstrap extension remains mandatory.--fail-on-notices=false during transition.How can I help you explore Laravel packages today?