rhdh-playwright
Skill20 starsChanged 20 days agoApache-2.0View on GitHub
Use when navigating, testing, or verifying a RHDH instance via playwright-cli. Covers guest login, sidebar navigation, catalog browsing, entity page inspection, tab verification, and plugin exploration. Trigger on "check RHDH", "verify catalog entity", "entity should have tab", "navigate RHDH", or any RHDH UI testing task.
In this repository73 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- rhdh-base-imagesSkill
- rhdh-konflux-rpaSkill
- rhdh-konflux-tasksSkill
- rhdh-plugin-catalog-index-status-and-update-flowSkill
- rhdh-pr-mrSkill
- rhdh-prow-jobsSkill
- rhdh-prow-release-branchSkill
- rhdh-prow-triggerSkill
- rhdh-yarn-bumpSkill
- rhdh-feature-docsSkill
- rhdh-jira-createSkill
- rhdh-jira-linkSkill
- rhdh-jira-refineSkill
- rhdh-jira-sprint-planSkill
- rhdh-jira-sprint-reportSkill
- rhdh-jira-updateSkill
- rhdh-prepare-refinementSkill
- agent-readinessSkill
- ask-rhdhSkill
- clean-proseSkill
- setup-rhdh-skillsSkill
- skill-authoringSkill
- rhdh-backportSkill
- rhdh-backstage-upgradeSkill
- rhdh-localSkill
- rhdh-operator-pr-testSkill
- rhdh-overlaySkill
- rhdh-plugin-authoringSkill
- rhdh-plugin-bug-fixSkill
- rhdh-plugin-exportSkill
- rhdh-plugin-midstream-propagateSkill
- rhdh-plugin-nfs-migrationSkill
- rhdh-plugin-wiringSkill
- rhdh-pr-createSkill
- rhdh-pr-reviewSkill
- rhdh-test-placementSkill
- backstage-api-changesSkill
- mutation-gateSkill
- openspec-journalSkill
- prose-editingSkill
- rhdh-contextSkill
- rhdh-forgeSkill
- rhdh-jira-apiSkill
- rhdh-jira-authoringSkill
- rhdh-spec-driven-schemaSkill
- openspec-apply-changeSkill
- openspec-archive-changeSkill
- openspec-audit-changeSkill
- openspec-bulk-archive-changeSkill
- openspec-continue-changeSkill
- openspec-exploreSkill
- openspec-ff-changeSkill
- openspec-new-changeSkill
- openspec-onboardSkill
- openspec-sync-specsSkill
- openspec-verify-changeSkill
- rhdh-overlay-cve-exportSkill
- rhdh-platform-lifecycleSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 3 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 19
Run command -v playwright-cli before opening the browser.
- Distinctive: line 31
After opening a RHDH instance, check whether a login page appeared.
- Distinctive: line 46
After login, verify navigation succeeded by checking that the sidebar appeared:
- Distinctive: line 78
After navigating to the catalog, the page shows filters and a table of entities.
- Very specific: line 170
Check that the expected tab name appears in the tablist.
- Very specific: line 230
Default namespace is default.
- Very specific: line 234
Always: use playwright-cli, never the Playwright MCP tools.
- Very specific: line 238
After each playwright-cli command, a snapshot is returned — use the ref IDs from it for subsequent interactions.
- Very specific: line 239
Use playwright-cli snapshot to refresh the current page state at any time.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Play RHDH
Automate RHDH UI navigation and verification using playwright-cli (NOT the Playwright MCP).
Quick Start
Run command -v playwright-cli before opening the browser. If it is missing,
stop and report that the local playwright-cli prerequisite is unavailable.
# Always use --browser chromium
playwright-cli open <RHDH_URL> --browser chromiumThe URL is never hardcoded — the user provides it (or it comes from context like CLAUDE.md).
Authentication — Guest Login
After opening a RHDH instance, check whether a login page appeared. If the page title contains "Sign In" or "Log in", or the snapshot shows sign-in buttons, log in as guest:
# Take a snapshot to check for login
playwright-cli snapshot
# If a login page is detected, look for a guest sign-in option:
# - Button or link matching: "Enter" (on guest sign-in provider card)
# - Or a "Guest" / "Sign in as Guest" button
# Click it:
playwright-cli click "<ref>" # ref of the guest sign-in buttonRHDH login pages typically show provider cards. The guest provider shows a title like "Guest" with an "Enter" button. Click the "Enter" button on the guest card.
After login, verify navigation succeeded by checking that the sidebar appeared:
playwright-cli snapshot --depth 3
# Confirm: navigation "sidebar nav" is presentSidebar Navigation
The sidebar uses navigation "sidebar nav" containing links. Navigate by clicking the link with the target label.
| Destination | Selector pattern |
| Home | link "Home" |
| Catalog | link "Catalog" |
| APIs | link "APIs" |
| Docs | link "Docs" |
| Create | link "Create" |
| Explore | link "Explore" |
| Settings | link "Settings" |
| Notifications | link "Notifications" |
| Search | button "Search" |
Additional sidebar items (plugins) appear below a separator. Their labels match their menu name (e.g., link "Tech Radar").
# Navigate to a sidebar item
playwright-cli click "getByRole('navigation', { name: 'sidebar nav' }).getByRole('link', { name: 'Catalog' })"Catalog Page
After navigating to the catalog, the page shows filters and a table of entities.
Filters
| Filter | Element type | Locator |
| Kind | button (shows current value) | button "Component" (or current kind) |
| Type | button | button "all" (or current type) |
| Owner | combobox + textbox | textbox "Owner" |
| Lifecycle | combobox + textbox | textbox "Lifecycle" |
| Tags | combobox + textbox | textbox "Tags" |
To filter by Kind, click the Kind button and select from the dropdown:
playwright-cli click "getByRole('button', { name: 'Component' })"
playwright-cli snapshot # find the desired kind option
playwright-cli click "<ref>" # click the desired kindSearch the Catalog
playwright-cli fill "getByRole('textbox', { name: 'Search' })" "my-entity"Catalog Table
The entity table has columns: Name, System, Owner, Type, Lifecycle, Description, Tags, Actions.
Entity names in the table are links. Their URL pattern is: /catalog/{namespace}/{kind}/{name}
# Click an entity by name
playwright-cli click "getByRole('link', { name: 'artist-lookup' })"Personal vs All
The catalog has a menu toggle between "Personal" (Owned / Starred) and "RHDH" (All):
# Switch to "All" entities
playwright-cli click "getByRole('menuitem', { name: /All/ })"Entity Page
An entity page has:
- Header — shows kind, type, entity name, and metadata (Owner, Lifecycle)
- Tabs —
tablist "Tabs"containingtabelements - Content area —
articlebelow the tabs
Verify an Entity Exists
playwright-cli open "<RHDH_URL>/catalog/default/component/<entity-name>" --browser chromium
playwright-cli snapshot --depth 3
# Confirm: heading with entity name is present
# The page title format: "<entity-name> | <tab> | <site-title>"Or search through the catalog:
playwright-cli open "<RHDH_URL>/catalog" --browser chromium
playwright-cli fill "getByRole('textbox', { name: 'Search' })" "<entity-name>"
# Check the table for a matching row
playwright-cli snapshotRead Entity Metadata
From the entity page snapshot, find:
- Kind + Type:
paragraphabove the heading (e.g., "component — service") - Owner: under a "Owner" label, a link to the owning group
- Lifecycle: under a "Lifecycle" label (e.g., "experimental", "production")
- System: in the About card under "System" heading
Verify a Tab Exists
playwright-cli snapshot
# Look for: tablist "Tabs" containing tab elements
# Example output:
# tablist "Tabs":
# tab "Overview" [selected]
# tab "Docs"
# tab "APIs"
# tab "Todo"Check that the expected tab name appears in the tablist. Tabs are tab role elements inside tablist "Tabs".
# Click a specific tab
playwright-cli click "getByRole('tab', { name: 'Docs' })"About Card
The entity Overview tab contains an "About" card (heading "About") with:
- Description, Owner, System, Tags, Kind, Type, Lifecycle
- Links: "View Source", "View TechDocs"
Common Verification Patterns
Check that a catalog entity exists
playwright-cli open "<URL>" --browser chromium
# Handle login if needed (see Authentication section)
playwright-cli goto "<URL>/catalog/default/component/<name>"
playwright-cli snapshot --depth 4
# SUCCESS: heading with entity name is visible
# FAILURE: page shows "Entity not found" or similar errorEntity should have a specific tab
playwright-cli goto "<URL>/catalog/default/component/<name>"
playwright-cli snapshot --depth 4
# Find: tablist "Tabs" → check for tab "<expected-tab>"Navigate sidebar and verify page loaded
playwright-cli click "getByRole('navigation', { name: 'sidebar nav' }).getByRole('link', { name: '<Page>' })"
playwright-cli snapshot --depth 3
# Confirm heading or page content matches expected pageScreenshot for evidence
playwright-cli screenshot --filename rhdh-evidence.png
# Saved to .playwright-cli/rhdh-evidence.pngURL Patterns
| Resource | URL pattern |
| Catalog list | /catalog |
| Entity by kind | /catalog/{namespace}/{kind}/{name} |
| API docs | /api-docs |
| TechDocs | /docs |
| Create (templates) | /create |
| Settings | /settings |
Default namespace is default. Common kinds: component, system, group, user, api, resource, template, domain, location.
Important
- Always use
playwright-cli, never the Playwright MCP tools. - Always pass
--browser chromiumtoplaywright-cli open. - The URL is provided by the user or derived from context — never hardcode it.
- Logs and screenshots are automatically saved in
.playwright-cli/. - After each
playwright-clicommand, a snapshot is returned — use the ref IDs from it for subsequent interactions. - Use
playwright-cli snapshotto refresh the current page state at any time.
Completion
Complete when the requested pages or entities have been checked, the report names any visible alerts, warnings, errors, or missing tabs, and requested screenshots are linked. Close the browser session after collecting the evidence.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

