import { render, screen, within } from "@testing-library/react"; import PrivacyPage, { metadata } from "./page"; it("preserves breadcrumb navigation and a breadcrumb-only JSON-LD graph", () => { const { container } = render(); const breadcrumb = screen.getByRole("navigation", { name: "Breadcrumb" }); const breadcrumbLinks = within(breadcrumb).getAllByRole("link"); expect(breadcrumbLinks.map((link) => link.textContent)).toEqual([ "Início", "Privacidade", ]); expect(breadcrumbLinks[0]).toHaveAttribute("href", "/"); expect(breadcrumbLinks[1]).toHaveAttribute("href", "/privacidade"); expect(breadcrumbLinks[1]).toHaveAttribute("aria-current", "page"); const scripts = container.querySelectorAll( 'script[type="application/ld+json"]', ); expect(scripts).toHaveLength(1); const jsonLd = JSON.parse(scripts[0]?.textContent ?? "{}"); expect(jsonLd["@graph"]).toHaveLength(1); expect(jsonLd["@graph"][0]["@type"]).toBe("BreadcrumbList"); expect(JSON.stringify(jsonLd)).not.toMatch( /Person|Organization|LocalBusiness|ProfessionalService|Service/, ); expect(jsonLd["@graph"][0].itemListElement).toEqual([ { "@type": "ListItem", position: 1, name: "Início", item: "https://evandro.dev.br", }, { "@type": "ListItem", position: 2, name: "Privacidade", item: "https://evandro.dev.br/privacidade", }, ]); }); it("mentions no GitHub link and no English jargon in the visible text", () => { const { container } = render(); expect(container.textContent).not.toMatch(/github/i); expect(container.textContent).not.toMatch(/\b(loader|endpoint)\b/i); for (const link of screen.getAllByRole("link")) { expect(link.getAttribute("href")).not.toMatch(/github/i); } }); it("keeps the lime fill for contact actions only", () => { const { container } = render(); expect(container.querySelector(".ds-link-accent")).toBeNull(); }); it("uses privacy-specific canonical metadata", () => { expect(metadata).toMatchObject({ title: expect.stringMatching(/privacidade/i), description: expect.any(String), alternates: { canonical: "https://evandro.dev.br/privacidade" }, }); });