Skip to content

feat: expand demo recording into CI, website, and E2E framework#33

Merged
TimBeyer merged 10 commits intomainfrom
feat/demo-recording-expansion
Mar 22, 2026
Merged

feat: expand demo recording into CI, website, and E2E framework#33
TimBeyer merged 10 commits intomainfrom
feat/demo-recording-expansion

Conversation

@TimBeyer
Copy link
Owner

Summary

  • Recording framework: Extracted shared helpers into scripts/demos/lib.sh with per-demo scripts (create, list, management, headless). Supports dual-mode operation — record for asciinema recordings and test for fast E2E assertions with TAP output.
  • CI workflows: demo-recording.yml (manual trigger, records demos, commits GIF back to PR branch with comment) and e2e.yml (manual + weekly schedule, runs assertions without recording).
  • Website player: AsciinemaTerminal and DemoSequence React components wrapping asciinema-player in the site's terminal chrome. Create wizard and management demos play live on the docs-site with static fallbacks.
  • Recorded demos: Create wizard (3.4MB) and management commands (16KB) checked into docs-site/public/casts/.

Test plan

  • bun run lint and bun run format:check pass
  • bun test passes
  • bun run docs:dev — verify create and management recordings play on the site
  • ./scripts/demos/record-create.sh produces a valid .cast file
  • ./scripts/record-demo.sh still works for README GIF generation
  • DEMO_MODE=test ./scripts/demos/test-all.sh create runs assertions without recording

🤖 Generated with Claude Code

TimBeyer and others added 10 commits March 20, 2026 20:18
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract shared helpers (wait_for, type_slow, assert_screen, etc.) into
scripts/demos/lib.sh. Migrate the create wizard storyboard to
record-create.sh and add new demo scripts for list, management, and
headless flows.

The framework supports dual-mode operation: "record" for asciinema
recordings and "test" for fast E2E assertions with TAP output.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
demo-recording.yml: manually triggered workflow that records demos on a
macOS runner, generates the README GIF, and commits recordings back to
the PR branch with a comment for visual review.

e2e.yml: weekly + manual E2E test workflow that runs demo scripts in
test mode (fast assertions, no recording).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add AsciinemaTerminal and DemoSequence React components that wrap the
asciinema-player library in the site's terminal chrome. Sections
gracefully fall back to static content when .cast files aren't present.

- AsciinemaTerminal: single recording player with autoplay-on-scroll
- DemoSequence: multi-recording sequencer with segment indicators
- Custom theme CSS matching the site's dark palette
- Type declarations for asciinema-player (no shipped types)
- FleetDemo, ManagementDemo, and ConfigSection use live recordings
- New CreateDemo section between Hero and FleetDemo

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove per-script COLS/ROWS overrides so all demos inherit the lib.sh
default (100x35). The README GIF wrapper (record-demo.sh) is the only
place that overrides to 160 cols.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix set -e bugs: ((i++)) with i=0 returns exit 1 in bash arithmetic,
  and grep returning no matches in command substitution kills the script
- Split teardown_session into wait_for_exit (let command finish) and
  kill_session (cut recording short) — avoids killing VMs mid-provision
- Support DEMO_API_KEY and DEMO_PROVIDER env vars in record-create.sh
- Use --non-interactive for oc doctor in management demo
- Add recorded .cast files for the docs-site (create, list, management)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix React StrictMode double-mount creating two players per recording
- Fix asciinema player title-bar CSS selector (was ap-header)
- Use zsh instead of bash in management demo (avoids macOS zsh warning)
- Default terminal width to 160 cols for all recordings
- Revert FleetDemo and ConfigSection to static terminals (recordings
  don't add value for simple table/command output)
- Remove unused list.cast and headless.cast from website
- Re-record create and management demos at 160 cols

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove max-w-2xl constraint so the section matches the width of
surrounding sections.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@TimBeyer TimBeyer merged commit 05333e7 into main Mar 22, 2026
8 checks passed
@TimBeyer TimBeyer deleted the feat/demo-recording-expansion branch March 22, 2026 21:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant