diff --git a/frontend/src/widgets/ArtifactWidget.test.tsx b/frontend/src/widgets/ArtifactWidget.test.tsx
new file mode 100644
index 00000000..6a24973c
--- /dev/null
+++ b/frontend/src/widgets/ArtifactWidget.test.tsx
@@ -0,0 +1,21 @@
+import { render, screen } from "@testing-library/react";
+import { ArtifactWidget } from "./ArtifactWidget";
+
+test("renders artifact content view-only with no response path", () => {
+ const onRespond = vi.fn();
+ render(
+
+ );
+ // (a) content is rendered
+ expect(screen.getByText("SELECT 1")).toBeInTheDocument();
+ // (b) no response path: no responding button, onRespond never called
+ expect(screen.queryByRole("button")).not.toBeInTheDocument();
+ expect(onRespond).not.toHaveBeenCalled();
+});
diff --git a/frontend/src/widgets/MultiselectWidget.test.tsx b/frontend/src/widgets/MultiselectWidget.test.tsx
index 4d5881fa..19b47658 100644
--- a/frontend/src/widgets/MultiselectWidget.test.tsx
+++ b/frontend/src/widgets/MultiselectWidget.test.tsx
@@ -81,6 +81,30 @@ test("confirm is disabled when nothing checked and allow_empty is false", async
expect(onRespond).not.toHaveBeenCalled();
});
+test("deselect-all with allow_empty false disables Conferma (empty confirm impossible)", async () => {
+ const onRespond = vi.fn();
+ render(
+
+ );
+ const btn = screen.getByRole("button", { name: /conferma/i });
+ expect(btn).not.toBeDisabled();
+ await userEvent.click(screen.getByRole("button", { name: /deseleziona tutti/i }));
+ expect(btn).toBeDisabled();
+ await userEvent.click(btn);
+ expect(onRespond).not.toHaveBeenCalled();
+});
+
test("confirm is enabled when allow_empty is false but something is checked", async () => {
const onRespond = vi.fn();
render(