29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
// @vitest-environment jsdom
|
|
|
|
import "@testing-library/jest-dom/vitest";
|
|
import { render, screen } from "@testing-library/react";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
import { Progress } from ".";
|
|
|
|
describe("Progress accessibility wrapper", () => {
|
|
it("uses its string label as an accessible-name fallback", () => {
|
|
render(<Progress label="Project progress" value={50} />);
|
|
expect(screen.getByRole("progressbar", { name: "Project progress" })).toBeInTheDocument();
|
|
});
|
|
|
|
it("preserves explicit aria-label and aria-labelledby contracts", () => {
|
|
const { rerender } = render(<Progress aria-label="Explicit progress" label="Visible label" value={50} />);
|
|
expect(screen.getByRole("progressbar", { name: "Explicit progress" })).toBeInTheDocument();
|
|
|
|
rerender(
|
|
<>
|
|
<span id="external-progress-label">External progress</span>
|
|
<Progress aria-labelledby="external-progress-label" label="Visible label" value={50} />
|
|
</>
|
|
);
|
|
const progress = screen.getByRole("progressbar", { name: "External progress" });
|
|
expect(progress).not.toHaveAttribute("aria-label");
|
|
});
|
|
});
|