KubeStellar Console - Consistency Test Results

April 30, 2026 ยท View on GitHub

Date: 2026-01-28 Branch: consistency-testing Tester: Claude Opus 4.5 (automated via Chrome DevTools Protocol)


Summary

CategoryTotalTestedPassIssues
Modal Dialogs18 tested18171 (fixed)
Card Controls12 pages12120
Stats Blocks46 found46460
Drill-Down Views7 types770

Phase 1: Modal Dialogs

ESC Key & Keyboard Hints

#ModalESC Works"Esc close" HintSpace CloseNotes
1ConfigureCardModalYESYESYESCard menu > Configure
2ReplaceCardModalYESYESYESCard menu > Replace
3ResourceDetailModalYESYES-Click pod/event item, has tabs: Overview/Labels/Related/Describe/Logs/Events/YAML
4RenameModalYESYESYESPencil icon on cluster
5GPUDetailModalYESYES-10 GPUs NVIDIA-L40S across nodes
6CPUDetailModalYESYES-6 cores, 3 nodes
7MemoryDetailModalYESYES-39 GB, 3 nodes
8StorageDetailModalYESYES-96 GB storage
9DrillDownModalYESYES-Events namespace drill-down
10FeatureRequestModalYESFIXEDYESWas missing hint, now added
11AgentSetupDialogN/AN/AN/ANot accessible when agent connected
12SyncDialogYESYES-GitOps sync multi-phase dialog
13PolicyDetailModalN/AN/AN/APolicies expand inline, not separate modal
14ViolationsModalN/AN/AN/AViolations shown inline
15QuotaModalN/AN/AN/ARequires namespaces with quotas
16ApiKeyPromptModalYESYES-Covered by API Key Settings
17AlertRuleEditorYESYES-Edit/Create alert rule
18APIKeySettingsYESYES-Settings > API Keys

Fixes Applied

  • FeedbackModal.tsx: Added "Esc close / Space close" keyboard hints to footer
  • FeatureRequestModal.tsx: Added "Esc close / Space close" keyboard hints to footer

Phase 2: Card Controls by Page

Standard Card Control Layout

Row 1: [Title + Count] -------- [Cluster Filter] [Refresh]
Row 2: [Show: N] [Sort: Field] [Sort Order Toggle]
Row 3: [Search input]

Clusters Page (/clusters) - 8 cards

CardShowSortSearchRefreshClusterFilterNotes
Cluster HealthAllStatusYESYES-Is the cluster card itself
Resource Allocation---YESYESVisual card
Cluster Upgrade Status5StatusYESYES-
Pod Issues5StatusYESYESYES151 issues, pagination
Events Timeline---YESYESTime range SELECT (15m/1h/6h/24h)
Cluster Locations-----Map card
Offline Detection-----Stat card
Mobile Browser-----Browser embed

Dashboard Page (/) - 13 cards

CardShowSortSearchRefreshClusterFilterNotes
Cluster HealthAllStatusYESYES-
Resource Allocation---YESYESVisual
Event Stream5TimeYESYESYES
Cluster Metrics (x3)---YESYESLive chart, TimeRange:1h
Deployment Status5StatusYESYESYES
Pod Issues5StatusYESYESYES
Workload Status5StatusYESYESYES
Deployment Issues5StatusYESYESYES
Cluster Upgrade Status5StatusYESYES-
Resource Capacity10Name-YESYESNo search

Workloads Page (/workloads) - 5 cards

CardShowSortSearchRefreshClusterFilterNotes
Workload Status5StatusYESYESYES324 items
Deployment Status5StatusYESYESYES1008 deployments + status pills
Deployment Progress5StatusYESYESYES+ status pills
Pod Issues5StatusYESYESYES
Deployment Issues5StatusYESYESYES

Compute Page (/compute) - 5 cards

CardShowSortSearchRefreshClusterFilterNotes
Compute Overview---YESYESVisual/stats
Resource Allocation---YESYESVisual
Resource Capacity10Name-YESYESNo search
Cluster Metrics---YESYESTimeRange:1h
Top Pods5RestartsYESYESYES

