mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-10 02:25:56 +00:00
fix(ui): clarify compact Kubernetes tables
Contract-Neutral: Responsive Kubernetes table presentation and browser coverage only; no subsystem contract changes
This commit is contained in:
@@ -1,43 +1,37 @@
|
||||
{
|
||||
"version": 1,
|
||||
"base_sha": "207779529bf9dcbf3168529b03b19d270a332171",
|
||||
"verified_at": "2026-08-04T17:30:39Z",
|
||||
"base_sha": "8d0b53245fdcfc1b90060289b5a92de3cd011810",
|
||||
"verified_at": "2026-08-04T17:59:01Z",
|
||||
"result": "passed",
|
||||
"changed_paths": [
|
||||
"frontend-modern/src/features/standalone/AgentsMachinesTable.tsx",
|
||||
"frontend-modern/src/index.css"
|
||||
"frontend-modern/src/components/Infrastructure/ResourceDetailDrawer.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesDeploymentsTable.tsx"
|
||||
],
|
||||
"content_sha256": {
|
||||
"frontend-modern/src/features/standalone/AgentsMachinesTable.tsx": "36495918506ee371af8dbaa8cba57556573deb24bb8687f7eae3ef8f1d2ebc02",
|
||||
"frontend-modern/src/index.css": "f54fadadbe33afa3c74c8c272c5d82a099c9176bba0e4df93b9d2f6e53026a39"
|
||||
"frontend-modern/src/components/Infrastructure/ResourceDetailDrawer.tsx": "0686cbc5576f24f2d1ec7fa6a73040c4409598d2cb8864977103fcecc15be6bb",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesDeploymentsTable.tsx": "fcd177f88a6969aa3aa1c0549f789c69afca077168193dfad0455c034b95dd0d"
|
||||
},
|
||||
"routes": [
|
||||
"/standalone/machines",
|
||||
"/proxmox/overview",
|
||||
"/proxmox/storage?tab=disks&source=proxmox-all",
|
||||
"/settings/system-updates",
|
||||
"/settings/support/reporting",
|
||||
"/settings/infrastructure/agent-doctor",
|
||||
"/settings/monitoring/availability"
|
||||
"/kubernetes/workloads",
|
||||
"/kubernetes/overview",
|
||||
"/proxmox/ceph",
|
||||
"/proxmox/storage"
|
||||
],
|
||||
"viewports": [
|
||||
{ "width": 375, "height": 900 },
|
||||
{ "width": 768, "height": 900 },
|
||||
{ "width": 1024, "height": 900 },
|
||||
{ "width": 1440, "height": 900 }
|
||||
{ "width": 1440, "height": 1000 }
|
||||
],
|
||||
"states": [
|
||||
"Rendered the Machines table with its default columns and with the user-selected IP column at phone and wide desktop sizes",
|
||||
"Verified that a selected primary IP remains in the compact machine identity subtitle while the dedicated column is container-hidden",
|
||||
"Verified that the selected sortable IP column appears once the actual machine table pane reaches 80rem at a 1440px viewport",
|
||||
"Rendered Proxmox overview workload and node drawers, workload history, and physical-disk history details at 375px",
|
||||
"Rendered update, reporting, agent-doctor, and availability settings surfaces at phone, tablet, and desktop widths"
|
||||
"Rendered the Kubernetes deployments inventory and an expanded deployment drawer at phone width",
|
||||
"Rendered the expanded Kubernetes cluster drawer on its Overview, Namespaces, and Deployments tabs at phone width",
|
||||
"Rendered an expanded Ceph cluster with Pools and Services tables at phone, tablet, and desktop widths",
|
||||
"Rendered an expanded Proxmox ZFS storage pool with trend, configuration, and pool details at phone, tablet, and desktop widths"
|
||||
],
|
||||
"interactions": [
|
||||
"Opened Filters, View preferences, and Columns on Machines; enabled IP, resized from 375px to 1440px, then reset the saved preference",
|
||||
"Confirmed the Machines table and page have equal client and scroll widths at 375px and 1440px after the IP-column change",
|
||||
"Pinned IP in the Proxmox workload column picker at 375px and confirmed the requested column appears with deliberate table-only scrolling before reset",
|
||||
"Expanded a Proxmox workload, switched to its History tab, expanded a Proxmox node, and expanded a physical disk without page overflow",
|
||||
"Inspected final mobile pixels for the compact Machines table and the expanded Proxmox node drawer"
|
||||
"Expanded checkout-api and verified that the deployment table retained its primary readiness and age information without document or table overflow",
|
||||
"Expanded Production EU, switched between Namespaces and Deployments, and verified all four resource-detail tabs remain fully visible in the 298px drawer tablist",
|
||||
"Confirmed the Kubernetes namespace and deployment drawer tables each fit their 296px containers and that deployment readiness reads current/desired",
|
||||
"Expanded Mock Cluster Ceph and west-c-service-pool, inspected final mobile pixels, and confirmed equal client and scroll widths at 375px, 768px, and 1440px"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -155,6 +155,8 @@ const DrawerContent: Component<ResourceDetailDrawerProps> = (props) => {
|
||||
|
||||
<Subtabs
|
||||
class="mb-1"
|
||||
listClass="!gap-2 sm:!gap-6"
|
||||
tabClass="!px-0.5 !text-xs sm:!px-1 sm:!text-sm"
|
||||
ariaLabel="Resource detail sections"
|
||||
value={drawer.activeTab()}
|
||||
onChange={(value) =>
|
||||
|
||||
@@ -8,6 +8,7 @@ import {
|
||||
PlatformSortableTableHead,
|
||||
PlatformTableNumberValue,
|
||||
PlatformTableRelativeTimeValue,
|
||||
PlatformResponsiveTableLabel,
|
||||
PlatformTableToolbar,
|
||||
PlatformTableEmptyState,
|
||||
createPlatformTableFilterState,
|
||||
@@ -214,7 +215,7 @@ export const KubernetesDeploymentsTable: Component<{
|
||||
sortKey="ready"
|
||||
class="md:w-[7%]"
|
||||
>
|
||||
Ready
|
||||
<PlatformResponsiveTableLabel compact="Rdy" full="Ready" />
|
||||
</PlatformSortableTableHead>
|
||||
<PlatformSortableTableHead
|
||||
kind="numeric-value"
|
||||
@@ -222,7 +223,7 @@ export const KubernetesDeploymentsTable: Component<{
|
||||
sortKey="available"
|
||||
class="md:w-[9%]"
|
||||
>
|
||||
Available
|
||||
<PlatformResponsiveTableLabel compact="Avail" full="Available" />
|
||||
</PlatformSortableTableHead>
|
||||
<PlatformSortableTableHead
|
||||
kind="numeric-value"
|
||||
@@ -307,6 +308,9 @@ export const KubernetesDeploymentsTable: Component<{
|
||||
<PlatformTableNumberValue
|
||||
value={deployment.kubernetes?.readyReplicas ?? 0}
|
||||
/>
|
||||
<span class="k8s-deployment-ready-total">
|
||||
/{deployment.kubernetes?.desiredReplicas ?? 0}
|
||||
</span>
|
||||
</TableCell>
|
||||
<TableCell
|
||||
class={`${getPlatformTableCellClassForKind('numeric-value')} text-base-content`}
|
||||
|
||||
@@ -66,7 +66,9 @@ describe('KubernetesDeploymentsTable', () => {
|
||||
expect(screen.getByText('Desired')).toBeInTheDocument();
|
||||
expect(screen.getByText('Updated')).toBeInTheDocument();
|
||||
expect(screen.getByText('Ready')).toBeInTheDocument();
|
||||
expect(screen.getByText('Rdy')).toBeInTheDocument();
|
||||
expect(screen.getByText('Available')).toBeInTheDocument();
|
||||
expect(screen.getByText('Avail')).toBeInTheDocument();
|
||||
// observedGeneration is deliberately not a column: the raw number is
|
||||
// unactionable without the spec generation beside it.
|
||||
expect(screen.queryByText('Observed')).toBeNull();
|
||||
@@ -78,6 +80,7 @@ describe('KubernetesDeploymentsTable', () => {
|
||||
expect(screen.getByText('4')).toBeInTheDocument();
|
||||
expect(screen.getByText('3')).toBeInTheDocument();
|
||||
expect(screen.getAllByText('2')).toHaveLength(2);
|
||||
expect(document.querySelector('.k8s-deployment-ready-total')).toHaveTextContent('/4');
|
||||
expect(screen.queryByText('12')).toBeNull();
|
||||
expect(screen.getByText('2h ago')).toBeInTheDocument();
|
||||
expect(
|
||||
|
||||
Reference in New Issue
Block a user