bb9c4b5582
* fix(tabs): clamp ListContainer chevron scrolling to the scrollable range (#6749) * chore(deps): bump react-aria dependencies (#6752) * chore(deps): bump tailwind-variants to v3.3.1 (#6760) * chore(docs): release note for 3.2.4 * test(react): behavioral testing infra (#6754) * fix(link): expose data-slot on link root * fix(react): put style export condition before default * test(react): behavioral testing infra and suites * chore(testing): own vitest-browser-react and clarify coverage gates * chore: remove pinned version * fix(autocomplete): prevent popover from clipping the last options (#6766) * chore(docs): update release note * fix(styles): prevent subpixel border overflow on badge (#6768) * chore(docs): update release note * fix(styles): allow backdrop click to dismiss modal with scroll outside (#6770) * chore(docs): update release note * fix(tooltip): restore exit animation when swapping between tooltips (#6772) * chore(docs): update release note --------- Co-authored-by: Tyler <56234978+runnerboy22@users.noreply.github.com> Co-authored-by: Tianen Pang <32772271+tianenpang@users.noreply.github.com>
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import type {ComponentProps} from "react";
|
|
|
|
import {render, screen, setupUser} from "@heroui/testing/helpers";
|
|
|
|
import {Input} from "@/components/input";
|
|
|
|
describe("Input", () => {
|
|
let user: ReturnType<typeof setupUser>;
|
|
|
|
beforeAll(() => {
|
|
user = setupUser();
|
|
});
|
|
|
|
const renderInput = (props: ComponentProps<typeof Input> = {}) =>
|
|
render(<Input aria-label="Name" placeholder="John" {...props} />);
|
|
|
|
it("renders with textbox role and accessible name", () => {
|
|
renderInput();
|
|
|
|
expect(screen.getByRole("textbox", {name: "Name"})).toBeInTheDocument();
|
|
});
|
|
|
|
it("exposes BEM block and data-slot", () => {
|
|
renderInput();
|
|
const input = screen.getByRole("textbox", {name: "Name"});
|
|
|
|
expect(input).toHaveAttribute("data-slot", "input");
|
|
expect(input.className).toEqual(expect.stringContaining("input"));
|
|
});
|
|
|
|
it("exposes variant BEM modifier", () => {
|
|
renderInput({variant: "secondary"});
|
|
|
|
expect(screen.getByRole("textbox", {name: "Name"}).className).toEqual(
|
|
expect.stringContaining("input--secondary"),
|
|
);
|
|
});
|
|
|
|
it("supports typing and calls onChange", async () => {
|
|
const onChange = vi.fn();
|
|
|
|
renderInput({onChange});
|
|
const input = screen.getByRole("textbox", {name: "Name"});
|
|
|
|
await user.type(input, "Ada");
|
|
expect(input).toHaveValue("Ada");
|
|
expect(onChange).toHaveBeenCalled();
|
|
});
|
|
|
|
it("supports disabled state", () => {
|
|
renderInput({disabled: true});
|
|
|
|
expect(screen.getByRole("textbox", {name: "Name"})).toBeDisabled();
|
|
});
|
|
});
|