jeffersongoncalves / screentest-cli
CLI tool for automated screenshot generation of Filament plugins.
Installs: 10
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Type:project
pkg:composer/jeffersongoncalves/screentest-cli
Requires
- php: ^8.2
Requires (Dev)
- laravel-zero/framework: ^12.0
- laravel/pint: ^1.25
- mockery/mockery: ^1.6
- pestphp/pest: ^3.8|^4.1
README
Screentest CLI
CLI tool for automated screenshot generation of Filament plugins. Generates documentation screenshots in light and dark themes with zero manual effort.
Features
- Reads a
screentest.jsonconfig from your plugin - Creates a temporary Filament project via filakit
- Installs the plugin via path repository (symlink)
- Auto-generates seeds by analyzing Resources (static analysis)
- Captures screenshots with Puppeteer (light + dark themes)
- Saves to
{plugin}/screenshots/{theme}/{name}.png - Optionally updates README.md with screenshot references
Installation
composer global require jeffersongoncalves/screentest-cli
Quick Start
# Navigate to your Filament plugin directory cd my-filament-plugin # Initialize config (interactive) screentest init # Run the complete pipeline screentest run
Commands
| Command | Description |
|---|---|
screentest init |
Analyze plugin and generate screentest.json |
screentest run |
Run the complete pipeline (setup → seed → capture → readme → cleanup) |
screentest setup |
Create temporary Filament project and install plugin |
screentest seed |
Generate and run seeds for the temporary project |
screentest capture |
Capture screenshots using Puppeteer |
screentest readme |
Update README.md with screenshot references |
screentest cleanup |
Remove temporary project |
Configuration
The screentest.json file controls the entire process:
{
"plugin": {
"name": "My Filament Plugin",
"package": "vendor/my-plugin"
},
"filakit": {
"kit": "filakitphp/basev5"
},
"install": {
"extra_packages": [],
"plugins": [
{
"class": "Vendor\\MyPlugin\\MyPluginPlugin",
"panel": "admin"
}
],
"publish": [],
"post_install_commands": ["migrate"]
},
"seed": {
"auto_detect": true,
"user": {
"email": "admin@example.com",
"password": "password",
"name": "Admin User"
},
"models": []
},
"screenshots": [
{
"name": "resource-list",
"url": "admin/resources",
"selector": "body",
"viewport": { "width": 1920, "height": 1080, "deviceScaleFactor": 3 },
"before": [
{ "action": "wait", "delay": 500 }
]
}
],
"output": {
"directory": "screenshots",
"themes": ["light", "dark"],
"format": "png"
},
"readme": {
"update": true,
"section_marker": "<!-- SCREENSHOTS -->",
"template": "table"
}
}
Requirements
- PHP 8.2+
- Node.js (for Puppeteer)
- pnpm
- Composer
- Composer
How It Works
- Init - Analyzes your plugin's
composer.jsonand Resources to generate a config - Setup - Creates a temporary Filament project using filakit, installs your plugin via symlink
- Seed - Auto-detects Filament Resources, maps fields to Faker methods, generates factories and seeders
- Capture - Launches Puppeteer, logs into Filament, navigates to each URL, captures screenshots in light and dark themes
- Readme - Updates your README.md between
<!-- SCREENSHOTS -->markers with a table or gallery
Auto-Seed Field Mapping
| Filament Component | Faker Method |
|---|---|
TextInput('name') |
$faker->name() |
TextInput('email') |
$faker->safeEmail() |
TextInput('title') |
$faker->sentence(4) |
TextInput()->numeric() |
$faker->numberBetween(0, 100) |
Textarea |
$faker->paragraph() |
RichEditor |
$faker->paragraph() (wrapped in HTML) |
Toggle / Checkbox |
$faker->boolean() |
Select('..._id') |
FK to related model |
Select->options([...]) |
Random from options |
DatePicker |
$faker->date() |
DateTimePicker |
$faker->dateTime() |
ColorPicker |
$faker->hexColor() |
FileUpload |
Skipped (null) |
License
Screentest CLI is open-source software licensed under the MIT license.
