beyondcode/dusk-dashboard
Dusk Dashboard gives Laravel Dusk browser tests a web dashboard. Review test runs and pass/fail results, inspect screenshots and console output, and monitor your end-to-end suite from one place to debug failures faster.
Architecture fit. beyondcode/dusk-dashboard is a Composer-distributed Laravel package whose role is to observe another tool — Laravel Dusk — while it runs. It integrates via a service provider that publishes config and registers a dedicated dashboard route, exposing a live browser view of test execution: per-test pass/fail, timing, assertions, failure screenshots, console logs, browser exceptions, and one-click re-run of failed tests. Architecturally this is an idiomatic, low-ceremony Laravel dev-tooling shape, and it is strictly a development/triage surface — it adds observability over the browser suite, not a business capability. The fit question is therefore narrow: does the consuming app already run Dusk, and can the package's route be environment-gated so it never renders in production. Verify from source that route registration is conditional (env/config check) rather than unconditional; an always-on route that can re-trigger browser test runs and serve captured screenshots is an exposure, not a feature.
Integration feasibility. High for the right target, blocked for the wrong one. The only release artifact we have is 2.0.0 — "Laravel 7 support" — dated 2020-05-29, with the repository now archived. Reading through SemVer, the package's support ceiling tracks Laravel 7, implying Symfony 5 and PHP 7.2.5+. A Laravel 8+ application will hit a Composer constraint conflict, not a code error, so this is a stack-selection gate, not an integration-effort estimate. Practically: viable for a legacy Laravel 6/7 app with an existing Dusk suite; not viable on a modern Laravel release, and not worth downgrading anything to reach.
Technical risk. Four risks, in priority order:
local/testing, reviewed once, and asserted in a test so a future config change cannot promote it.Key questions.
composer.json hard-pin Laravel 7, and is there a trusted community fork on Laravel 8+?Stack fit. Target: a Laravel 6/7 application, PHP 7.2–7.x, an existing Dusk suite, and a CI pipeline that already produces test artifacts. The package belongs in require-dev and only ever in require-dev. It does not fit a Laravel 8+ codebase, and no configuration makes it fit — the conflict is at dependency resolution and cannot be worked around without a fork.
Migration path. There is no upgrade-style migration worth planning here; treat this as greenfield dev-tool adoption or a decision to leave it out.
^2.0, publish config, confirm the route is gated to non-production, run the existing Dusk suite end-to-end, and verify screenshots, console logs, and re-run all function.Compatibility. Build the matrix explicitly before committing, sourced from composer.json and CI status rather than the changelog: Laravel version × PHP version × Dusk version × package version. Add two rows the changelog will not tell you about — the Chrome/Chromedriver version the screenshot capture depends on, and whether the dashboard behaves correctly under a parallelized Dusk run. Both are predictable breakage points for a frozen package.
Sequencing.
local/testing.Maintenance. Effectively 100% internal from day one. The upstream is archived with no releases in five years; every future break — a PHP minor bump, a Chrome/driver change, a framework patch — is ours to fix or accept. Because the surface is small (a route, listeners on Dusk's test-lifecycle events, a view), a fork or thin reimplementation is a credible one-to-two-sprint alternative that removes the dependency entirely and restores an upgrade path.
Support. No vendor support, no security patching, no documentation beyond a description and a one-line changelog. Internal ownership must be assigned by name for the day it breaks; without that, it becomes the classic unmaintained dev dependency that silently rots until a new hire cannot get it running.
Scaling. The dashboard is a single-run, local-loop artifact, not a results store. It does not answer "which tests are flaky over 30 days" or "did this PR slow the suite down," and it is not designed for parallel or sharded Dusk execution across a CI fleet or a shared multi-developer dashboard. If the organizational need is CI-native reporting or historical trend analysis, this is the wrong half of the workflow — that requires JUnit/HTML reporting or a different class of tool.
Failure modes. Enumerate them for the runbook: Composer resolution failure on framework upgrade (guaranteed on Laravel 8+); screenshot capture breaking on a Chromedriver bump with no upstream fix; route accidentally exposed in a non-local environment, leaking screenshots, console logs, and exception traces that may contain seeded data or PII; disk growth from accumulated artifacts with no built-in retention policy; re-run endpoint shelling out to the test runner with unclear argument handling (command-injection and arbitrary-test-selection review required); and behavioral drift at the undocumented 1.x→2.0 boundary.
Ramp-up. Low for developers already writing Dusk tests — install is Composer plus a route, time-to-signal measured in hours, which is what makes the pilot cheap. The real ramp-up benefit is inverse: screenshots and console logs on failure lower the Laravel/browser fluency needed to diagnose a broken E2E test, so "can a new joiner debug a failing E2E test unaided in week one?" is a measurable outcome this pattern moves directly. The ramp-up cost is on the maintainer side, not the user side: whoever owns it must understand the service provider, the event listeners, and the artifact storage well enough to patch them.
Bottom line. The feature set is well-scoped and genuinely useful, and opportunity is the strongest dimension in the assessment — but the package is archived and pinned to an EOL framework. Read it as a validated prototype of a capability: appropriate for a time-boxed pilot on a Laravel 7 app or as the blueprint for an internal build, and not as a long-lived dependency.
How can I help you explore Laravel packages today?