본문으로 건너뛰기
cccskills
무료GitHub에 공개

playwright-demo

Record narrated demo videos of the Rossoctl platform using Playwright and OpenAI TTS

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rossoctl/rossoctl스타 303(GitHub 303 + cccskills 0)
연동 도구PlaywrightOpenAI

실행 점수 미검증

설치 방법 보기

포함된 파일(1)

  • SKILL.md5.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Playwright Demo Recording

Record demo videos of the Rossoctl platform with AI-generated voiceover narration.

When to Use

  • Creating a demo video of the Rossoctl platform for presentations
  • Recording a walkthrough of a new feature with voiceover
  • Generating reproducible video documentation of platform workflows

Prerequisites

  • HyperShift or Kind cluster with Rossoctl deployed
  • The playwright-demos worktree: .worktrees/playwright-demos/
  • ffmpeg and ffprobe installed
  • OPENAI_API_KEY in .env for narration (optional -- video-only without it)

Quick Start

cd .worktrees/playwright-demos

List available tests:

./local_experiments/run-playwright-demo.sh --cluster-suffix <SUFFIX>

Record video only:

./local_experiments/run-playwright-demo.sh --cluster-suffix <SUFFIX> --test <name>

Record video + narration:

source .env
./local_experiments/run-playwright-demo.sh --cluster-suffix <SUFFIX> --test <name>

Workflow

On invocation

  1. Write/review test using test:playwright -- verify markStep segments, assertions, selectors, and narration alignment
  2. Run test to verify it passes: --no-narration first
  3. Record video with voiceover: source .env then run
  4. Validate alignment and iterate on narration text
  5. Fix failures using playwright-demo:debug if needed

Recording pipeline (with OPENAI_API_KEY)

Step 1: Fast run -> measure video slot timing per markStep()
Step 2: Generate TTS per [section], inject waitForTimeout() to match
Step 3: Record narration-synced video -> composite voiceover

Test Review Requirements

Before recording, verify every test meets these criteria:

Section time slots

  • Every markStep() call is OUTSIDE conditional blocks
  • Each section is 3-15 seconds (split longer ones)
  • markStep() names match [section] in narration file 1:1

Assertive tests (fail if content missing)

Tests MUST use expect() assertions, NOT silent .catch(() => {}):

// REQUIRED - fails if navigation broken
await expect(page).toHaveURL(/\/agents/, { timeout: 10000 });

// REQUIRED - fails if content missing
await expect(element).toBeVisible({ timeout: 5000 });
expect(count).toBeGreaterThan(0);

// REQUIRED - after login
expect(page.url()).not.toContain('/realms/');

Keep .catch() ONLY for truly optional elements (VERIFY_PROFILE, hover effects).

Verification

Run the test without narration first to confirm it passes:

./local_experiments/run-playwright-demo.sh --cluster-suffix <SUFFIX> --test <name> --no-narration

If it fails, fix selectors by reading UI source code. Use playwright-demo:debug.

Directory Structure

demos/
├── 01-demos/full-platform-walkthrough/
├── 02-ui-pages/{home-overview,agent-detail,...}/
├── 03-workflows/{agent-chat,multi-namespace,...}/
├── 04-observability/{mlflow-traces,kiali-mesh,...}/
└── 05-advanced/{keycloak-admin,env-vars,...}/

Each demo directory contains all artifacts:

demos/02-ui-pages/home-overview/
├── home-overview.spec.ts              # Test spec (copy)
├── home-overview.txt                  # Narration text (copy)
├── home-overview-timestamps.json      # Step timings
├── audio_segments/                    # Per-section TTS (cached by MD5)
│   ├── intro.mp3 + intro.hash
│   ├── login.mp3 + login.hash
│   └── ...
├── home-overview_YYYY-MM-DD.webm      # Timestamped raw video
├── home-overview_YYYY-MM-DD_voiceover.mp4
├── home-overview_latest.webm          # Latest (overwritten)
└── home-overview_latest_voiceover.mp4

Audio segments are cached by MD5 hash -- only changed narration text triggers TTS regeneration.

Creating New Demos

  1. Add to demo-map.json
  2. Create e2e/<name>.spec.ts with markStep(), expect(), demoClick()
  3. Create narrations/<name>.txt with [section] markers
  4. Run and iterate

See playwright-research for analyzing UI code to write selectors.

Google Drive Sync

./local_experiments/sync-to-gdrive.sh

Shows setup instructions for scoped service account. Then:

./local_experiments/sync-to-gdrive.sh --sync --latest-only

Troubleshooting

ProblemFix
Validation IDLE gapsAdd narration text to fill the gap
Narration overlaps--sync pipeline adds extra waits automatically
Missing markStep timestampMove markStep() outside conditional blocks
Auth lost after navigationUse SPA sidebar clicks, not page.goto()
Overlapping audioFix markStep() calls, check timestamps file
Video in wrong directoryAdd test to demo-map.json

Task Tracking

  1. TaskList -- check existing demo recording tasks
  2. TaskCreate: playwright-demos | <cluster> | <test> | <phase>
  3. TaskUpdate as iterations progress

Related Skills

  • playwright-demo:debug -- Debug failing Playwright steps
  • playwright-research -- Analyze UI code, detect changes, plan videos
  • hypershift:cluster -- Create/manage test clusters
  • k8s:health -- Verify platform health before recording

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

auth

무료

Authentication and authorization patterns for Rossoctl services

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rossoctl/rossoctl3032026년 10월 25일 업데이트

Create confidential OAuth2 clients in Keycloak for server-to-service authentication

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rossoctl/rossoctl3032026년 10월 25일 업데이트

Configure MLflow with mlflow-oidc-auth plugin for Keycloak OIDC authentication

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rossoctl/rossoctl3032026년 10월 25일 업데이트

Configure OpenTelemetry Collector with OAuth2 authentication for trace export

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rossoctl/rossoctl3032026년 10월 25일 업데이트

ci

무료

CI pipeline monitoring, status checks, and PR validation workflows

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rossoctl/rossoctl3032026년 10월 25일 업데이트

Monitor running CI jobs, wait for completion, create tasks for results

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

rossoctl/rossoctl3032026년 10월 25일 업데이트

rossoctl의 스킬 모두 보기

이 스킬의 문제 신고