diff --git a/__tests__/pages/home.spec.tsx b/__tests__/pages/home.spec.tsx new file mode 100644 index 0000000..b215861 --- /dev/null +++ b/__tests__/pages/home.spec.tsx @@ -0,0 +1,64 @@ +import { render, screen } from "@testing-library/react" + +import Home, { metadata } from "@/app/page" +import { LP_GRID_ITEMS } from "lp-items" + +describe("Home", () => { + beforeEach(() => { + render() + }) + + it("renders the main heading", () => { + expect(screen.getByText("Next.js Enterprise Boilerplate")).toBeInTheDocument() + }) + + it("renders the description paragraph", () => { + expect(screen.getByText(/Jumpstart your enterprise project/)).toBeInTheDocument() + }) + + it("renders both buttons with correct text and links", () => { + const getStartedButton = screen.getByText("Get started") + const deployNowButton = screen.getByText("Deploy Now") + + expect(getStartedButton).toBeInTheDocument() + expect(deployNowButton).toBeInTheDocument() + expect(getStartedButton.closest('a')).toHaveAttribute('href', 'https://github.com/Blazity/next-enterprise') + expect(deployNowButton.closest('a')).toHaveAttribute('href', 'https://vercel.com/new/git/external?repository-url=https://github.com/Blazity/next-enterprise') + }) + + it("renders all grid items with their content", () => { + LP_GRID_ITEMS.forEach((item) => { + expect(screen.getByText(item.title)).toBeInTheDocument() + expect(screen.getByText(item.description)).toBeInTheDocument() + }) + }) + + it("renders grid items in the correct structure", () => { + const gridItems = screen.getAllByRole('heading', { level: 3 }) + expect(gridItems).toHaveLength(LP_GRID_ITEMS.length) + + gridItems.forEach((item) => { + const parent = item.closest('div') + expect(parent).toHaveClass('flex', 'flex-col', 'items-center', 'justify-center', 'text-center') + }) + }) + + it("has correct metadata configuration", () => { + expect(metadata).toEqual({ + title: "Next.js Enterprise Boilerplate", + twitter: { + card: "summary_large_image", + }, + openGraph: { + url: "https://next-enterprise.vercel.app/", + images: [ + { + width: 1200, + height: 630, + url: "https://raw.githubusercontent.com/Blazity/next-enterprise/main/.github/assets/project-logo.png", + }, + ], + }, + }) + }) +}) \ No newline at end of file