auth
FreeAuthentication and authorization patterns for Rossoctl services
The English summary is being prepared. Showing the original description.
Analyze UI code changes to plan, create, and maintain Playwright demo videos - change detection, test writing, video recording lifecycle
The English summary is being prepared. Showing the original description.
Run score Not tested
See how to installReview the instructions the agent will receive before you install.
Analyze UI code to determine which demo videos need creation or regeneration, write Playwright demo tests, validate them, and manage the video lifecycle.
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
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.
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:
markStep() sections// 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"]')
Every test MUST:
markStep() OUTSIDE conditional blocksexpect() assertions at every section (not silent .catch())page.goto())demoClick() for visible cursor movement<test-name>-timestamps.json// 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);
./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.
Use playwright-demo skill for recording and voiceover.
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
.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
| Status | Meaning |
|---|---|
[NEW] | Needs test + narration |
[WIP] | Test exists, needs iteration |
[DONE] | Test passes, video recorded |
[REGEN] | UI changed, needs re-recording |
playwright-research | <phase> | <scope>playwright-demo -- Record demo videos (Phase 5-6)playwright-demo:debug -- Debug failing tests (Phase 4)k8s:health -- Verify platform health before testingNo reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Authentication and authorization patterns for Rossoctl services
The English summary is being prepared. Showing the original description.
Create confidential OAuth2 clients in Keycloak for server-to-service authentication
The English summary is being prepared. Showing the original description.
Configure MLflow with mlflow-oidc-auth plugin for Keycloak OIDC authentication
The English summary is being prepared. Showing the original description.
Configure OpenTelemetry Collector with OAuth2 authentication for trace export
The English summary is being prepared. Showing the original description.
CI pipeline monitoring, status checks, and PR validation workflows
The English summary is being prepared. Showing the original description.
Monitor running CI jobs, wait for completion, create tasks for results
The English summary is being prepared. Showing the original description.