feat: expand demo recording into CI, website, and E2E framework#32
Closed
feat: expand demo recording into CI, website, and E2E framework#32
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
scripts/demos/lib.shwith per-demo scripts (create, list, management, headless). Supports dual-mode operation —recordfor asciinema recordings andtestfor fast E2E assertions with TAP output.demo-recording.yml(manual trigger, records demos, commits GIF back to PR branch with comment) ande2e.yml(manual + weekly schedule, runs assertions without recording).AsciinemaTerminalandDemoSequenceReact components wrappingasciinema-playerin the site's terminal chrome. Create wizard and management demos play live on the docs-site with static fallbacks.docs-site/public/casts/.Test plan
bun run lintandbun run format:checkpassbun testpassesbun run docs:dev— verify create and management recordings play on the site./scripts/demos/record-create.shproduces a valid .cast file./scripts/record-demo.shstill works for README GIF generationDEMO_MODE=test ./scripts/demos/test-all.sh createruns assertions without recording🤖 Generated with Claude Code