From ddea7cd0bf126ef087ee9dbb04a2bb5432f93747 Mon Sep 17 00:00:00 2001 From: "pulse-triage[bot]" <249995291+pulse-triage[bot]@users.noreply.github.com> Date: Sat, 5 Sep 2026 01:06:14 +0100 Subject: [PATCH] Guard expanded backup evidence across workload polling Issue #1869 reports views resetting during refresh. Exercise the mounted backup coverage view through three replacement workload snapshots so losing expanded restore evidence is caught before release. Confirm each refreshed workload name renders to exclude stale-state false positives. Contract-Neutral: regression coverage only; no runtime or API changes. Change-source: pulse-maintainer --- .../__tests__/ProxmoxBackupsTable.test.tsx | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) 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();