Storage Page (/storage) - 2 cards

CardShowSortSearchRefreshClusterFilter
Storage Overview---YESYES
PVC Status10StatusYESYESYES

Network Page (/network) - 3 cards

CardShowSortSearchRefreshClusterFilter
Network Overview---YESYES
Service Status10TypeYESYESYES
Cluster Network-----

Events Page (/events) - 1 card

CardShowSortSearchRefreshClusterFilter
Event Stream5TimeYESYESYES

Security Page (/security) - 2 cards

CardShowSortSearchRefreshClusterFilter
Security Issues5SeverityYESYESYES
Compliance Score-----

Security Posture Page (/security-posture) - 4 cards

CardShowSortSearchRefreshClusterFilterNotes
OPA Policies5NameYESYESYES
Kyverno Policies--YESYES-Demo badge
Security Issues5SeverityYESYESYES
Namespace RBAC5Name-YES-No search

Data Compliance Page (/data-compliance) - 4 cards

CardShowSortSearchRefreshClusterFilterNotes
Vault Secrets-----Demo card
External Secrets-----Demo card
Cert Manager-----Demo card
Namespace RBAC5Name-YES-

GitOps Page (/gitops) - 5 cards

CardShowSortSearchRefreshClusterFilterNotes
ArgoCD Applications5Sync StatusYESYESYES
ArgoCD Sync Status---YESYESVisual
Helm Release Status-----Demo
Kustomization Status-----Demo
GitOps Drift-----Demo

Alerts Page (/alerts) - 5 cards

CardShowSortSearchRefreshClusterFilterNotes
Active Alerts5SeverityYES-YESMissing Refresh
Alert Rules5NameYES--Missing Refresh
Pod Issues5StatusYESYESYES
Deployment Issues5StatusYESYESYES
Security Issues5SeverityYESYESYES

Deploy Page (/deploy) - 16 cards

CardShowSortSearchRefreshClusterFilterNotes
Deployment Status5StatusYESYESYES
Deployment Progress5StatusYESYESYES
Deployment Issues5StatusYESYESYES
GitOps Drift5SeverityYESYESYES
ArgoCD Applications5Sync StatusYESYESYES
ArgoCD Sync Status---YESYESVisual
ArgoCD Health---YES-Visual
Helm Release Status5StatusYESYESYES
Helm History5Revision-YES-No search
Helm Chart Versions-----Demo
Kustomization Status-----Demo
Overlay Comparison-----Demo
Workload Deployment-----Demo
Cluster Upgrade Status-----Demo
Service Exports-----Demo
Service Imports-----Demo

Phase 3: Stats Blocks

Stats by Page (46 total found)

PageCountStats
Dashboard (/)6Clusters(5), Healthy(4), Warnings(0), Errors(1), Namespaces(37), Pods(1742)
Clusters10Clusters(5), Healthy(4), Unhealthy(0), Offline(1), Nodes(37), CPUs(1653), Memory(14.4TB), Storage(5.6TB), GPUs(68), Pods(1742)
Compute8Nodes(37), CPUs(1653), Memory(14.4TB), GPUs(68), TPUs(0), Pods(1742), CPU Util(26%), Memory Util(17%)
Network5Services(8), LoadBalancers(2), NodePort(1), ClusterIP(5), Endpoints(8)
Security7Issues(6), Critical(3), High(3), Medium(2), Low(1), Privileged(1), Running as Root(2)
Sec Posture10Score(78%), Total Checks(270), Passing(210), Failing(32), Gatekeeper(19), Kyverno(16), Kubescape(81%), Falco(9), Trivy(72), Critical CVEs(10)
Events5*Total(5), Warnings(3), Normal(2), Recent(0), Errors(3) - *shown in page header, not stat bar

Stats Clickability

  • Most stats are clickable (cursor: pointer) and open detail views
  • Zero-value stats (Warnings=0, Unhealthy=0) may not be clickable (expected)

