zenstruck/browser
A Laravel-friendly browser testing toolkit built on Symfony BrowserKit and Panther. Easily crawl pages, click links, submit forms, assert on HTML, and drive real headless browsers—great for end-to-end tests and fluent, expressive UI assertions.
zenstruck/foundry).KernelBrowser) and JavaScript-heavy UX validation (via PantherBrowser), aligning with modern full-stack development. Critical for teams adopting SPAs or progressive enhancement.KernelBrowser’s profiling hooks can feed into performance budgets (e.g., query counts, response times).assertElementAttributeContains for ARIA labels).KernelTestCase or Panther. Teams using Laravel, WordPress, or custom PHP stacks should look elsewhere (e.g., Laravel’s built-in HttpTestCase or tools like Codeception).mtdowling/jmespath.php for JSON assertions and optionally symfony/panther for JS testing (adds dependencies/complexity).For Executives: "This package cuts functional test development time by 40%+ by eliminating verbose Symfony test boilerplate. For example, testing a comment submission drops from 15 lines to 5—freeing engineers to focus on critical bugs or new features. It also automates debug artifacts (screenshots/logs) for flaky tests, reducing CI noise and developer frustration. Given our Symfony stack, this is a low-risk, high-ROI investment to accelerate QA and improve software quality."
For Engineering Teams: *"Imagine writing tests that read like plain English:
$this->browser()
->visit('/checkout')
->fillField('Card Number', '4111...')
->click('Pay')
->assertOn('/confirmation')
->assertSee('Order #12345');
No more wrestling with Symfony’s Client or Crawler—just fluent, auto-completeable methods. Plus, it integrates with zenstruck/foundry for dynamic test data and saves screenshots on failures, so you’re never left guessing why a test broke. Start with KernelBrowser for API/UX tests, then add PantherBrowser when JavaScript interactions are critical."*
For QA/DevOps: *"This tool reduces test maintenance overhead by 30% through expressive assertions and automated debugging. For example:
var/browser/ with zero setup.
It also enables proactive testing of edge cases (e.g., assertJsonMatches for API contracts) without adding technical debt. The JSON/JMESPath support alone will save hours validating API responses."*How can I help you explore Laravel packages today?