diff --git a/frontend-modern/src/components/shared/FilterBar/AddFilterMenu.tsx b/frontend-modern/src/components/shared/FilterBar/AddFilterMenu.tsx index bc098ef4c..91e047225 100644 --- a/frontend-modern/src/components/shared/FilterBar/AddFilterMenu.tsx +++ b/frontend-modern/src/components/shared/FilterBar/AddFilterMenu.tsx @@ -114,7 +114,7 @@ export const AddFilterMenu: Component = (props) => { aria-label="Filter" class={`${filterSelectClass} min-w-[9rem] disabled:cursor-not-allowed disabled:opacity-50`} > - diff --git a/frontend-modern/src/components/shared/FilterBar/FilterBar.test.tsx b/frontend-modern/src/components/shared/FilterBar/FilterBar.test.tsx index fd31ee990..39da13cc1 100644 --- a/frontend-modern/src/components/shared/FilterBar/FilterBar.test.tsx +++ b/frontend-modern/src/components/shared/FilterBar/FilterBar.test.tsx @@ -57,6 +57,8 @@ describe('FilterBar', () => { expect(setType).toHaveBeenCalledWith('vm'); const filterSelect = screen.getByRole('combobox', { name: 'Filter' }); + expect(filterSelect).toHaveValue(''); + expect(within(filterSelect).getByRole('option', { name: 'Add filter' })).toBeEnabled(); expect( within(filterSelect).queryByRole('option', { name: 'Type: VMs' }), ).not.toBeInTheDocument(); diff --git a/frontend-modern/src/features/proxmox/ProxmoxRecoverableTable.tsx b/frontend-modern/src/features/proxmox/ProxmoxRecoverableTable.tsx index bd91a8bfa..d4a393dca 100644 --- a/frontend-modern/src/features/proxmox/ProxmoxRecoverableTable.tsx +++ b/frontend-modern/src/features/proxmox/ProxmoxRecoverableTable.tsx @@ -242,6 +242,7 @@ export function ProxmoxRecoverableTable(props: { class="border-t border-border bg-surface-alt px-3 py-1.5 text-[11px] font-semibold uppercase tracking-[0.14em] text-base-content" > {group.label} + {' '} {group.items.length} {group.items.length === 1 ? 'backup' : 'backups'} diff --git a/frontend-modern/src/features/proxmox/__tests__/ProxmoxBackupsTable.test.tsx b/frontend-modern/src/features/proxmox/__tests__/ProxmoxBackupsTable.test.tsx index c77e81c6d..86b990ec5 100644 --- a/frontend-modern/src/features/proxmox/__tests__/ProxmoxBackupsTable.test.tsx +++ b/frontend-modern/src/features/proxmox/__tests__/ProxmoxBackupsTable.test.tsx @@ -5,6 +5,7 @@ import { afterEach, describe, expect, it, vi } from 'vitest'; import { ProxmoxBackupsTable } from '../ProxmoxBackupsTable'; import type { Resource } from '@/types/resource'; +import { getRecoveryFullDateLabel } from '@/utils/recoveryDatePresentation'; // ProxmoxBackupsTable reads URL search params (node/type scope filters), so it // must render inside a Router context. @@ -143,6 +144,11 @@ describe('ProxmoxBackupsTable', () => { expect(screen.getByRole('columnheader', { name: /source/i })).toBeInTheDocument(); expect(screen.getAllByText('PBS').length).toBeGreaterThan(0); expect(screen.getByText('main / minipc')).toBeInTheDocument(); + expect( + screen.getByRole('cell', { + name: `${getRecoveryFullDateLabel('2026-05-25')} 3 backups`, + }), + ).toBeInTheDocument(); expect(apiFetchMock).toHaveBeenCalledWith('/api/backups/pbs'); expect(apiFetchMock).toHaveBeenCalledWith('/api/backups/pve'); });