diff --git a/frontend-modern/src/features/agents/AgentsMachinesTable.tsx b/frontend-modern/src/features/agents/AgentsMachinesTable.tsx index 053b168a32..1a377825a4 100644 --- a/frontend-modern/src/features/agents/AgentsMachinesTable.tsx +++ b/frontend-modern/src/features/agents/AgentsMachinesTable.tsx @@ -1,5 +1,4 @@ import { For, Show, type Component, type JSX } from 'solid-js'; -import { ResourceDetailDrawer } from '@/components/Infrastructure/ResourceDetailDrawer'; import { StackedDiskBar } from '@/components/Workloads/StackedDiskBar'; import { StackedMemoryBar } from '@/components/Workloads/StackedMemoryBar'; import { ResponsiveMetricCell } from '@/components/shared/responsive'; @@ -15,6 +14,7 @@ import { import { TableCard } from '@/components/shared/TableCard'; import { TableCardHeader } from '@/components/shared/TableCardHeader'; import { + PlatformResourceDetailTableRow, createPlatformResourceDetailState, getPlatformResourceDetailRowClass, } from '@/features/platformPage/PlatformResourceDetailTableRow'; @@ -343,26 +343,13 @@ export const AgentsMachinesTable: Component<{ {formatLastSeen(machine.lastSeen)} - - - -
event.stopPropagation()} - > - drawer.close(machine)} - /> -
-
-
-
+ drawer.close(machine)} + /> ); }} diff --git a/frontend-modern/src/features/agents/AgentsPageSurface.tsx b/frontend-modern/src/features/agents/AgentsPageSurface.tsx index 8390a873b5..72dcb42596 100644 --- a/frontend-modern/src/features/agents/AgentsPageSurface.tsx +++ b/frontend-modern/src/features/agents/AgentsPageSurface.tsx @@ -43,7 +43,7 @@ export function AgentsPageSurface() { }); return ( -
+
{ it('keeps provider overview pages in the parent-table plus child-inventory stack', () => { for (const source of overviewSurfaceSources) { - expect(source).toContain('
'); + expect(source).toMatch(/]*class="space-y-4"/); expect(source).toContain(' { expect(vmwarePageSurfaceSource).not.toContain(' { @@ -270,5 +283,17 @@ describe('platform overview layout guardrails', () => { /getPlatformTableHeadClassForKind\('numeric-value'\)[\s\S]{0,200}?VMs/, ); expect(vsphereHostsTableSource).toContain('hidden md:table-cell'); + expect(agentsMachinesTableSource).toMatch( + /getPlatformTableHeadClassForKind\('name'\)[\s\S]{0,200}?Machine/, + ); + expect(agentsMachinesTableSource).toMatch( + /getPlatformTableHeadClassForKind\('metric-bar'\)[\s\S]{0,200}?CPU/, + ); + expect(agentsMachinesTableSource).toMatch( + /getPlatformTableHeadClassForKind\('metric-bar'\)[\s\S]{0,200}?Memory/, + ); + expect(agentsMachinesTableSource).toMatch( + /getPlatformTableHeadClassForKind\('metric-bar'\)[\s\S]{0,200}?Disk/, + ); }); }); diff --git a/frontend-modern/src/features/platformPage/__tests__/platformResourceTableDrawers.test.tsx b/frontend-modern/src/features/platformPage/__tests__/platformResourceTableDrawers.test.tsx index d1abad270e..b42f8af172 100644 --- a/frontend-modern/src/features/platformPage/__tests__/platformResourceTableDrawers.test.tsx +++ b/frontend-modern/src/features/platformPage/__tests__/platformResourceTableDrawers.test.tsx @@ -2,6 +2,7 @@ import { cleanup, fireEvent, render, screen } from '@solidjs/testing-library'; import { afterEach, describe, expect, it, vi } from 'vitest'; import type { Resource } from '@/types/resource'; +import { AgentsMachinesTable } from '@/features/agents/AgentsMachinesTable'; import { KubernetesClustersTable } from '@/features/kubernetes/KubernetesClustersTable'; import { KubernetesNodesTable } from '@/features/kubernetes/KubernetesNodesTable'; import { TrueNASStorageTopologyTable } from '@/features/truenas/TrueNASStorageTopologyTable'; @@ -34,6 +35,10 @@ vi.mock('@/components/Workloads/StackedMemoryBar', () => ({ StackedMemoryBar: () =>
, })); +vi.mock('@/components/Workloads/StackedDiskBar', () => ({ + StackedDiskBar: () =>
, +})); + const makeResource = ({ id, type, @@ -82,6 +87,37 @@ afterEach(() => { }); describe('platform resource table drawers', () => { + it('opens canonical resource details from Agent machine rows', async () => { + const machine = makeResource({ + id: 'agent:mac-mini', + type: 'agent', + name: 'mac-mini', + platformType: 'agent', + sourceType: 'agent', + agent: { + hostname: 'mac-mini.local', + osName: 'macOS', + osVersion: '15.2', + agentVersion: '6.0.0', + platform: 'darwin', + uptimeSeconds: 96_000, + }, + }); + + render(() => ( + } + emptyTitle="No machines" + emptyDescription="No machines" + /> + )); + + const row = screen.getByText('mac-mini').closest('tr'); + expect(row).toBeTruthy(); + await expectRowOpensResourceDrawer(row!, machine.id); + }); + it('opens canonical resource details from TrueNAS system rows', async () => { const system = makeResource({ id: 'agent:truenas-main',