diff --git a/frontend/src/pages/home/Home.test.tsx b/frontend/src/pages/home/Home.test.tsx index 116d7e1c..3340a8db 100644 --- a/frontend/src/pages/home/Home.test.tsx +++ b/frontend/src/pages/home/Home.test.tsx @@ -149,6 +149,15 @@ describe("Home", () => { renderWithProviders(); expect(screen.getByText("Leaderboards")).toBeInTheDocument(); + expect( + screen.getByText(/GPU MODE's mission is to make high-performance/i), + ).toBeInTheDocument(); + expect(screen.getByText(/Core Automation/i)).toBeInTheDocument(); + expect(screen.getByText(/Northflank/i)).toBeInTheDocument(); + expect(screen.getByRole("link", { name: /reach out/i })).toHaveAttribute( + "href", + "mailto:mark@gpumode.com", + ); expect(screen.getByText("test-leaderboard")).toBeInTheDocument(); expect(screen.getByText("T4, L4")).toBeInTheDocument(); expect(screen.getByText("alice")).toBeInTheDocument(); diff --git a/frontend/src/pages/home/Home.tsx b/frontend/src/pages/home/Home.tsx index 46fc4079..6089ecc5 100644 --- a/frontend/src/pages/home/Home.tsx +++ b/frontend/src/pages/home/Home.tsx @@ -122,6 +122,41 @@ export default function Home() { return ( + + + GPU MODE's mission is to make high-performance GPU programming + more accessible. +
+ We rely on donations and sponsorships to fund community compute, + lectures, kernel competitions, working groups, and events. +
+ Thank you to Modal, Core Automation, and Northflank for supporting + us. To sponsor GPU MODE, please{" "} + + reach out + + . +
+
Leaderboards diff --git a/frontend/src/pages/lectures/Lectures.tsx b/frontend/src/pages/lectures/Lectures.tsx index 3e26bdaf..b5317a15 100644 --- a/frontend/src/pages/lectures/Lectures.tsx +++ b/frontend/src/pages/lectures/Lectures.tsx @@ -1,7 +1,8 @@ import { Box, Typography, Link, Chip } from "@mui/material"; import type { Theme } from "@mui/material/styles"; import { useEffect, useState } from "react"; -import { fetchEvents, DiscordEvent } from "../../api/api"; +import { fetchEvents } from "../../api/api"; +import type { DiscordEvent } from "../../api/api"; import Loading from "../../components/common/loading"; const styles = { diff --git a/frontend/src/tests/setup.ts b/frontend/src/tests/setup.ts index ee72373a..257a7e9a 100644 --- a/frontend/src/tests/setup.ts +++ b/frontend/src/tests/setup.ts @@ -2,6 +2,20 @@ import { afterEach } from "vitest"; import { cleanup } from "@testing-library/react"; import "@testing-library/jest-dom/vitest"; +Object.defineProperty(window, "matchMedia", { + writable: true, + value: (query: string) => ({ + matches: false, + media: query, + onchange: null, + addListener: () => {}, + removeListener: () => {}, + addEventListener: () => {}, + removeEventListener: () => {}, + dispatchEvent: () => false, + }), +}); + // runs a clean after each test case (e.g. clearing jsdom) afterEach(() => { cleanup();