- How do I install nunomaduro/pao in a Laravel project?
- Run `composer require nunomaduro/pao` in your project root. No additional Laravel-specific setup is needed—it works globally with PHPUnit or Pest. For Laravel, ensure your `phpunit.xml` includes the PAO autoloader or use the `--pao` flag in test commands.
- Does pao work with Laravel’s built-in testing helpers?
- Yes, pao integrates seamlessly with Laravel’s testing helpers (e.g., `create()`, `assertDatabaseHas()`). It processes output after test execution, so no changes to your test logic are required. Just run tests with `--pao` to see formatted results.
- What Laravel/PHP versions does nunomaduro/pao support?
- Pao requires PHP 8.1+ and is compatible with Laravel 9+ (or standalone PHPUnit/Pest). Check the package’s [composer.json](https://packagist.org/packages/nunomaduro/pao) for the latest version’s exact requirements. Works with any Laravel version that supports PHP 8.1.
- Can I customize which logs pao filters out?
- Absolutely. Use a `.paorc` file in your project root to define rules. For example, exclude debug logs or vendor directory output with `- exclude: /vendor/` or `- level: ERROR`. Default rules are sensible but can be overridden entirely.
- Will pao break my CI/CD pipeline if it parses test output (e.g., JUnit XML)?
- Pao changes the *visual* output format but doesn’t alter the underlying test results. If your CI relies on raw output (e.g., parsing stdout), you’ll need to update scripts to handle pao’s formatted tables. Test this in a staging environment first.
- How does pao compare to other test output tools like phpunit-color or laravel-debugbar?
- Unlike `phpunit-color` (which only adds colors) or `laravel-debugbar` (a browser tool), pao is *agent-optimized*—it dynamically filters logs to reduce noise. It’s ideal for CLI-heavy workflows, while tools like debugbar focus on web debugging. Use pao for test output, debugbar for browser sessions.
- Does pao slow down my test suite?
- No, pao adds minimal overhead because it processes output *after* tests run. Benchmark in your CI: expect negligible impact unless you’re running thousands of tests with extremely verbose output. The agent model ensures filtering happens efficiently.
- Can I use pao with Pest instead of PHPUnit?
- Yes, pao works with Pest out of the box. Run Pest commands with `--pao` (e.g., `pest --pao`) or configure it in your `pest.php` file. The setup is identical to PHPUnit—just install pao and enable it via flags or config.
- What if pao hides important logs during debugging?
- Pao’s default rules are conservative, but you can override them. For critical logs, add exceptions to `.paorc` (e.g., `- exclude: !/critical-path/`). Always test with `--pao --verbose` to preview changes before full adoption.
- Is nunomaduro/pao actively maintained? What if I need help?
- Pao was last updated in 2026 and has a strong community following (check GitHub stars/issues). For support, open an issue on the [repo](https://github.com/nunomaduro/pao) or consult the [documentation](https://github.com/nunomaduro/pao#readme). Forking is an option if maintenance stalls.