diff --git a/frontend/src/components/panels/DetailPanel.tsx b/frontend/src/components/panels/DetailPanel.tsx index 96d8cd4..cddd301 100644 --- a/frontend/src/components/panels/DetailPanel.tsx +++ b/frontend/src/components/panels/DetailPanel.tsx @@ -234,7 +234,7 @@ export function DetailPanel({ onEdit }: DetailPanelProps) { {data.mac && } {data.os && } {data.check_method && } - {data.last_seen && } + {data.last_seen && } {/* Properties section */} diff --git a/frontend/src/components/panels/__tests__/DetailPanel.test.tsx b/frontend/src/components/panels/__tests__/DetailPanel.test.tsx index 52c3c5f..1c12e31 100644 --- a/frontend/src/components/panels/__tests__/DetailPanel.test.tsx +++ b/frontend/src/components/panels/__tests__/DetailPanel.test.tsx @@ -487,4 +487,27 @@ describe('DetailPanel', () => { expect(screen.getByText('health').tagName).not.toBe('A') }) }) + + describe('Last Seen formatting', () => { + it('renders a valid date when last_seen has +00:00 offset (no Z)', () => { + setupStore({ last_seen: '2026-05-10T17:54:38.221403+00:00' }) + render() + const row = screen.getByText('Last Seen').parentElement + expect(row?.textContent).not.toMatch(/Invalid Date/) + }) + + it('renders a valid date when last_seen ends with Z', () => { + setupStore({ last_seen: '2026-05-10T17:54:38.221403Z' }) + render() + const row = screen.getByText('Last Seen').parentElement + expect(row?.textContent).not.toMatch(/Invalid Date/) + }) + + it('treats naive ISO strings as UTC', () => { + setupStore({ last_seen: '2026-05-10T17:54:38' }) + render() + const row = screen.getByText('Last Seen').parentElement + expect(row?.textContent).not.toMatch(/Invalid Date/) + }) + }) })