From 63075c47d47c0129b772cfe1b33db138135fd5fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sun, 2 Aug 2026 09:10:58 +0200 Subject: [PATCH] test(backup): prove the skip report reaches the screen, not just the wire The server names every unresolved catalogue key in its response and in the audit row, and the integration suite holds that end. This is the other one: a report nobody sees is the same silence the naming replaced. The panel moves into its own exported component so it can be rendered against a report directly. The SSR smoke tests in this directory cannot drive a state transition, and a render proven only by reading it is not proven. Pinned: every key is printed rather than summed away, each key carries its own count and catalogue, an empty report renders nothing at all, and the copy resolves in a second locale. --- .../backups-restore-skip-report.test.tsx | 81 +++++++++++ src/components/admin/backups-section.tsx | 130 ++++++++++-------- 2 files changed, 157 insertions(+), 54 deletions(-) create mode 100644 src/components/admin/__tests__/backups-restore-skip-report.test.tsx diff --git a/src/components/admin/__tests__/backups-restore-skip-report.test.tsx b/src/components/admin/__tests__/backups-restore-skip-report.test.tsx new file mode 100644 index 000000000..5a23df5af --- /dev/null +++ b/src/components/admin/__tests__/backups-restore-skip-report.test.tsx @@ -0,0 +1,81 @@ +/** + * The restore's skip report has to reach a human. + * + * The server names every catalogue key it could not resolve, in the response + * and in the audit row, and the integration suite proves that end. This is the + * other end: a report that a person never sees is the same silence the naming + * exists to end, so the panel gets its own coverage rather than riding on the + * fact that a state setter is wired up somewhere. + * + * Pinned here: + * 1. every skipped key is printed, not just a total, + * 2. each key carries its own link count and its catalogue, + * 3. an empty report renders nothing at all — a panel that appears after a + * clean restore trains the operator to ignore it, + * 4. the copy resolves in more than one locale, so a self-hoster running the + * German UI is told the same thing. + * + * Mutation check: total the links instead of listing them (drop the `