diff --git a/web/src/components/MemoCommentSection.tsx b/web/src/components/MemoCommentSection.tsx
index 3904fbb0..a1e7e936 100644
--- a/web/src/components/MemoCommentSection.tsx
+++ b/web/src/components/MemoCommentSection.tsx
@@ -102,7 +102,7 @@ const MemoCommentSection = ({ memo, comments, parentPage, hasMoreComments, isFet
{showEditor && EditorComponent && (
)}
{comments.map((comment) => (
-
)}
vi.fn());
+
+vi.mock("@/hooks/useMemoQueries", () => ({
+ useUpdateMemo: () => ({ mutate: mockUpdateMemo }),
+}));
+
+vi.mock("@/components/MemoView/MemoViewContext", () => ({
+ useMemoViewContext: () => ({
+ memo: {
+ name: "memos/1",
+ content: "- [ ] task one",
+ relations: [],
+ attachments: [],
+ reactions: [],
+ },
+ }),
+ useMemoViewDerived: () => ({
+ readonly: false,
+ }),
+}));
+
+describe(" check-all regression (#6143)", () => {
+ it("reflects checked=true arriving after mounting unchecked (Check all tasks)", () => {
+ // remark-gfm renders `- [ ]` with `checked` undefined.
+ const { rerender } = render();
+
+ const checkbox = screen.getByRole("checkbox");
+ expect(checkbox).toHaveAttribute("aria-checked", "false");
+
+ // "Check all tasks" updates memo content; the markdown re-renders with checked=true.
+ rerender();
+ expect(checkbox).toHaveAttribute("aria-checked", "true");
+ });
+
+ it("reflects checked reverting to undefined (Uncheck all tasks)", () => {
+ const { rerender } = render();
+
+ const checkbox = screen.getByRole("checkbox");
+ expect(checkbox).toHaveAttribute("aria-checked", "true");
+
+ // remark-gfm passes undefined (not false) for `- [ ]` items.
+ rerender();
+ expect(checkbox).toHaveAttribute("aria-checked", "false");
+ });
+});