From 7cdbd0d2a8db7d82db8b8534bb8e61a0ab697230 Mon Sep 17 00:00:00 2001 From: Dev Lead Agent Date: Tue, 14 Apr 2026 07:27:49 +0000 Subject: [PATCH] fix: workspace parent combobox, WCAG button text minimum 11px MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace raw Parent Workspace ID text input with a setParentId(e.target.value)} + className="w-full bg-zinc-800/60 border border-zinc-700/50 rounded-lg px-3 py-2 text-sm text-zinc-100 focus:outline-none focus:border-blue-500/60 focus:ring-1 focus:ring-blue-500/20 transition-colors" + > + + {workspaces.map((ws) => ( + + ))} + + {error && ( diff --git a/canvas/src/components/SidePanel.tsx b/canvas/src/components/SidePanel.tsx index 0a18358b..7ba93f62 100644 --- a/canvas/src/components/SidePanel.tsx +++ b/canvas/src/components/SidePanel.tsx @@ -163,7 +163,7 @@ export function SidePanel() { onClick={() => { useCanvasStore.getState().restartWorkspace(selectedNodeId).catch(() => showToast("Restart failed", "error")); }} - className="text-[9px] px-2 py-1 bg-sky-800/40 hover:bg-sky-700/50 text-sky-200 rounded transition-colors" + className="text-[11px] px-2 py-1 bg-sky-800/40 hover:bg-sky-700/50 text-sky-200 rounded transition-colors" > Restart Now diff --git a/canvas/src/components/__tests__/CreateWorkspaceDialog.test.tsx b/canvas/src/components/__tests__/CreateWorkspaceDialog.test.tsx new file mode 100644 index 00000000..38de7a8c --- /dev/null +++ b/canvas/src/components/__tests__/CreateWorkspaceDialog.test.tsx @@ -0,0 +1,130 @@ +// @vitest-environment jsdom +import { describe, it, expect, vi, beforeEach, afterEach } from "vitest"; +import { render, screen, fireEvent, waitFor, cleanup } from "@testing-library/react"; +import { CreateWorkspaceButton } from "../CreateWorkspaceDialog"; + +vi.mock("@/lib/api", () => ({ + api: { + get: vi.fn(), + post: vi.fn(), + }, +})); + +import { api } from "@/lib/api"; + +const mockGet = vi.mocked(api.get); +const mockPost = vi.mocked(api.post); + +const SAMPLE_WORKSPACES = [ + { id: "ws-1", name: "Platform Team", tier: 1 }, + { id: "ws-2", name: "Research Agent", tier: 2 }, +]; + +beforeEach(() => { + vi.clearAllMocks(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + mockGet.mockResolvedValue(SAMPLE_WORKSPACES as any); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + mockPost.mockResolvedValue({} as any); +}); + +afterEach(() => { + cleanup(); +}); + +async function openDialog() { + render(); + const btn = screen.getAllByRole("button").find((b) => b.textContent?.includes("New Workspace")); + expect(btn).toBeTruthy(); + fireEvent.click(btn!); + await waitFor(() => expect(screen.getByText("Create Workspace")).toBeTruthy()); +} + +describe("CreateWorkspaceDialog", () => { + it("opens the dialog when New Workspace button is clicked", async () => { + await openDialog(); + expect(screen.getByText("Create Workspace")).toBeTruthy(); + }); + + it("renders a setFormCron(e.target.value)} className="w-full text-[10px] bg-zinc-800 border border-zinc-700 rounded px-2 py-1 text-zinc-200 font-mono" /> -
+
{cronToHuman(formCron)}
- +