Phase 4: Drill-Down Views

#Drill-Down TypeTriggerWorksNotes
1ClusterDrillDownClick cluster rowYESModal: AI Assistant, resource boxes, rename
2DeploymentDrillDownClick deploymentYESModal: Overview/Pods/Events/Describe/YAML tabs, Scale +/-
3ResourceDetailModalClick pod/eventYESModal: Overview/Labels/Related/Describe/Logs/Events/YAML tabs
4GPUDetailModalClick GPU statYESGPU inventory per node
5CPUDetailModalClick CPU statYESCPU allocation per node
6MemoryDetailModalClick Memory statYESMemory per node
7StorageDetailModalClick Storage statYESStorage per node
8SecurityIssuesClick chevronYESInline expansion (not modal)
9OPA/KyvernoClick policyYESInline expansion

Issues Found

Fixed

  1. FeedbackModal missing "Esc close" hint - Added keyboard hints to FeedbackModal.tsx and FeatureRequestModal.tsx

Noted (Not Bugs)

  1. Active Alerts / Alert Rules cards missing Refresh button - May be intentional (auto-refresh)
  2. Kyverno Policies missing ClusterFilter - May be intentional (demo data)
  3. Resource Capacity missing Search - May be intentional (uses Show/Sort only)
  4. Namespace RBAC missing Search - May be intentional
  5. ESC closes ALL stacked modals - When CPU/Memory/Storage detail is open on top of ClusterDetail, ESC closes both
  6. Some pages have no stats bar - Storage, Alerts, Workloads, GitOps, Data Compliance, Deploy, Arcade - by design
  7. Dashboard.tsx HMR duplicate declaration - Transient HMR cache issue, resolved by dev server restart

Card Control Consistency Analysis

  • Full controls (Show/Sort/Search/Refresh/ClusterFilter): Most list-type cards
  • Partial controls: Visual/chart cards have only Refresh + ClusterFilter
  • No controls: Demo data cards, utility cards, game cards
  • Pattern is consistent: List cards get full controls, visual cards get minimal controls

Phase 5: Agent API Endpoint Testing

Instruction: Please test all API endpoints in the agent and determine that they work correctly.

Agent Endpoints (http://127.0.0.1:8585)

HTTP Endpoints

#MethodPathAuthTest
1GET/healthNoHealth check: status, version, cluster count, AI provider
2GET/clustersYesList all kubeconfig contexts
3POST/rename-contextYesRename a kubeconfig context (body: oldName, newName)
4GET/nodesYesList nodes (query: cluster)
5GET/gpu-nodesYesList GPU-enabled nodes (query: cluster)
6GET/podsYesList pods (query: cluster, namespace)
7GET/eventsNoGet events (query: cluster, namespace, object, limit)
8GET/namespacesNoList namespaces (query: cluster)
9GET/deploymentsNoList deployments (query: cluster, namespace)
10GET/cluster-healthYesGet cluster health status (query: cluster)
11GET/settings/keysNoGet API key status (without exposing keys)
12POST/settings/keysNoSave/configure API key (body: provider, apiKey, model)
13DELETE/settings/keys/{provider}NoRemove API key (providers: claude, openai, gemini)

WebSocket Endpoint

#PathAuthMessage Types
14WS /wsYeshealth, clusters, kubectl, chat, claude, list_agents, select_agent

Test Protocol

  1. curl -s http://127.0.0.1:8585/health | jq โ€” Verify agent is running
  2. For each GET endpoint: curl -s http://127.0.0.1:8585/{path}?{params} | jq
  3. Verify response status, data structure, and content
  4. Check for errors, empty responses, or unexpected data
  5. Test WebSocket via websocat ws://127.0.0.1:8585/ws

Windows PowerShell note: curl in PowerShell is an alias for Invoke-WebRequest. Use curl.exe instead, or use Invoke-RestMethod: curl.exe -s http://127.0.0.1:8585/health or Invoke-RestMethod http://127.0.0.1:8585/health


Test Environment