diff --git a/tests/FullWidthGrid.test.svelte b/tests/FullWidthGrid.test.svelte
deleted file mode 100644
index 40157f83..00000000
--- a/tests/FullWidthGrid.test.svelte
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- Column
- Column
- Column
- Column
-
-
diff --git a/tests/Grid.test.svelte b/tests/Grid.test.svelte
deleted file mode 100644
index b6a74224..00000000
--- a/tests/Grid.test.svelte
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- Column
- Column
- Column
- Column
-
-
diff --git a/tests/Grid/Grid.test.svelte b/tests/Grid/Grid.test.svelte
new file mode 100644
index 00000000..96cf0199
--- /dev/null
+++ b/tests/Grid/Grid.test.svelte
@@ -0,0 +1,44 @@
+
+
+{#if as}
+
+
+
+{:else}
+
+
+
+{/if}
diff --git a/tests/Grid/Grid.test.ts b/tests/Grid/Grid.test.ts
new file mode 100644
index 00000000..e9d7be1c
--- /dev/null
+++ b/tests/Grid/Grid.test.ts
@@ -0,0 +1,137 @@
+import { render } from "@testing-library/svelte";
+import Grid from "./Grid.test.svelte";
+
+describe("Grid", () => {
+ describe("Default", () => {
+ it("should render as a div by default", () => {
+ const { container } = render(Grid);
+ const grid = container.querySelector("div.bx--grid");
+ expect(grid).toHaveClass("bx--grid");
+ });
+
+ it("should support rest props", () => {
+ const { container } = render(Grid, {
+ props: {
+ "data-testid": "custom-grid",
+ "aria-label": "Grid layout",
+ },
+ });
+ const grid = container.querySelector("[data-testid='custom-grid']");
+ expect(grid).toHaveClass("bx--grid");
+ expect(grid).toHaveAttribute("aria-label", "Grid layout");
+ });
+ });
+
+ it("should render condensed variant", () => {
+ const { container } = render(Grid, {
+ props: { condensed: true },
+ });
+ const grid = container.querySelector("div.bx--grid");
+ expect(grid).toHaveClass("bx--grid--condensed");
+ });
+
+ it("should render narrow variant", () => {
+ const { container } = render(Grid, {
+ props: { narrow: true },
+ });
+ const grid = container.querySelector("div.bx--grid");
+ expect(grid).toHaveClass("bx--grid--narrow");
+ });
+
+ it("should render full width variant", () => {
+ const { container } = render(Grid, {
+ props: { fullWidth: true },
+ });
+ const grid = container.querySelector("div.bx--grid");
+ expect(grid).toHaveClass("bx--grid--full-width");
+ });
+
+ it("should render with no gutter", () => {
+ const { container } = render(Grid, {
+ props: { noGutter: true },
+ });
+ const grid = container.querySelector("div.bx--grid");
+ expect(grid).toHaveClass("bx--no-gutter");
+ });
+
+ it("should render with no left gutter", () => {
+ const { container } = render(Grid, {
+ props: { noGutterLeft: true },
+ });
+ const grid = container.querySelector("div.bx--grid");
+ expect(grid).toHaveClass("bx--no-gutter--left");
+ });
+
+ it("should render with no right gutter", () => {
+ const { container } = render(Grid, {
+ props: {
+ noGutterRight: true,
+ },
+ });
+ const grid = container.querySelector("div.bx--grid");
+ expect(grid).toHaveClass("bx--no-gutter--right");
+ });
+
+ it("should render with row padding", () => {
+ const { container } = render(Grid, {
+ props: {
+ padding: true,
+ },
+ });
+ const grid = container.querySelector("div.bx--grid");
+ expect(grid).toHaveClass("bx--row-padding");
+ });
+
+ it("should render as a custom element using the as prop", () => {
+ const { container } = render(Grid, { props: { as: true } });
+
+ const header = container.querySelector("header");
+ expect(header).toHaveClass("bx--grid");
+ });
+
+ it("should pass all variant classes and rest props to custom element", () => {
+ const { container } = render(Grid, {
+ props: {
+ as: true,
+ condensed: true,
+ narrow: true,
+ fullWidth: true,
+ noGutter: true,
+ padding: true,
+ "data-testid": "custom-header",
+ "aria-label": "Custom header grid",
+ },
+ });
+ const header = container.querySelector("[data-testid='custom-header']");
+ expect(header).toHaveClass(
+ "bx--grid",
+ "bx--grid--condensed",
+ "bx--grid--narrow",
+ "bx--grid--full-width",
+ "bx--no-gutter",
+ "bx--row-padding",
+ );
+ expect(header).toHaveAttribute("aria-label", "Custom header grid");
+ });
+
+ it("should combine multiple variant classes", () => {
+ const { container } = render(Grid, {
+ props: {
+ condensed: true,
+ narrow: true,
+ noGutterLeft: true,
+ noGutterRight: true,
+ padding: true,
+ },
+ });
+ const grid = container.querySelector("div.bx--grid");
+ expect(grid).toHaveClass(
+ "bx--grid",
+ "bx--grid--condensed",
+ "bx--grid--narrow",
+ "bx--no-gutter--left",
+ "bx--no-gutter--right",
+ "bx--row-padding",
+ );
+ });
+});
diff --git a/tests/NarrowGrid.test.svelte b/tests/NarrowGrid.test.svelte
deleted file mode 100644
index ff498960..00000000
--- a/tests/NarrowGrid.test.svelte
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- Column
- Column
- Column
- Column
-
-