本文へ移動
cccskills
無料GitHub で公開

playwright-research

Analyze UI code changes to plan, create, and maintain Playwright demo videos - change detection, test writing, video recording lifecycle

日本語の概要は準備中です。原文の説明を表示しています。

rossoctl/rossoctlスター 303(GitHub 303 + cccskills 0)
連携ツールPlaywright

実行スコア 未検証

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Playwright Research - Demo Video Lifecycle

Analyze UI code to determine which demo videos need creation or regeneration, write Playwright demo tests, validate them, and manage the video lifecycle.

When to Use

  • New feature added to UI -- determine if a new demo is needed
  • UI code changed -- check if existing demos need regeneration
  • Planning demo coverage -- find uncovered workflows
  • Writing new demo tests -- analyze UI code for correct selectors
  • Managing TODO_VIDEOS.md -- keep video plan current

Workflow

1. ANALYZE  -> Read UI code, compare against TODO_VIDEOS.md
2. DETECT   -> git diff for UI changes, map to affected videos
3. WRITE    -> Create test spec + narration from UI source analysis
4. VALIDATE -> Run test, fix failures, iterate
5. RECORD   -> Use playwright-demo skill
6. NARRATE  -> Add narration, sync, record voiceover

Phase 1: UI Code Analysis

Read these files to inventory current UI:

rossoctl/ui-v2/src/App.tsx          # Routes
rossoctl/ui-v2/src/pages/           # Page components
rossoctl/ui-v2/src/components/      # Shared components
rossoctl/ui-v2/src/services/        # API layer

Compare against .worktrees/playwright-demos/TODO_VIDEOS.md.

Phase 2: Change Detection

git diff --name-only HEAD~10 -- rossoctl/ui-v2/src/

File-to-video mapping in TODO_VIDEOS.md section 10 identifies affected demos.

When a component changes, check:

  1. Selector changes -- update test selectors to match new DOM
  2. Layout changes -- video may look different, mark for regen
  3. New features -- add new markStep() sections
  4. Removed features -- remove corresponding sections

Phase 3: Test Writing

Analyze UI source for selectors

// Read the page component to find element identifiers
// PatternFly Button with onClick -> page.getByRole('button', { name: /text/i })
// PatternFly Tab -> page.getByRole('tab', { name: /text/i })
// Link with React Router -> page.locator('a').filter({ hasText: 'text' })
// Aria label -> page.locator('[aria-label="Select namespace"]')

Test requirements

Every test MUST:

  • Call markStep() OUTSIDE conditional blocks
  • Use expect() assertions at every section (not silent .catch())
  • Use SPA sidebar clicks for Rossoctl pages (not page.goto())
  • Use demoClick() for visible cursor movement
  • Write timestamps to <test-name>-timestamps.json
  • Have 10s final pause

Assertion pattern

// After login
expect(page.url()).not.toContain('/realms/');

// After navigation
await expect(page).toHaveURL(/\/agents/, { timeout: 10000 });

// Before critical interaction
await expect(element).toBeVisible({ timeout: 5000 });

// After content load
expect(cardCount).toBeGreaterThan(0);

Phase 4: Test Validation

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

If it fails: read UI source, update selectors, re-run. Use playwright-demo:debug.

Phase 5-6: Recording and Narration

Use playwright-demo skill for recording and voiceover.

Architecture: Segments and Timing

markStep('section') -> records timestamp
                    -> sync-narration.py generates TTS, measures duration
                    -> if narration > video slot: inject waitForTimeout()
                    -> add-voiceover.py positions audio at timestamp
                    -> audio_segments/<section>.mp3 cached by MD5 hash

File Layout

.worktrees/playwright-demos/local_experiments/
├── demo-map.json           # Test name -> output dir mapping
├── e2e/*.spec.ts           # Source test specs (22 tests)
├── narrations/*.txt        # Narration text files
├── demos/                  # Output: nested by category
│   ├── 01-demos/           # Original walkthrough
│   ├── 02-ui-pages/        # UI page demos
│   ├── 03-workflows/       # Multi-page workflow demos
│   ├── 04-observability/   # External app demos
│   └── 05-advanced/        # Advanced feature demos
├── run-playwright-demo.sh  # Main entry script
├── add-voiceover.py        # TTS + FFmpeg compositing
├── sync-narration.py       # Narration timing sync
└── sync-to-gdrive.sh       # Google Drive upload

TODO_VIDEOS.md Status Markers

StatusMeaning
[NEW]Needs test + narration
[WIP]Test exists, needs iteration
[DONE]Test passes, video recorded
[REGEN]UI changed, needs re-recording

Task Tracking

  1. TaskCreate: playwright-research | <phase> | <scope>
  2. TaskUpdate as work progresses

Related Skills

  • playwright-demo -- Record demo videos (Phase 5-6)
  • playwright-demo:debug -- Debug failing tests (Phase 4)
  • k8s:health -- Verify platform health before testing

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは 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 のスキルをすべて見る

このスキルの問題を報告する