// packages/core/tests/components/slider/slider.test.tsx
import { fireEvent, render, screen } from "@solidjs/testing-library";
import { describe, expect, it } from "vitest";
import { Slider } from "../../../src/components/slider/index";
describe("Slider", () => {
it("thumb has role=slider", () => {
render(() => (
));
expect(screen.getByRole("slider")).toBeTruthy();
});
it("thumb has correct aria attributes", () => {
render(() => (
));
const thumb = screen.getByRole("slider");
expect(thumb.getAttribute("aria-valuenow")).toBe("50");
expect(thumb.getAttribute("aria-valuemin")).toBe("0");
expect(thumb.getAttribute("aria-valuemax")).toBe("100");
});
it("ArrowRight increases value by step", () => {
render(() => (
));
const thumb = screen.getByRole("slider");
thumb.focus();
fireEvent.keyDown(thumb, { key: "ArrowRight" });
expect(thumb.getAttribute("aria-valuenow")).toBe("55");
});
it("ArrowLeft decreases value by step", () => {
render(() => (
));
const thumb = screen.getByRole("slider");
thumb.focus();
fireEvent.keyDown(thumb, { key: "ArrowLeft" });
expect(thumb.getAttribute("aria-valuenow")).toBe("45");
});
it("Home sets value to min", () => {
render(() => (
));
const thumb = screen.getByRole("slider");
thumb.focus();
fireEvent.keyDown(thumb, { key: "Home" });
expect(thumb.getAttribute("aria-valuenow")).toBe("10");
});
it("End sets value to max", () => {
render(() => (
));
const thumb = screen.getByRole("slider");
thumb.focus();
fireEvent.keyDown(thumb, { key: "End" });
expect(thumb.getAttribute("aria-valuenow")).toBe("100");
});
it("value is clamped at max", () => {
render(() => (
));
const thumb = screen.getByRole("slider");
thumb.focus();
fireEvent.keyDown(thumb, { key: "ArrowRight" });
expect(thumb.getAttribute("aria-valuenow")).toBe("100");
});
it("value is clamped at min", () => {
render(() => (
));
const thumb = screen.getByRole("slider");
thumb.focus();
fireEvent.keyDown(thumb, { key: "ArrowLeft" });
expect(thumb.getAttribute("aria-valuenow")).toBe("0");
});
it("controlled value", () => {
render(() => (
{}}>
));
expect(screen.getByRole("slider").getAttribute("aria-valuenow")).toBe("30");
});
it("disabled thumb does not respond to keyboard", () => {
render(() => (
));
const thumb = screen.getByRole("slider");
thumb.focus();
fireEvent.keyDown(thumb, { key: "ArrowRight" });
expect(thumb.getAttribute("aria-valuenow")).toBe("50");
});
});