import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; describe("home progress list layout", () => { it("keeps the continue reading list scrollable after three visible books", () => { const styles = readFileSync(new URL("../styles/app.css", import.meta.url), "utf8"); const continueGrid = styles.match(/\.continue-grid\s*\{[^}]+\}/)?.[0] ?? ""; const continueTile = styles.match(/\.continue-tile\s*\{[^}]+\}/)?.[0] ?? ""; expect(continueGrid).toContain("--continue-visible-rows: 3"); expect(continueGrid).toContain("--continue-tile-block-size: 112px"); expect(continueGrid).toContain("max-height: calc((var(--continue-tile-block-size) * var(--continue-visible-rows)) + (10px * (var(--continue-visible-rows) - 1)))"); expect(continueGrid).toContain("overflow-y: auto"); expect(continueGrid).toContain("scrollbar-gutter: stable"); expect(continueTile).toContain("block-size: var(--continue-tile-block-size)"); expect(continueTile).toContain("overflow: hidden"); }); it("keeps home book cards scoped and simplified", () => { const source = readFileSync(new URL("./HomePage.tsx", import.meta.url), "utf8"); expect(source).toContain("renderHomeBook"); expect(source).toContain("home-book-card"); expect(source).not.toContain(" { const styles = readFileSync(new URL("../styles/app.css", import.meta.url), "utf8"); const bookGrid = styles.match(/\.book-grid\s*\{[^}]+\}/)?.[0] ?? ""; const homeBookGrid = styles.match(/\.home-book-grid\s*\{[^}]+\}/)?.[0] ?? ""; expect(bookGrid).toContain("max-width: calc((var(--book-grid-column-min) * 5) + (var(--book-grid-gap) * 4))"); expect(homeBookGrid).toContain("max-width: calc((var(--book-grid-column-min) * 5) + (var(--book-grid-gap) * 4))"); }); });