orchestra/testbench-dusk
Laravel Dusk testing helper for package development. Orchestra Testbench Dusk lets you write browser tests for your Laravel packages, bootstrapping a test application with Dusk support so you can verify real user interactions end to end.
php -S DuskServer), rather than only in a full application. That converts a vague quality aspiration into a concrete, automatable gate for any package that ships Blade views, Livewire components, published assets, routes, or JS.beforeServingApplication() / afterServingApplication() hooks, and a package:dusk-purge command with --pretend) and is MIT-licensed. Default recommendation: buy, unless we already have a hardened internal harness.Adopt when:
orchestra/testbench for its test suite.Look elsewhere when:
laravel/dusk directly; this package exists to compensate for the absence of an app skeleton.Watch item: the DuskServer pipe-fill hang has been re-fixed across multiple release lines (v9.20.0, v10.11.0, v11.3.0, v7.58.0). Budget for occasional CI hangs and treat timeouts/retries as a first-class configuration decision, not an afterthought.
For executives: We ship Laravel packages whose UI is our visible product surface, but today we can only test them at the HTTP layer — the class of bug that reaches customers is the one that only shows up in a real browser. This open-source, MIT-licensed helper lets us run real browser tests against our packages without maintaining our own test application, at the cost of a small amount of CI infrastructure and a routine dependency upgrade each time we move Laravel versions. It is a cheap de-risking of package releases, not a strategic bet: the project is actively released and version-synced with Laravel and Testbench, but it is a narrow, single-maintainer tool with a small user base, so we should adopt it as a testing utility and avoid coupling product architecture to it.
For engineering: orchestra/testbench-dusk gives us Dusk against a Testbench skeleton — it boots our package, serves it locally, and exposes beforeServingApplication() / afterServingApplication() hooks plus package:dusk-purge for cleanup. It tracks Testbench and Testbench Core minors aggressively, so pin versions and expect an upgrade task per Laravel major (v11 line supports Laravel 13 / Dusk 8.5). Recommended shape: keep feature tests as the primary safety net, add a thin Dusk suite for asset publishing, Blade/Livewire rendering, and JS interactions, run it headless in CI on a separate job, and quarantine flaky specs rather than retrying indefinitely. Note the recurring DuskServer pipe-hang fixes — set explicit server timeouts.
How can I help you explore Laravel packages today?