feat(FN-699): auto-expand steps for re-triaged tasks with existing progress
- Auto-expand step list on TaskCard when triage tasks have done/skipped steps - Update existing triage test to use pending steps for fresh task scenario - Add tests for re-triaged tasks with completed and skipped steps
This commit is contained in:
@@ -134,7 +134,10 @@ function TaskCardComponent({
|
||||
const [editTitle, setEditTitle] = useState(task.title || "");
|
||||
const [editDescription, setEditDescription] = useState(task.description || "");
|
||||
const [isSaving, setIsSaving] = useState(false);
|
||||
const [showSteps, setShowSteps] = useState(task.column === "in-progress");
|
||||
const [showSteps, setShowSteps] = useState(
|
||||
task.column === "in-progress" ||
|
||||
(task.column === "triage" && task.steps.some(s => s.status === "done" || s.status === "skipped"))
|
||||
);
|
||||
|
||||
const titleInputRef = useRef<HTMLInputElement>(null);
|
||||
const descTextareaRef = useRef<HTMLTextAreaElement>(null);
|
||||
|
||||
@@ -1653,11 +1653,11 @@ describe("TaskCard steps auto-expand", () => {
|
||||
expect(toggle.getAttribute("aria-expanded")).toBe("true");
|
||||
});
|
||||
|
||||
it("steps are collapsed by default for 'triage' column tasks", () => {
|
||||
it("steps are collapsed by default for fresh 'triage' column tasks (no completed steps)", () => {
|
||||
const task = makeTask({
|
||||
column: "triage",
|
||||
steps: [
|
||||
{ name: "Step 1", status: "done" },
|
||||
{ name: "Step 1", status: "pending" },
|
||||
{ name: "Step 2", status: "pending" },
|
||||
],
|
||||
});
|
||||
@@ -1679,6 +1679,57 @@ describe("TaskCard steps auto-expand", () => {
|
||||
expect(toggle.getAttribute("aria-expanded")).toBe("false");
|
||||
});
|
||||
|
||||
it("steps are auto-expanded for re-triaged tasks with completed steps", () => {
|
||||
const task = makeTask({
|
||||
column: "triage",
|
||||
steps: [
|
||||
{ name: "Step 1", status: "done" },
|
||||
{ name: "Step 2", status: "pending" },
|
||||
],
|
||||
});
|
||||
|
||||
render(
|
||||
<TaskCard
|
||||
task={task}
|
||||
onOpenDetail={vi.fn()}
|
||||
addToast={noopToast}
|
||||
/>
|
||||
);
|
||||
|
||||
// Steps should be visible without clicking
|
||||
expect(screen.getByText("Step 1")).toBeDefined();
|
||||
expect(screen.getByText("Step 2")).toBeDefined();
|
||||
|
||||
// Toggle should show "Hide steps"
|
||||
const toggle = screen.getByRole("button", { name: /Hide steps/i });
|
||||
expect(toggle.getAttribute("aria-expanded")).toBe("true");
|
||||
});
|
||||
|
||||
it("steps are auto-expanded for re-triaged tasks with skipped steps", () => {
|
||||
const task = makeTask({
|
||||
column: "triage",
|
||||
steps: [
|
||||
{ name: "Step 1", status: "skipped" },
|
||||
{ name: "Step 2", status: "pending" },
|
||||
],
|
||||
});
|
||||
|
||||
render(
|
||||
<TaskCard
|
||||
task={task}
|
||||
onOpenDetail={vi.fn()}
|
||||
addToast={noopToast}
|
||||
/>
|
||||
);
|
||||
|
||||
// Steps should be visible without clicking
|
||||
expect(screen.getByText("Step 1")).toBeDefined();
|
||||
expect(screen.getByText("Step 2")).toBeDefined();
|
||||
|
||||
const toggle = screen.getByRole("button", { name: /Hide steps/i });
|
||||
expect(toggle.getAttribute("aria-expanded")).toBe("true");
|
||||
});
|
||||
|
||||
it("steps are collapsed by default for 'todo' column tasks", () => {
|
||||
const task = makeTask({
|
||||
column: "todo",
|
||||
|
||||
Reference in New Issue
Block a user