Demo Video Recording Guidelines¶
When to Re-record Demos¶
After editing files in these paths, run the corresponding demo task:
| Path Pattern | Run This | Videos Updated |
|---|---|---|
frontend/app/components/herodraft/** |
just demo::herodraft |
captain1_herodraft, captain2_herodraft |
frontend/app/components/draft/** |
just demo::shuffle and just demo::snake |
shuffle_draft, snake_draft |
frontend/app/components/bracket/** |
just demo::herodraft |
(bracket is entry point to hero draft) |
Action Required¶
When you complete edits to these components that affect visual appearance:
- Run the appropriate demo command
- Upload to R2:
just r2::upload
Do not ask the user - just run the demo recording if the changes are visual.
Demo Commands¶
| Command | Description |
|---|---|
just demo::herodraft |
Record hero draft demo (resets demo data first) |
just demo::shuffle |
Record shuffle draft demo |
just demo::snake |
Record snake draft demo |
just demo::all |
Record all demos in parallel |
just demo::gifs |
Convert videos to GIF previews |
just demo::trim |
Trim initial white screen from videos |
just demo::clean |
Clean demo output directories |
just r2::upload |
Upload all assets to Cloudflare R2 |
Prerequisites¶
Before running demos:
- Test environment must be running:
just test::up - Test data must be populated:
just db::populate::all
Test Data¶
Demos use isolated tournament data that resets automatically:
| Tournament | Key | Used By |
|---|---|---|
| Demo HeroDraft Tournament | demo_herodraft |
herodraft demo |
| Demo Captain Draft Tournament | demo_captaindraft |
shuffle, snake demos |
How It Works¶
Each demo command:
- Resets the demo tournament via
/api/tests/demo/<key>/reset/ - Runs Playwright demo tests headless inside the frontend Docker container
- Saves videos locally to
docs/assets/videos/ - Upload to R2 via
just r2::upload
GitHub Workflow¶
For official releases, use the manual GitHub workflow:
- Go to Actions > Record Demo Videos
- Select which demo to record (all, herodraft, shuffle, snake)
- Choose Create PR to review before merging (recommended)
- Click Run workflow
The workflow uses cached dependencies from CI for faster execution.
Video Outputs¶
Videos are saved to https://assets.kettle.sh/draftforge/videos/:
captain1_herodraft.webm- Hero draft from Team Alpha captain's viewcaptain2_herodraft.webm- Hero draft from Team Beta captain's viewshuffle_draft.webm- Shuffle (MMR-balanced) draftsnake_draft.webm- Snake draft
GIFs are saved to https://assets.kettle.sh/draftforge/gifs/ with the same names (.gif extension).