diff --git a/app/(marketing)/learn/page.tsx b/app/(marketing)/learn/page.tsx index 38ada81..271cdb5 100644 --- a/app/(marketing)/learn/page.tsx +++ b/app/(marketing)/learn/page.tsx @@ -31,11 +31,13 @@ export default function LearnPage() { {/* * Single responsive render: ContentThumbnailTemplate variant="responsive" - * uses to swap horizontal/vertical art at smd (530px). The - * container switches from a vertical flex stack ( to swap horizontal/vertical art at smd (530px). Wrap and + * center leftover cards so a short last row is not left-aligned. */} -
+
{allPosts.map((post) => (
-
+
@@ -82,7 +82,7 @@ function ContentThumbnailTemplateView({ className="pointer-events-none size-full object-cover" />
-
+
@@ -124,7 +124,7 @@ function ContentThumbnailTemplateView({ className="pointer-events-none size-full object-cover" /> -
+
diff --git a/tests/pages/learn.test.tsx b/tests/pages/learn.test.tsx index 6011ff2..67645d2 100644 --- a/tests/pages/learn.test.tsx +++ b/tests/pages/learn.test.tsx @@ -83,12 +83,12 @@ describe("LearnPage", () => { }); it("renders one card per post (single responsive grid, no duplication)", () => { - const { container } = render(); + render(); - const grid = container.querySelector(".smd\\:grid"); - expect(grid).toBeTruthy(); + const grid = screen.getByTestId("learn-article-grid"); + expect(grid).toHaveClass("smd:justify-center", "smd:flex-wrap"); - const links = within(grid as HTMLElement).getAllByRole("link"); + const links = within(grid).getAllByRole("link"); expect(links).toHaveLength(mockPosts.length); expect(links[0]).toHaveAttribute( diff --git a/tests/unit/ContentThumbnailTemplate.test.jsx b/tests/unit/ContentThumbnailTemplate.test.jsx index 48636bc..0bb05ff 100644 --- a/tests/unit/ContentThumbnailTemplate.test.jsx +++ b/tests/unit/ContentThumbnailTemplate.test.jsx @@ -35,6 +35,8 @@ describe("ContentThumbnailTemplate", () => { const container = screen.getByRole("link"); const thumbnailDiv = container.querySelector("div.relative"); expect(thumbnailDiv).toHaveClass("aspect-[260/390]", "w-full"); + const copy = thumbnailDiv?.querySelector(".z-20"); + expect(copy).toHaveClass("max-h-[48%]", "overflow-hidden"); }); it("should display post title and description", () => { @@ -61,6 +63,8 @@ describe("ContentThumbnailTemplate", () => { const container = screen.getByRole("link"); const thumbnailDiv = container.querySelector("div.relative"); expect(thumbnailDiv).toHaveClass("aspect-[320/225.5]", "w-full"); + const copy = thumbnailDiv?.querySelector(".z-20"); + expect(copy).toHaveClass("max-h-[48%]", "overflow-hidden"); }); it("should render fixed vertical dimensions when sizing is fixed", () => {