import React from "react"; import { describe, it, expect } from "vitest"; import { render, screen } from "@testing-library/react"; import "@testing-library/jest-dom/vitest"; import NumberedList from "../../app/components/type/NumberedList"; import { componentTestSuite, ComponentTestSuiteConfig, } from "../utils/componentTestSuite"; type NumberedListProps = React.ComponentProps; const mockItems = [ { title: "First step", description: "This is the first step description", }, { title: "Second step", description: "This is the second step description", }, { title: "Third step", description: "This is the third step description", }, ]; const baseProps: NumberedListProps = { items: mockItems, }; const config: ComponentTestSuiteConfig = { component: NumberedList, name: "NumberedList", props: baseProps, requiredProps: ["items"], optionalProps: { size: "M", }, primaryRole: "list", testCases: { renders: true, accessibility: true, keyboardNavigation: false, disabledState: false, errorState: false, }, }; componentTestSuite(config); // Pure presentational; no provider context needed. describe("NumberedList (behavioral tests)", () => { it("renders all items", () => { render(); expect(screen.getByText("First step")).toBeInTheDocument(); expect(screen.getByText("Second step")).toBeInTheDocument(); expect(screen.getByText("Third step")).toBeInTheDocument(); }); it("renders item descriptions", () => { render(); expect( screen.getByText("This is the first step description"), ).toBeInTheDocument(); }); it("renders numbered indicators", () => { const { container } = render(); const numbers = container.querySelectorAll("ol > li"); expect(numbers).toHaveLength(3); }); it("accepts size prop", () => { const { container } = render(); const list = container.querySelector("ol"); expect(list).toBeInTheDocument(); }); it("accepts PascalCase size prop", () => { const { container } = render(); const list = container.querySelector("ol"); expect(list).toBeInTheDocument(); }); });