diff --git a/src/ui/sidebar/tree/FolderItem/FolderItem.tsx b/src/ui/sidebar/tree/FolderItem/FolderItem.tsx
index 6ebad7dd4..5e7bfe3eb 100644
--- a/src/ui/sidebar/tree/FolderItem/FolderItem.tsx
+++ b/src/ui/sidebar/tree/FolderItem/FolderItem.tsx
@@ -168,7 +168,18 @@ export function FolderItem({
style={depth > 0 ? { paddingLeft: rem(depth * 12) } : undefined}
>
-
+
{!flat && isOpen && (
diff --git a/src/ui/tests/sidebar/tree/FolderItem/FolderItem.test.tsx b/src/ui/tests/sidebar/tree/FolderItem/FolderItem.test.tsx
new file mode 100644
index 000000000..ada1e93a2
--- /dev/null
+++ b/src/ui/tests/sidebar/tree/FolderItem/FolderItem.test.tsx
@@ -0,0 +1,73 @@
+import { fireEvent, render } from "@testing-library/react";
+import { expect, it, vi } from "vitest";
+import type { HostFolder } from "@/types/ui-types";
+import { FolderItem } from "@/sidebar/tree/FolderItem/FolderItem";
+
+vi.mock("@/lib/ServerStatusContext", () => ({
+ useServerStatus: () => ({ getStatus: () => "online" }),
+}));
+vi.mock("@/sidebar/tree/HostItem/HostItem", () => ({
+ HostItem: () => null,
+ statusCheckEnabled: () => true,
+}));
+
+const folder = {
+ name: "Production",
+ path: "Production",
+ children: [],
+} as unknown as HostFolder;
+
+function renderFolder(onToggleFolder = vi.fn()) {
+ const noop = vi.fn();
+ render(
+ ,
+ );
+ return onToggleFolder;
+}
+
+it("never nests the folder actions inside a button element", () => {
+ renderFolder();
+ for (const button of document.querySelectorAll("button")) {
+ expect(button.parentElement?.closest("button")).toBeNull();
+ }
+});
+
+it("toggles the folder by click, Enter and Space", () => {
+ const onToggle = renderFolder();
+ const header = document.querySelector('[role="button"][aria-expanded]')!;
+ fireEvent.click(header);
+ fireEvent.keyDown(header, { key: "Enter" });
+ fireEvent.keyDown(header, { key: " " });
+ expect(onToggle).toHaveBeenCalledTimes(3);
+ expect(onToggle).toHaveBeenCalledWith("Production");
+});
+
+it("ignores keys pressed on a folder action", () => {
+ const onToggle = renderFolder();
+ const action = document.querySelector("button")!;
+ fireEvent.keyDown(action, { key: "Enter" });
+ expect(onToggle).not.toHaveBeenCalled();
+});