import { render, screen } from "@testing-library/react"; import { TextField, TextFieldSize, TextFieldType, } from "../../components/TextField/TextField"; import { axe } from "jest-axe"; describe("TextField", () => { // Fixes some jest-axe issues const { getComputedStyle } = window; window.getComputedStyle = (elt) => getComputedStyle(elt); // Fixes some jest-axe issues test("Should render component correctly.", () => { const { container } = render(); expect(container.firstChild).toMatchSnapshot(); }); }); describe("Accessibility", () => { test("Should have no accessibility violations.", async () => { const { container } = render(); const results = await axe(container); expect(results).toHaveNoViolations(); }); }); describe("Props", () => { test.each(["small", "medium", "large"])( "Should render size correctly.", (size) => { render(); expect(screen.getByLabelText("textfield")).toHaveClass(size); } ); test("Should render disabled correctly.", () => { render(); expect(screen.getByLabelText("textfield")).toHaveClass( "disabled" ); }); test("Should render label correctly.", () => { render(); expect(screen.getByLabelText("label")).toBeInTheDocument(); }); test.each([ "email", "number", "password", "search", "tel", "text", "time", "url", ])("Should render type correctly.", (type) => { render(); expect(screen.getByLabelText("textfield")).toHaveAttribute( "type", type ); }); test("Should render trailing icon correctly.", () => { render( ); expect(screen.getByText("trailing")).toBeInTheDocument(); }); });