﻿
[1m[46m RUN [49m[22m [36mv4.1.0 [39m[90mE:/Desktop/CICD[39m

 [32m✓[39m [30m[42m unit [49m[39m src/modules/announcements/schema.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m [30m[42m unit [49m[39m src/modules/announcements/is-announcement-visible.test.ts [2m([22m[2m15 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [31m❯[39m [30m[42m unit [49m[39m src/modules/announcements/components/announcement-card.test.tsx [2m([22m[2m16 tests[22m[2m | [22m[31m9 failed[39m[2m)[22m[33m 400[2mms[22m[39m
[31m       [31m×[31m 渲染标题与内容[39m[32m 41[2mms[22m[39m
       [32m✓[39m 渲染类型 badge（school）[32m 7[2mms[22m[39m
       [32m✓[39m 未提供 href 时不渲染外层 Link[32m 5[2mms[22m[39m
       [32m✓[39m isRead=false 时应用 ring-2 ring-primary/40 类名[32m 3[2mms[22m[39m
       [32m✓[39m isRead=true 时不应用 ring 类名[32m 3[2mms[22m[39m
       [32m✓[39m isRead=undefined 时不应用 ring 类名[32m 2[2mms[22m[39m
       [32m✓[39m isRead=false 时渲染未读 badge[32m 3[2mms[22m[39m
       [32m✓[39m isPinned=true 时渲染已置顶 badge 与 Pin 图标 fill[32m 6[2mms[22m[39m
[31m       [31m×[31m canManage=true 时渲染置顶按钮[39m[32m 144[2mms[22m[39m
[31m       [31m×[31m canManage=false 时不渲染置顶按钮[39m[32m 30[2mms[22m[39m
[31m       [31m×[31m 点击置顶按钮调用 service.togglePin[39m[32m 30[2mms[22m[39m
[31m       [31m×[31m togglePin 返回失败时回滚 isPinned 并显示 toast.error[39m[32m 20[2mms[22m[39m
[31m       [31m×[31m togglePin 抛错时回滚并显示 toast.error[39m[32m 27[2mms[22m[39m
[31m       [31m×[31m 置顶按钮支持 Enter 键触发[39m[32m 27[2mms[22m[39m
[31m       [31m×[31m 置顶按钮支持 Space 键触发[39m[32m 23[2mms[22m[39m
[31m       [31m×[31m 置顶按钮在 toggling 时禁用[39m[32m 26[2mms[22m[39m
node.exe : 
At line:1 char:1
+ & "C:\Program Files\nodejs/node.exe" "C:\Program Files\nodejs/node_mo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
[31m⎯⎯⎯⎯⎯⎯⎯[39m[1m[41m Failed Tests 9 [49m[22m[31m⎯⎯⎯⎯⎯⎯⎯[39m

[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/modules/announcements/components/announcement-card.test.tsx[2
m > [22mAnnouncementCard[2m > [22m基础渲染[2m > [22m渲染标题与内容
[31m[1mError[22m: Invalid Chai property: toBeInTheDocument[39m
[36m [2m❯[22m src/modules/announcements/components/announcement-card.test.tsx:[2m128:41[22m[39m
    [90m126|[39m       [35mconst[39m service [33m=[39m [34mcreateMockService[39m()
    [90m127|[39m       [34mrenderCard[39m(service)
    [90m128|[39m       [34mexpect[39m(screen[33m.[39m[34mgetByText[39m([32m"测试公告标题"[39m))[33m.[39m[34mtoBe
InTheDocument[39m()
    [90m   |[39m                                         [31m^[39m
    [90m129|[39m       [34mexpect[39m(screen[33m.[39m[34mgetByText[39m([32m"测试公告内容"[39m))[33m.[39m[34mtoBe
InTheDocument[39m()
    [90m130|[39m     })

[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/9]⎯[22m[39m

[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/modules/announcements/components/announcement-card.test.tsx[2
m > [22mAnnouncementCard[2m > [22misPinned 视觉与交互[2m > [22mcanManage=true 时渲染置顶按钮
[31m[1mTestingLibraryElementError[22m[39m: Found multiple elements with the role "button" and name "actions.pin"

Here are the matching elements:

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAl
lByText`)).

Ignored nodes: comments, script, style
[36m<body>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[3...
[90m [2m❯[22m Object.getElementError node_modules/@testing-library/dom/dist/config.js:[2m37:19[22m[39m
[90m [2m❯[22m getElementError node_modules/@testing-library/dom/dist/query-helpers.js:[2m20:35[22m[39m
[90m [2m❯[22m getMultipleElementsFoundError node_modules/@testing-library/dom/dist/query-helpers.js:[2m23:10[22m[
39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m55:13[22m[39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m95:19[22m[39m
[36m [2m❯[22m src/modules/announcements/components/announcement-card.test.tsx:[2m194:32[22m[39m
    [90m192|[39m       [35mconst[39m service [33m=[39m [34mcreateMockService[39m()
    [90m193|[39m       [34mrenderCard[39m(service)
    [90m194|[39m       const pinButton = screen.getByRole("button", { name: "actions.pi…
    [90m   |[39m                                [31m^[39m
    [90m195|[39m       [34mexpect[39m(pinButton)[33m.[39m[34mtoBeInTheDocument[39m()
    [90m196|[39m     })

[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/9]⎯[22m[39m

[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/modules/announcements/components/announcement-card.test.tsx[2
m > [22mAnnouncementCard[2m > [22misPinned 视觉与交互[2m > [22mcanManage=false 时不渲染置顶按钮
[31m[1mTestingLibraryElementError[22m[39m: Found multiple elements with the role "button" and name "actions.pin"

Here are the matching elements:

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAl
lByText`)).

Ignored nodes: comments, script, style
[36m<body>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[3...
[90m [2m❯[22m Object.getElementError node_modules/@testing-library/dom/dist/config.js:[2m37:19[22m[39m
[90m [2m❯[22m getElementError node_modules/@testing-library/dom/dist/query-helpers.js:[2m20:35[22m[39m
[90m [2m❯[22m getMultipleElementsFoundError node_modules/@testing-library/dom/dist/query-helpers.js:[2m23:10[22m[
39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m55:13[22m[39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m95:19[22m[39m
[36m [2m❯[22m src/modules/announcements/components/announcement-card.test.tsx:[2m205:21[22m[39m
    [90m203|[39m         [33m<[39m[33m/[39m[33mAnnouncementsServiceProvider[39m[33m>[39m
    [90m204|[39m       )
    [90m205|[39m       expect(screen.queryByRole("button", { name: "actions.pin" })).to…
    [90m   |[39m                     [31m^[39m
    [90m206|[39m     })
    [90m207|[39m

[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/9]⎯[22m[39m

[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/modules/announcements/components/announcement-card.test.tsx[2
m > [22mAnnouncementCard[2m > [22misPinned 视觉与交互[2m > [22m点击置顶按钮调用 service.togglePin
[31m[1mTestingLibraryElementError[22m[39m: Found multiple elements with the role "button" and name "actions.pin"

Here are the matching elements:

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAl
lByText`)).

Ignored nodes: comments, script, style
[36m<body>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[3...
[90m [2m❯[22m Object.getElementError node_modules/@testing-library/dom/dist/config.js:[2m37:19[22m[39m
[90m [2m❯[22m getElementError node_modules/@testing-library/dom/dist/query-helpers.js:[2m20:35[22m[39m
[90m [2m❯[22m getMultipleElementsFoundError node_modules/@testing-library/dom/dist/query-helpers.js:[2m23:10[22m[
39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m55:13[22m[39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m95:19[22m[39m
[36m [2m❯[22m src/modules/announcements/components/announcement-card.test.tsx:[2m217:32[22m[39m
    [90m215|[39m       [34mrenderCard[39m(service)
    [90m216|[39m
    [90m217|[39m       const pinButton = screen.getByRole("button", { name: "actions.pi…
    [90m   |[39m                                [31m^[39m
    [90m218|[39m       [35mawait[39m fireEvent[33m.[39m[34mclick[39m(pinButton)
    [90m219|[39m

[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/9]⎯[22m[39m

[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/modules/announcements/components/announcement-card.test.tsx[2
m > [22mAnnouncementCard[2m > [22misPinned 视觉与交互[2m > [22mtogglePin 返回失败时回滚 isPinned 并显示 toast.error
[31m[1mTestingLibraryElementError[22m[39m: Found multiple elements with the role "button" and name "actions.pin"

Here are the matching elements:

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAl
lByText`)).

Ignored nodes: comments, script, style
[36m<body>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[3...
[90m [2m❯[22m Object.getElementError node_modules/@testing-library/dom/dist/config.js:[2m37:19[22m[39m
[90m [2m❯[22m getElementError node_modules/@testing-library/dom/dist/query-helpers.js:[2m20:35[22m[39m
[90m [2m❯[22m getMultipleElementsFoundError node_modules/@testing-library/dom/dist/query-helpers.js:[2m23:10[22m[
39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m55:13[22m[39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m95:19[22m[39m
[36m [2m❯[22m src/modules/announcements/components/announcement-card.test.tsx:[2m233:32[22m[39m
    [90m231|[39m       [34mrenderCard[39m(service)
    [90m232|[39m
    [90m233|[39m       const pinButton = screen.getByRole("button", { name: "actions.pi…
    [90m   |[39m                                [31m^[39m
    [90m234|[39m       [35mawait[39m fireEvent[33m.[39m[34mclick[39m(pinButton)
    [90m235|[39m

[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/9]⎯[22m[39m

[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/modules/announcements/components/announcement-card.test.tsx[2
m > [22mAnnouncementCard[2m > [22misPinned 视觉与交互[2m > [22mtogglePin 抛错时回滚并显示 toast.error
[31m[1mTestingLibraryElementError[22m[39m: Found multiple elements with the role "button" and name "actions.pin"

Here are the matching elements:

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAl
lByText`)).

Ignored nodes: comments, script, style
[36m<body>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[3...
[90m [2m❯[22m Object.getElementError node_modules/@testing-library/dom/dist/config.js:[2m37:19[22m[39m
[90m [2m❯[22m getElementError node_modules/@testing-library/dom/dist/query-helpers.js:[2m20:35[22m[39m
[90m [2m❯[22m getMultipleElementsFoundError node_modules/@testing-library/dom/dist/query-helpers.js:[2m23:10[22m[
39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m55:13[22m[39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m95:19[22m[39m
[36m [2m❯[22m src/modules/announcements/components/announcement-card.test.tsx:[2m245:32[22m[39m
    [90m243|[39m       [34mrenderCard[39m(service)
    [90m244|[39m
    [90m245|[39m       const pinButton = screen.getByRole("button", { name: "actions.pi…
    [90m   |[39m                                [31m^[39m
    [90m246|[39m       [35mawait[39m fireEvent[33m.[39m[34mclick[39m(pinButton)
    [90m247|[39m

[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/9]⎯[22m[39m

[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/modules/announcements/components/announcement-card.test.tsx[2
m > [22mAnnouncementCard[2m > [22ma11y（P2-1）[2m > [22m置顶按钮支持 Enter 键触发
[31m[1mTestingLibraryElementError[22m[39m: Found multiple elements with the role "button" and name "actions.pin"

Here are the matching elements:

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAl
lByText`)).

Ignored nodes: comments, script, style
[36m<body>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[3...
[90m [2m❯[22m Object.getElementError node_modules/@testing-library/dom/dist/config.js:[2m37:19[22m[39m
[90m [2m❯[22m getElementError node_modules/@testing-library/dom/dist/query-helpers.js:[2m20:35[22m[39m
[90m [2m❯[22m getMultipleElementsFoundError node_modules/@testing-library/dom/dist/query-helpers.js:[2m23:10[22m[
39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m55:13[22m[39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m95:19[22m[39m
[36m [2m❯[22m src/modules/announcements/components/announcement-card.test.tsx:[2m263:32[22m[39m
    [90m261|[39m       [34mrenderCard[39m(service)
    [90m262|[39m
    [90m263|[39m       const pinButton = screen.getByRole("button", { name: "actions.pi…
    [90m   |[39m                                [31m^[39m
    [90m264|[39m       [35mawait[39m fireEvent[33m.[39m[34mkeyDown[39m(pinButton[33m,[39m { key[33m:[39m [
32m"Enter"[39m })
    [90m265|[39m

[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/9]⎯[22m[39m

[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/modules/announcements/components/announcement-card.test.tsx[2
m > [22mAnnouncementCard[2m > [22ma11y（P2-1）[2m > [22m置顶按钮支持 Space 键触发
[31m[1mTestingLibraryElementError[22m[39m: Found multiple elements with the role "button" and name "actions.pin"

Here are the matching elements:

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAl
lByText`)).

Ignored nodes: comments, script, style
[36m<body>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[3...
[90m [2m❯[22m Object.getElementError node_modules/@testing-library/dom/dist/config.js:[2m37:19[22m[39m
[90m [2m❯[22m getElementError node_modules/@testing-library/dom/dist/query-helpers.js:[2m20:35[22m[39m
[90m [2m❯[22m getMultipleElementsFoundError node_modules/@testing-library/dom/dist/query-helpers.js:[2m23:10[22m[
39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m55:13[22m[39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m95:19[22m[39m
[36m [2m❯[22m src/modules/announcements/components/announcement-card.test.tsx:[2m278:32[22m[39m
    [90m276|[39m       [34mrenderCard[39m(service)
    [90m277|[39m
    [90m278|[39m       const pinButton = screen.getByRole("button", { name: "actions.pi…
    [90m   |[39m                                [31m^[39m
    [90m279|[39m       [35mawait[39m fireEvent[33m.[39m[34mkeyDown[39m(pinButton[33m,[39m { key[33m:[39m [
32m" "[39m })
    [90m280|[39m

[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/9]⎯[22m[39m

[41m[1m FAIL [22m[49m [30m[42m unit [49m[39m src/modules/announcements/components/announcement-card.test.tsx[2
m > [22mAnnouncementCard[2m > [22ma11y（P2-1）[2m > [22m置顶按钮在 toggling 时禁用
[31m[1mTestingLibraryElementError[22m[39m: Found multiple elements with the role "button" and name "actions.pin"

Here are the matching elements:

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

Ignored nodes: comments, script, style
[36m<button[39m
  [33maria-label[39m=[32m"actions.pin"[39m
  [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-6 item
s-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
  [33mtype[39m=[32m"button"[39m
[36m>[39m
  [36m<svg[39m
    [33maria-hidden[39m=[32m"true"[39m
    [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
    [33mfill[39m=[32m"none"[39m
    [33mheight[39m=[32m"24"[39m
    [33mstroke[39m=[32m"currentColor"[39m
    [33mstroke-linecap[39m=[32m"round"[39m
    [33mstroke-linejoin[39m=[32m"round"[39m
    [33mstroke-width[39m=[32m"2"[39m
    [33mviewBox[39m=[32m"0 0 24 24"[39m
    [33mwidth[39m=[32m"24"[39m
    [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
  [36m>[39m
    [36m<path[39m
      [33md[39m=[32m"M12 17v5"[39m
    [36m/>[39m
    [36m<path[39m
      [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2
 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
    [36m/>[39m
  [36m</svg>[39m
[36m</button>[39m

(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAl
lByText`)).

Ignored nodes: comments, script, style
[36m<body>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m

[2m Test Files [22m [1m[31m1 failed[39m[22m[2m | [22m[1m[32m2 passed[39m[22m[90m (3)[39m
[2m      Tests [22m [1m[31m9 failed[39m[22m[2m | [22m[1m[32m40 passed[39m[22m[90m (49)[39m
[2m   Start at [22m 13:42:18
[2m   Duration [22m 6.09s[2m (transform 695ms, setup 0ms, import 3.98s, tests 420ms, environment 7.55s)[22m

            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[39m
        [36m<h3[39m
          [33mdata-testid[39m=[32m"card-title"[39m
        [36m>[39m
          [0m测试公告标题[0m
        [36m</h3>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex shrink-0 items-center gap-1"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"text-xs"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"default"[39m
          [36m>[39m
            [0mstatus.published[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-content"[39m
      [36m>[39m
        [36m<p[39m
          [33mclass[39m=[32m"line-clamp-3 text-sm text-muted-foreground whitespace-pre-wrap"[39m
        [36m>[39m
          [0m测试公告内容[0m
        [36m</p>[39m
        [36m<div[39m
          [33mclass[39m=[32m"flex flex-wrap items-center gap-2 text-xs text-muted-foreground"[39m
        [36m>[39m
          [36m<span[39m
            [33mclass[39m=[32m"capitalize"[39m
            [33mdata-testid[39m=[32m"badge"[39m
            [33mdata-variant[39m=[32m"outline"[39m
          [36m>[39m
            [0mtype.school[0m
          [36m</span>[39m
          [36m<span>[39m
            [0mmeta.publishedAt:{"date":"FMT:2026-06-25T00:00:00.000Z"}[0m
          [36m</span>[39m
          [36m<span[39m
            [33mclass[39m=[32m"ml-auto"[39m
          [36m>[39m
            [0mmeta.author:{"name":"管理员"}[0m
          [36m</span>[39m
        [36m</div>[39m
      [36m</div>[39m
      [36m<button[39m
        [33maria-label[39m=[32m"actions.pin"[39m
        [33mclass[39m=[32m"text-muted-foreground hover:text-foreground absolute right-3 top-3 z-10 inline-flex size-
6 items-center justify-center rounded-md transition-colors hover:bg-accent disabled:opacity-50"[39m
        [33mtype[39m=[32m"button"[39m
      [36m>[39m
        [36m<svg[39m
          [33maria-hidden[39m=[32m"true"[39m
          [33mclass[39m=[32m"lucide lucide-pin h-3.5 w-3.5 transition-colors"[39m
          [33mfill[39m=[32m"none"[39m
          [33mheight[39m=[32m"24"[39m
          [33mstroke[39m=[32m"currentColor"[39m
          [33mstroke-linecap[39m=[32m"round"[39m
          [33mstroke-linejoin[39m=[32m"round"[39m
          [33mstroke-width[39m=[32m"2"[39m
          [33mviewBox[39m=[32m"0 0 24 24"[39m
          [33mwidth[39m=[32m"24"[39m
          [33mxmlns[39m=[32m"http://www.w3.org/2000/svg"[39m
        [36m>[39m
          [36m<path[39m
            [33md[39m=[32m"M12 17v5"[39m
          [36m/>[39m
          [36m<path[39m
            [33md[39m=[32m"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v
-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z"[39m
          [36m/>[39m
        [36m</svg>[39m
      [36m</button>[39m
    [36m</div>[39m
  [36m</div>[39m
  [36m<div>[39m
    [36m<div[39m
      [33mclass[39m=[32m"relative h-full transition-colors hover:bg-accent/50"[39m
      [33mdata-testid[39m=[32m"card"[39m
    [36m>[39m
      [36m<div[39m
        [33mdata-testid[39m=[32m"card-header"[39m
      [36m>[3...
[90m [2m❯[22m Object.getElementError node_modules/@testing-library/dom/dist/config.js:[2m37:19[22m[39m
[90m [2m❯[22m getElementError node_modules/@testing-library/dom/dist/query-helpers.js:[2m20:35[22m[39m
[90m [2m❯[22m getMultipleElementsFoundError node_modules/@testing-library/dom/dist/query-helpers.js:[2m23:10[22m[
39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m55:13[22m[39m
[90m [2m❯[22m node_modules/@testing-library/dom/dist/query-helpers.js:[2m95:19[22m[39m
[36m [2m❯[22m src/modules/announcements/components/announcement-card.test.tsx:[2m290:32[22m[39m
    [90m288|[39m       [34mrenderCard[39m(service)
    [90m289|[39m
    [90m290|[39m       const pinButton = screen.getByRole("button", { name: "actions.pi…
    [90m   |[39m                                [31m^[39m
    [90m291|[39m       fireEvent[33m.[39m[34mclick[39m(pinButton)
    [90m292|[39m

[31m[2m⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/9]⎯[22m[39m

