diff --git a/frontend-modern/src/features/proxmox/__tests__/ProxmoxBackupsTable.test.tsx b/frontend-modern/src/features/proxmox/__tests__/ProxmoxBackupsTable.test.tsx index 091bc44a3..3e484a705 100644 --- a/frontend-modern/src/features/proxmox/__tests__/ProxmoxBackupsTable.test.tsx +++ b/frontend-modern/src/features/proxmox/__tests__/ProxmoxBackupsTable.test.tsx @@ -1,6 +1,6 @@ import { cleanup, fireEvent, render, screen, waitFor } from '@solidjs/testing-library'; import { Route, Router } from '@solidjs/router'; -import type { JSX } from 'solid-js'; +import { createSignal, type JSX } from 'solid-js'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { ProxmoxBackupsTable } from '../ProxmoxBackupsTable'; @@ -495,6 +495,31 @@ describe('ProxmoxBackupsTable', () => { expect(screen.getAllByText('Snapshot').length).toBeGreaterThan(0); }); + it('keeps coverage evidence expanded across repeated workload snapshots', async () => { + mockBackupAPIs(); + const [workloads, setWorkloads] = createSignal([workloadResource]); + renderInRouter(() => ( + } workloads={workloads()} /> + )); + + await screen.findAllByText('pbs-docker'); + await fireEvent.click(screen.getByRole('link', { name: /coverage/i })); + await fireEvent.click(screen.getByRole('button', { name: /expand details for pbs-docker/i })); + + for (let snapshot = 1; snapshot <= 3; snapshot += 1) { + const name = `pbs-docker-snapshot-${snapshot}`; + setWorkloads([{ ...workloadResource, name, displayName: name }]); + + // Assert the new snapshot reached the rendered table, rather than merely + // checking that a stale expanded row survived. + await screen.findAllByText(name); + expect(screen.getByRole('columnheader', { name: /posture/i })).toBeInTheDocument(); + expect(screen.getByText('Restore evidence')).toBeInTheDocument(); + expect(screen.getAllByText('PVE file').length).toBeGreaterThan(0); + expect(screen.getAllByText('Snapshot').length).toBeGreaterThan(0); + } + }); + it('filters the backup feed by search term', async () => { mockBackupAPIs();