diff --git a/react-app/src/components/Chip/Chip.test.tsx b/react-app/src/components/Chip/Chip.test.tsx
new file mode 100644
index 000000000..0e1a15532
--- /dev/null
+++ b/react-app/src/components/Chip/Chip.test.tsx
@@ -0,0 +1,42 @@
+import { render } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import { describe, expect, test, vi } from "vitest";
+import { Chip } from ".";
+
+describe("Chip", () => {
+ test("onChipClick is called", async () => {
+ const mockedOnChipClick = vi.fn();
+
+ const { container } = render();
+
+ const chipButton = container.getElementsByClassName(
+ "h-8 py-2 cursor-pointer",
+ )[0];
+
+ await userEvent.click(chipButton);
+
+ expect(mockedOnChipClick).toHaveBeenCalled();
+ });
+
+ test("onIconClick is called", async () => {
+ const mockedOnIconClick = vi.fn();
+
+ const { getByRole } = render();
+
+ const chipButton = getByRole("button");
+
+ await userEvent.click(chipButton);
+
+ expect(mockedOnIconClick).toHaveBeenCalled();
+ });
+
+ test("noIcon or destructive variants do not render an icon", () => {
+ const { queryByRole, rerender } = render();
+
+ expect(queryByRole("button")).not.toBeInTheDocument();
+
+ rerender();
+
+ expect(queryByRole("button")).not.toBeInTheDocument();
+ });
+});