diff --git a/tests/DatePicker.test.svelte b/tests/DatePicker.test.svelte
deleted file mode 100644
index b7bce24a..00000000
--- a/tests/DatePicker.test.svelte
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
-
-
- {
- console.log(e.detail);
- }}
->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/DatePicker/DatePicker.test.svelte b/tests/DatePicker/DatePicker.test.svelte
new file mode 100644
index 00000000..33592238
--- /dev/null
+++ b/tests/DatePicker/DatePicker.test.svelte
@@ -0,0 +1,55 @@
+
+
+ {
+ console.log("change", e.detail);
+ }}
+>
+
+
diff --git a/tests/DatePicker/DatePicker.test.ts b/tests/DatePicker/DatePicker.test.ts
new file mode 100644
index 00000000..bd72b875
--- /dev/null
+++ b/tests/DatePicker/DatePicker.test.ts
@@ -0,0 +1,105 @@
+import { render, screen } from "@testing-library/svelte";
+import { user } from "../setup-tests";
+import DatePicker from "./DatePicker.test.svelte";
+import DatePickerRange from "./DatePickerRange.test.svelte";
+
+describe("DatePicker", () => {
+ it("renders with default props", async () => {
+ render(DatePicker);
+
+ const input = screen.getByLabelText("Date");
+
+ expect(input).toBeInTheDocument();
+ expect(input).toHaveAttribute("placeholder", "mm/dd/yyyy");
+
+ await user.type(input, "01/01/2023");
+ expect(input).toHaveValue("01/01/2023");
+ });
+
+ it("renders light variant", () => {
+ const { container } = render(DatePicker, { light: true });
+
+ const wrapper = container.querySelector(".bx--date-picker");
+ expect(wrapper).toHaveClass("bx--date-picker--light");
+ });
+
+ it("renders short variant", () => {
+ const { container } = render(DatePicker, { short: true });
+
+ const wrapper = container.querySelector(".bx--date-picker");
+ expect(wrapper).toHaveClass("bx--date-picker--short");
+ });
+
+ it("renders single mode", async () => {
+ const { container } = render(DatePicker, { datePickerType: "single" });
+
+ const input = screen.getByLabelText("Date");
+ expect(input).toHaveAttribute("placeholder", "mm/dd/yyyy");
+
+ const wrapper = container.querySelector(".bx--date-picker");
+ expect(wrapper).toHaveClass("bx--date-picker--single");
+
+ expect(
+ screen.queryByLabelText("calendar-container"),
+ ).not.toBeInTheDocument();
+ await user.click(input);
+ expect(screen.getByLabelText("calendar-container")).toBeInTheDocument();
+ });
+
+ it("renders range mode", async () => {
+ const { container } = render(DatePickerRange);
+
+ const inputStart = screen.getByLabelText("Start date");
+ const inputEnd = screen.getByLabelText("End date");
+
+ expect(inputStart).toHaveAttribute("placeholder", "mm/dd/yyyy");
+ expect(inputEnd).toHaveAttribute("placeholder", "mm/dd/yyyy");
+
+ const wrapper = container.querySelector(".bx--date-picker");
+ expect(wrapper).toHaveClass("bx--date-picker--range");
+
+ expect(
+ screen.queryByLabelText("calendar-container"),
+ ).not.toBeInTheDocument();
+ await user.click(inputStart);
+ expect(screen.getByLabelText("calendar-container")).toBeInTheDocument();
+ });
+
+ it("handles disabled state", () => {
+ render(DatePicker, { disabled: true });
+ const input = screen.getByPlaceholderText("mm/dd/yyyy");
+ expect(input).toBeDisabled();
+ });
+
+ it("handles invalid state", () => {
+ const { container } = render(DatePicker, {
+ invalid: true,
+ invalidText: "Invalid date",
+ });
+ expect(screen.getByText("Invalid date")).toBeInTheDocument();
+ const wrapper = container.querySelector(".bx--date-picker-input__wrapper");
+ expect(wrapper).toHaveClass("bx--date-picker-input__wrapper--invalid");
+ });
+
+ it("handles warning state", () => {
+ const { container } = render(DatePicker, {
+ warn: true,
+ warnText: "Warning message",
+ });
+ expect(screen.getByText("Warning message")).toBeInTheDocument();
+ const wrapper = container.querySelector(".bx--date-picker-input__wrapper");
+ expect(wrapper).toHaveClass("bx--date-picker-input__wrapper--warn");
+ });
+
+ it("handles helper text", () => {
+ render(DatePicker, { helperText: "Helper message" });
+ expect(screen.getByText("Helper message")).toBeInTheDocument();
+ });
+
+ it("handles hidden label", () => {
+ render(DatePicker, { hideLabel: true });
+ const input = screen.getByLabelText("Date");
+ expect(input).toHaveAttribute("placeholder", "mm/dd/yyyy");
+ expect(screen.getByText("Date")).toHaveClass("bx--visually-hidden");
+ });
+});
diff --git a/tests/DatePicker/DatePickerRange.test.svelte b/tests/DatePicker/DatePickerRange.test.svelte
new file mode 100644
index 00000000..91400b79
--- /dev/null
+++ b/tests/DatePicker/DatePickerRange.test.svelte
@@ -0,0 +1,8 @@
+
+
+
+
+
+