SIGN IN SIGN UP

feat: replace asciinema with godog-based demo recording (#2801)

Convert terminal demos from standalone shell scripts recorded via
asciinema to Godog BDD scenarios that generate asciicast v2 files
programmatically. This makes demos into verified tests that can
never silently break while producing terminal recordings.

The recording infrastructure captures kubectl commands and their
stdout/stderr with real execution timing during @demo-tagged
scenario execution. Per-step dedup handles polling transparently
so only successful results appear in the recording. Step text is
emitted as comments and commands are colored for readability.

Demo scenarios:
- ClusterCatalog Quickstart: queries the operatorhubio catalog API
- SingleNamespace Install Mode: installs mariadb-operator with a
  separate watch namespace, verifies rolebindings
- OwnNamespace Install Mode: installs mariadb-operator with
  watch namespace equal to install namespace
- Webhook Support: installs telegraf-operator, verifies mutating
  webhook injects sidecar container into test pod

Not converted (no matching demo scenarios):
- Synthetic User Permissions: feature gate disabled in experimental
- Helm Chart Support: blocked by OCPBUGS-95281

The update-demos Makefile target now builds OLM from source using the
experimental e2e infrastructure, deploys with all feature gates and
operatorhubio catalog, runs demo scenarios, converts recordings to
SVG via svg-term-cli, and tears down the cluster. Demo recordings
are embedded in docs via the mkdocs-asciinema-player plugin and
served from GitHub Pages, removing the dependency on asciinema.org
for hosting recordings. Demo scenarios are excluded from regular
e2e test runs via ~@demo filter.

CI workflow (update-demos.yaml):
- On PR: generates demos, uploads asciicast and SVG files as job
  artifacts
- On merge to main: generates demos, deploys docs with updated
  recordings via make deploy-docs

Old demo shell scripts, the asciinema generate-asciidemo.sh wrapper,
and hack/demo/ resource files have been removed.

Co-authored-by: Claude <noreply@anthropic.com>
P
Predrag Knezevic committed
8013292577c5ea72c65aea3cf57ce11496fc8f0c
Parent: 6a28728
Committed by GitHub <noreply@github.com> on 7/3/2026, 12:18:49 PM