jeffersongoncalves/screentest-cli
screentest-cli is a Laravel/PHP command-line tool for screen testing. It lets developers run automated visual checks from the terminal, integrate them into local dev or CI workflows, and catch UI regressions early before they reach production. A focused CLI for repeatable screen tests.
screentest against the plugin's own resource and page set in light and dark themes. A diff in the captured output is fast evidence that a dependency upgrade broke layout, navigation, or the panel theme — cheaper than maintaining a bespoke browser test suite for chrome-level UI that has no meaningful assertions.create → install → publish → post-install → build assets → seed → serve → capture → readme pipeline. The buy case is strong for anyone maintaining more than a couple of Filament plugins; the build case wins only if you already own a Playwright/Puppeteer harness with fixtures and CI wiring.screentest.json analyzer detects resources and pages and lets you select which ones to capture (--screenshots=all or a comma list). What you choose to capture is a de facto statement of what your plugin's public surface is; resources that never appear in any screenshot are candidates for removal or for being flagged as advanced/opt-in.init is explicitly non-interactive under a no-tty harness, with flags for name, package, screenshot selection, README update, and --deps for wrapped "kit" packages. This supports a roadmap item to let coding agents regenerate docs as part of routine dependency chores.Consider it when most of the following hold:
stubs/docker/); if containers are off the table, evaluate that cost first..env keys, seed models, screenshot URLs.route/routeParams/signed are supported, so signature-gated confirmation pages are in scope.Look elsewhere when:
description.md describes route-based capture, baseline diffs, configurable pixel thresholds, and multi-viewport comparison — but the README, AGENTS.md, and release notes describe a Filament screenshot generator with README templating. That is a material discrepancy, not a detail. Until it is resolved, assume this is a screenshot generator and plan a separate tool (Percy, BackstopJS, Playwright toHaveScreenshot) for pixel-diff gating. Validate before you put it in a release gate.filakit base projects and panel resource discovery; a generic Inertia/Livewire app gets little of the value.install and no amount of config tuning helps.Adoption criteria if you proceed: pin the version; write screentest.json from stubs/screentest.json.stub and commit it; run the pipeline once locally and read the post-run warnings rather than only opening the PNGs; add it to CI as a non-blocking job first, then promote to blocking once it has been green for a few releases.
To executives — the one-paragraph version: Our Filament plugins live or die on whether they look right when someone first installs them, and today that evidence is hand-taken screenshots that go stale silently after a theme tweak or a dependency bump. This tool rebuilds a throwaway Laravel + Filament project, installs our plugin into it, seeds realistic data, captures every configured page in light and dark mode with headless Chrome, and rewrites the README table. It converts an undocumented manual chore into a repeatable command with an exit code, and it is small enough to evaluate in an afternoon.
To engineering — the honest version: This is a documentation automation and smoke-visual tool, not a regression-testing framework. It does not store baselines or compute pixel diffs, whatever the repo description says. What it does well is the boring part: standing up a disposable host app, publishing migration stubs that hasMigrations() leaves unpublished, flipping the env()-backed config flags that otherwise 404 an entire resource, seeding before a /1/edit capture, and generating signed URLs inside the temp project where the APP_KEY actually exists. That is precisely the plumbing nobody wants to write twice.
The risks to state up front: two stars, one maintainer, a version history that is still hardening edge cases in guest capture and login detection. It is a productivity win, not infrastructure you should bet a release process on. Pin it, vendor it or fork it if it becomes load-bearing, and if a true visual-regression gate is on the roadmap, budget for a second tool rather than assuming this one covers it.
The ask: one engineer-day to write the config for our two most-used plugins, run it locally, and report back on whether the captures are trustworthy enough to wire into CI as a non-blocking check — plus a decision on whether this becomes our standard README-screenshot path or stays a per-plugin experiment.
How can I help you explore Laravel packages today?