-
Notifications
You must be signed in to change notification settings - Fork 27
Fully implement .playwright-mcp/page.yml with route model, readiness checks, and automation flows
#71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: feat/create-playwright-mcp-config
Are you sure you want to change the base?
Fully implement .playwright-mcp/page.yml with route model, readiness checks, and automation flows
#71
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1 +1,224 @@ | ||||||||||||||||||||
| version: 1 | ||||||||||||||||||||
| name: claude-code-agent-monitor | ||||||||||||||||||||
| description: > | ||||||||||||||||||||
| Playwright MCP page model for the Claude Code Agent Monitor dashboard. | ||||||||||||||||||||
| This file defines stable navigation targets, readiness checks, and | ||||||||||||||||||||
| high-value interaction flows for browser automation and validation. | ||||||||||||||||||||
|
|
||||||||||||||||||||
| app: | ||||||||||||||||||||
| base_url: http://localhost:5173 | ||||||||||||||||||||
| production_url: http://localhost:4820 | ||||||||||||||||||||
| shell: | ||||||||||||||||||||
| sidebar_brand: Agent Dashboard | ||||||||||||||||||||
| nav_items: | ||||||||||||||||||||
| - Dashboard | ||||||||||||||||||||
| - Agent Board | ||||||||||||||||||||
| - Sessions | ||||||||||||||||||||
| - Activity Feed | ||||||||||||||||||||
| - Analytics | ||||||||||||||||||||
| - Workflows | ||||||||||||||||||||
| - Settings | ||||||||||||||||||||
| websocket_indicators: | ||||||||||||||||||||
| live: Live | ||||||||||||||||||||
| disconnected: Disconnected | ||||||||||||||||||||
|
|
||||||||||||||||||||
| readiness: | ||||||||||||||||||||
| default_timeout_ms: 15000 | ||||||||||||||||||||
| checks: | ||||||||||||||||||||
| - type: text | ||||||||||||||||||||
| value: Agent Dashboard | ||||||||||||||||||||
| required: true | ||||||||||||||||||||
| - type: text_any | ||||||||||||||||||||
| values: [Live, Disconnected] | ||||||||||||||||||||
| required: true | ||||||||||||||||||||
| - type: nav_labels | ||||||||||||||||||||
| values: [Dashboard, Agent Board, Sessions, Activity Feed, Analytics, Workflows, Settings] | ||||||||||||||||||||
|
|
||||||||||||||||||||
| pages: | ||||||||||||||||||||
| dashboard: | ||||||||||||||||||||
| route: / | ||||||||||||||||||||
| title_text: Dashboard | ||||||||||||||||||||
| summary_text: Real-time overview of Claude Code agent activity | ||||||||||||||||||||
| primary_actions: | ||||||||||||||||||||
| - Refresh | ||||||||||||||||||||
| - View Board | ||||||||||||||||||||
| key_blocks: | ||||||||||||||||||||
| - Total Sessions | ||||||||||||||||||||
| - Active Agents | ||||||||||||||||||||
| - Active Subagents | ||||||||||||||||||||
| - Events Today | ||||||||||||||||||||
| - Total Events | ||||||||||||||||||||
| - Total Cost | ||||||||||||||||||||
| - Recent Activity | ||||||||||||||||||||
| empty_states: | ||||||||||||||||||||
| - No active agents | ||||||||||||||||||||
| - No activity yet | ||||||||||||||||||||
|
|
||||||||||||||||||||
| agent_board: | ||||||||||||||||||||
| route: /kanban | ||||||||||||||||||||
| title_text: Agent Board | ||||||||||||||||||||
| expected_columns: | ||||||||||||||||||||
| - Working | ||||||||||||||||||||
| - Connected | ||||||||||||||||||||
| - Idle | ||||||||||||||||||||
| - Completed | ||||||||||||||||||||
| - Error | ||||||||||||||||||||
| empty_state: No agents tracked yet | ||||||||||||||||||||
|
|
||||||||||||||||||||
| sessions: | ||||||||||||||||||||
| route: /sessions | ||||||||||||||||||||
| title_text: Sessions | ||||||||||||||||||||
| search_placeholder: Search sessions... | ||||||||||||||||||||
| filters: | ||||||||||||||||||||
| - All | ||||||||||||||||||||
| - Active | ||||||||||||||||||||
| - Completed | ||||||||||||||||||||
| - Error | ||||||||||||||||||||
| - Abandoned | ||||||||||||||||||||
| row_navigation: /sessions/:id | ||||||||||||||||||||
| empty_state: No sessions found | ||||||||||||||||||||
|
|
||||||||||||||||||||
| session_detail: | ||||||||||||||||||||
| route_pattern: /sessions/:id | ||||||||||||||||||||
| expected_sections: | ||||||||||||||||||||
| - Session Overview | ||||||||||||||||||||
| - Agent Hierarchy | ||||||||||||||||||||
|
Comment on lines
+84
to
+85
|
||||||||||||||||||||
| - Session Overview | |
| - Agent Hierarchy | |
| - Agents | |
| - Cost Breakdown |
Copilot
AI
Apr 14, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
activity_feed.controls includes a “Refresh” control, but the Activity Feed refresh button is icon-only with no visible text or accessible name (see client/src/pages/ActivityFeed.tsx:113-115). Any automation that clicks by text/role+name “Refresh” will fail; consider modeling it via a stable attribute (e.g., add an aria-label/title in the app) or update the page model/flows to target the icon-only button correctly.
| - Refresh |
Copilot
AI
Apr 14, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Analytics page model doesn’t match the current UI: the export button label is “Export” (not “Export JSON”), and the “expected_cards” list includes items like “Input Tokens”/“Output Tokens”/“Estimated Cost” that don’t appear as top-level card labels (see client/src/pages/Analytics.tsx:585-592 and stat pill labels). This will cause false failures when asserting actions/cards; update the model to reflect the actual visible labels.
| - Export JSON | |
| expected_cards: | |
| - Total Tokens | |
| - Input Tokens | |
| - Output Tokens | |
| - Estimated Cost | |
| - Export | |
| expected_cards: | |
| - Total Tokens |
Copilot
AI
Apr 14, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
workflows.status_tabs includes “All”, but the UI tab label is “All Sessions” (see client/src/pages/Workflows.tsx:329-333). If automation toggles tabs by visible text, it will miss the “All Sessions” button—update the model to match the exact label.
| - All | |
| - All Sessions |
Copilot
AI
Apr 14, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
workflows.primary_actions are modeled as “Refresh data” and “Export as JSON”, but the UI renders these as icon-only buttons with a title attribute and no visible text (see client/src/pages/Workflows.tsx:365-379). If the MCP runner clicks by button text / accessible name, these actions won’t be findable—either adjust the model/flows to target the icon buttons via their title (or another stable attribute), or add accessible labels in the UI.
| - Export as JSON | |
| - Export JSON |
Copilot
AI
Apr 14, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
settings.expected_sections includes “Data Export”, but the Settings page uses a “Data Management” section and an “Export Data” link in the header (no “Data Export” heading exists in the UI). As written, section assertions may fail—update the expected section label(s) to match what’s actually rendered.
| - Data Export | |
| - Data Management |
Copilot
AI
Apr 14, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not_found.expected_text expects “Page Not Found”, but the UI heading is “Page not found” (different capitalization) in client/src/pages/NotFound.tsx:21. If assertions are case-sensitive, this will fail—update the expected text to match the rendered string.
| - Page Not Found | |
| - Page not found |
Copilot
AI
Apr 14, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In workflows_refresh_and_export, the steps click “Refresh data” and “Export as JSON”, but those strings are not visible button text in the UI (they are only title tooltips on icon buttons). This step definition is likely to fail unless the runner supports tooltip/title-based targeting; consider rewriting the steps to use the actual locator strategy available (or ensure the UI exposes accessible names for these buttons).
| - click Refresh data | |
| - click Export as JSON | |
| - click the icon button with title Refresh data | |
| - click the icon button with title Export as JSON |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
expected_columnsordering doesn’t match the UI: the Kanban board columns render in the order Idle, Connected, Working, Completed, Error (seeclient/src/pages/KanbanBoard.tsx:16). If the Playwright MCP consumer asserts column order, this will fail—update the list to match the rendered order (or clarify/order-agnostic semantics if supported).