diff --git a/ui/src/components/ChatHandoffIndicator.test.tsx b/ui/src/components/ChatHandoffIndicator.test.tsx new file mode 100644 index 00000000..906870ee --- /dev/null +++ b/ui/src/components/ChatHandoffIndicator.test.tsx @@ -0,0 +1,8 @@ +// @vitest-environment jsdom +import { describe, it } from "vitest"; + +describe("ChatHandoffIndicator", () => { + it.todo("renders content text between two hr elements"); + it.todo("has aria-label for agent handoff"); + it.todo("hr elements have aria-hidden=true"); +}); diff --git a/ui/src/components/ChatSpecCard.test.tsx b/ui/src/components/ChatSpecCard.test.tsx new file mode 100644 index 00000000..a950e42c --- /dev/null +++ b/ui/src/components/ChatSpecCard.test.tsx @@ -0,0 +1,14 @@ +// @vitest-environment jsdom +import { describe, it } from "vitest"; + +describe("ChatSpecCard", () => { + it.todo("renders four spec sections: What, Why, Constraints, Success"); + it.todo("parses JSON content and displays field values"); + it.todo("shows error fallback on JSON parse failure"); + it.todo("Send to PM button calls onHandoff with spec content"); + it.todo("Edit button switches to textarea edit mode"); + it.todo("Save changes button disabled when all fields empty"); + it.todo("Discard button reverts to read-only mode"); + it.todo("Save as Draft button adds [Draft] badge"); + it.todo("renders with role=region and aria-label=Specification"); +}); diff --git a/ui/src/components/ChatStatusUpdateBadge.test.tsx b/ui/src/components/ChatStatusUpdateBadge.test.tsx new file mode 100644 index 00000000..c6db512e --- /dev/null +++ b/ui/src/components/ChatStatusUpdateBadge.test.tsx @@ -0,0 +1,8 @@ +// @vitest-environment jsdom +import { describe, it } from "vitest"; + +describe("ChatStatusUpdateBadge", () => { + it.todo("renders CheckCircle2 icon, agent name, and task reference"); + it.todo("View task link navigates to issue detail"); + it.todo("has role=status on container"); +}); diff --git a/ui/src/components/ChatTaskCreatedBadge.test.tsx b/ui/src/components/ChatTaskCreatedBadge.test.tsx new file mode 100644 index 00000000..4ab62d2b --- /dev/null +++ b/ui/src/components/ChatTaskCreatedBadge.test.tsx @@ -0,0 +1,9 @@ +// @vitest-environment jsdom +import { describe, it } from "vitest"; + +describe("ChatTaskCreatedBadge", () => { + it.todo("shows Creating task... when taskId is not provided"); + it.todo("renders taskId, taskTitle, and View task link when resolved"); + it.todo("View task link has correct aria-label"); + it.todo("has role=status on container"); +}); diff --git a/ui/src/hooks/useBrainstormerDefault.test.ts b/ui/src/hooks/useBrainstormerDefault.test.ts new file mode 100644 index 00000000..f790a743 --- /dev/null +++ b/ui/src/hooks/useBrainstormerDefault.test.ts @@ -0,0 +1,9 @@ +// @vitest-environment jsdom +import { describe, it } from "vitest"; + +describe("useBrainstormerDefault", () => { + it.todo("returns general role agent ID when available"); + it.todo("returns first by createdAt when multiple general agents exist"); + it.todo("returns null when no agents loaded"); + it.todo("returns null when no general agent exists"); +});