diff --git a/src/components/ui/__tests__/sheet-section.test.tsx b/src/components/ui/__tests__/sheet-section.test.tsx
new file mode 100644
index 000000000..b3f719c71
--- /dev/null
+++ b/src/components/ui/__tests__/sheet-section.test.tsx
@@ -0,0 +1,74 @@
+import { describe, expect, it } from "vitest";
+import { renderToStaticMarkup } from "react-dom/server";
+
+import { SheetSection, SheetSectionCount } from "../sheet-section";
+
+describe("", () => {
+ it("renders the title and summary slot on the trigger row", () => {
+ const html = renderToStaticMarkup(
+ summary-badge}>
+
section body
+ ,
+ );
+ expect(html).toContain("More tags");
+ expect(html).toContain("summary-badge");
+ });
+
+ it("renders children inside an open section", () => {
+ // Radix Collapsible omits the content subtree while collapsed, so the
+ // body is asserted on an expanded section.
+ const html = renderToStaticMarkup(
+
+
section body
+ ,
+ );
+ expect(html).toContain("section body");
+ });
+
+ it("starts collapsed by default and open when defaultOpen", () => {
+ const closed = renderToStaticMarkup(
+
+
x
+ ,
+ );
+ const open = renderToStaticMarkup(
+
+
x
+ ,
+ );
+ expect(closed).toContain('data-state="closed"');
+ expect(open).toContain('data-state="open"');
+ });
+
+ it("hides the leading icon from assistive tech", () => {
+ const html = renderToStaticMarkup(
+ }>
+