--- name: k8s-browser description: Browser automation for Kubernetes dashboards and web UIs. Use when interacting with Kubernetes Dashboard, Grafana, ArgoCD UI, or other web interfaces. Requires MCP_BROWSER_ENABLED=true. license: Apache-2.0 metadata: author: rohitg00 version: "1.0.0" tools: 26 category: automation --- # Browser Automation for Kubernetes Automate Kubernetes web UIs using kubectl-mcp-server's browser tools (26 tools). ## When to Apply Use this skill when: - User mentions: "dashboard", "Grafana", "ArgoCD UI", "web interface", "screenshot" - Operations: navigating K8s dashboards, capturing screenshots, automating web UIs - Keywords: "browser", "click", "screenshot", "web", "UI automation" ## Priority Rules | Priority | Rule | Impact | Tools | |----------|------|--------|-------| | 1 | Enable MCP_BROWSER_ENABLED first | CRITICAL | Environment variable | | 2 | Open URL before interactions | HIGH | `browser_open` | | 3 | Wait for elements before clicking | HIGH | `browser_wait_for_selector` | | 4 | Take screenshots for verification | MEDIUM | `browser_screenshot` | ## Quick Reference | Task | Tool | Example | |------|------|---------| | Open URL | `browser_open` | `browser_open(url)` | | Click element | `browser_click` | `browser_click(selector)` | | Take screenshot | `browser_screenshot` | `browser_screenshot(path)` | | Wait for element | `browser_wait_for_selector` | `browser_wait_for_selector(selector)` | ## Prerequisites - **Browser Tools Enabled**: Required ```bash export MCP_BROWSER_ENABLED=true ``` ## Enable Browser Tools ```bash export MCP_BROWSER_ENABLED=true # Optional: Cloud provider export MCP_BROWSER_PROVIDER=browserbase # or browseruse export BROWSERBASE_API_KEY=bb_... ``` ## Basic Navigation ```python # Open URL browser_open(url="http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/") # Open with auth headers browser_open_with_headers( url="https://grafana.example.com", headers={"Authorization": "Bearer token123"} ) # Navigate browser_navigate(url="https://argocd.example.com/applications") # Go back/forward browser_back() browser_forward() # Refresh browser_refresh() ``` ## Screenshots and Content ```python # Take screenshot browser_screenshot(path="dashboard.png") # Full page screenshot browser_screenshot(path="full-page.png", full_page=True) # Get page content browser_content() # Get page title browser_title() # Get current URL browser_url() ``` ## Interactions ```python # Click element browser_click(selector="button.submit") browser_click(selector="text=Deploy") browser_click(selector="#sync-button") # Type text browser_type(selector="input[name=search]", text="my-deployment") browser_type(selector=".search-box", text="nginx") # Fill form browser_fill(selector="#namespace", text="production") # Select dropdown browser_select(selector="select#cluster", value="prod-cluster") # Press key browser_press(key="Enter") browser_press(key="Escape") ``` ## Waiting ```python # Wait for element browser_wait_for_selector(selector=".loading", state="hidden") browser_wait_for_selector(selector=".data-table", state="visible") # Wait for navigation browser_wait_for_navigation() # Wait for network idle browser_wait_for_load_state(state="networkidle") ``` ## Session Management ```python # List sessions browser_session_list() # Switch session browser_session_switch(session_id="my-session") # Close browser browser_close() ``` ## Viewport and Device ```python # Set viewport size browser_set_viewport(width=1920, height=1080) # Emulate device browser_set_viewport(device="iPhone 12") ``` ## Kubernetes Dashboard Workflow ```python # 1. Start kubectl proxy # kubectl proxy & # 2. Open dashboard browser_open(url="http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/") # 3. Navigate to workloads browser_click(selector="text=Workloads") # 4. Take screenshot browser_screenshot(path="workloads.png") # 5. Search for deployment browser_type(selector="input[placeholder*=search]", text="nginx") browser_press(key="Enter") ``` ## Grafana Dashboard Workflow ```python # 1. Open Grafana browser_open_with_headers( url="https://grafana.example.com/d/k8s-cluster", headers={"Authorization": "Bearer admin-token"} ) # 2. Set time range browser_click(selector="button[aria-label='Time picker']") browser_click(selector="text=Last 1 hour") # 3. Screenshot dashboard browser_screenshot(path="grafana-cluster.png", full_page=True) ``` ## ArgoCD UI Workflow ```python # 1. Open ArgoCD browser_open(url="https://argocd.example.com") # 2. Login browser_fill(selector="input[name=username]", text="admin") browser_fill(selector="input[name=password]", text="password") browser_click(selector="button[type=submit]") # 3. Navigate to app browser_wait_for_selector(selector=".applications-list") browser_click(selector="text=my-application") # 4. Sync application browser_click(selector="button.sync-button") browser_click(selector="text=Synchronize") ``` ## Related Skills - [k8s-gitops](../k8s-gitops/SKILL.md) - ArgoCD CLI tools - [k8s-diagnostics](../k8s-diagnostics/SKILL.md) - Cluster analysis