import { describe, test, expect, vi } from "vitest"; import { screen, waitFor } from "@testing-library/react"; import { renderWithProviders as render } from "../utils/test-utils"; import HowItWorksPage from "../../app/(marketing)/how-it-works/page"; import messages from "../../messages/en/index"; vi.mock("next/dynamic", () => ({ default: (importFn) => { const Component = vi.fn(() => ( Related articles )); return Component; }, })); vi.mock("../../app/components/sections/ContentBanner", () => ({ default: ({ post, variant }) => ( {post.frontmatter.title} {post.frontmatter.description} ), })); vi.mock("../../app/components/sections/AskOrganizer", () => ({ default: ({ title, subtitle, buttonText }) => ( {title} {subtitle} {buttonText} ), })); describe("HowItWorksPage", () => { const page = messages.pages.howItWorks; test("renders banner, body sections, related articles, and ask organizer", async () => { render(); expect(screen.getByTestId("content-banner")).toBeInTheDocument(); expect( screen.getByRole("heading", { name: page.banner.title }), ).toBeInTheDocument(); expect(screen.getByTestId("content-banner")).toHaveAttribute( "data-variant", "guide", ); expect(screen.getByText(page.banner.description)).toBeInTheDocument(); await waitFor(() => { expect(screen.getByTestId("related-articles")).toBeInTheDocument(); }); expect(screen.getByTestId("ask-organizer")).toBeInTheDocument(); expect( screen.getByText(messages.pages.home.askOrganizer.title), ).toBeInTheDocument(); expect( screen.getByText(/How the Platform Works: From Chaos to Clarity/), ).toBeInTheDocument(); expect( screen.getByText(/mutual aid network, manage an open-source project/), ).toBeInTheDocument(); }); });
{post.frontmatter.description}
{subtitle}