);
};
diff --git a/web/src/pages/Feed.test.tsx b/web/src/pages/Feed.test.tsx
new file mode 100644
--- /dev/null
+++ b/web/src/pages/Feed.test.tsx
@@ -0,0 +1,145 @@
+import { api } from "$lib/api";
+import { toast } from "$lib/toast";
+import { cleanup, fireEvent, render, screen, waitFor, within } from "@solidjs/testing-library";
+import { JSX } from "solid-js";
+import { afterEach, describe, expect, it, vi } from "vitest";
+import Feed from "./Feed";
+
+const { mockNavigate } = vi.hoisted(() => ({ mockNavigate: vi.fn() }));
+
+vi.mock(
+ "$lib/api",
+ () => ({
+ api: {
+ getFeedFollows: vi.fn(),
+ getFeedTrending: vi.fn(),
+ forkDeck: vi.fn(),
+ follow: vi.fn(),
+ unfollow: vi.fn(),
+ getFollowers: vi.fn(),
+ },
+ }),
+);
+
+vi.mock("$lib/toast", () => ({ toast: { success: vi.fn(), error: vi.fn() } }));
+
+vi.mock(
+ "@solidjs/router",
+ () => ({
+ useNavigate: () => mockNavigate,
+ A: (props: { href: string; children: JSX.Element }) =>