{title}
+{description}
+diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
index 06c926b94e..206e3a04d8 100644
--- a/.github/workflows/check.yml
+++ b/.github/workflows/check.yml
@@ -1,4 +1,4 @@
-name: Lint and check formatting
+name: lint & test
on: pull_request
@@ -26,6 +26,23 @@ jobs:
- name: Validate code snippets
run: pnpm validate:snippets
+ unit-test:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: the-guild-org/shared-config/setup@main
+ name: setup env
+ with:
+ packageManager: pnpm
+ workingDirectory: ./
+
+ - name: Install Dependencies
+ run: pnpm i
+
+ - name: Run unit tests
+ run: pnpm test:unit
+
playwright:
runs-on: ubuntu-latest
steps:
@@ -46,12 +63,9 @@ jobs:
- name: Install Playwright Browsers
run: ./node_modules/.bin/playwright install --with-deps
- - name: Run Playwright tests
+ - name: Run end-to-end tests
run: ./node_modules/.bin/playwright test
- - name: Run unit tests
- run: pnpm test:unit
-
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
diff --git a/.gitignore b/.gitignore
index 2c2af0a81e..9c5209d9cc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,3 +65,5 @@ out/
tsconfig.tsbuildinfo
playwright-report/
+
+.pnpm-store/
diff --git a/package.json b/package.json
index 7233ec5412..4cb53f9787 100644
--- a/package.json
+++ b/package.json
@@ -35,7 +35,7 @@
"@hasparus/lezer-json-shikified": "1.1.3",
"@headlessui/react": "^2.2.4",
"@igorkowalczyk/is-browser": "^5.1.0",
- "@lezer/highlight": "1.2.1",
+ "@lezer/highlight": "^1.2.1",
"@next/bundle-analyzer": "^15.4.5",
"@plaiceholder/next": "^3.0.0",
"@sparticuz/chromium": "^138.0.2",
diff --git a/playwright.config.ts b/playwright.config.ts
index de0ed7f7d4..1d32e2a082 100644
--- a/playwright.config.ts
+++ b/playwright.config.ts
@@ -8,18 +8,35 @@ export default defineConfig({
outputDir: "./test/out",
fullyParallel: true,
forbidOnly: !!process.env.CI,
- retries: process.env.CI ? 2 : 0,
+ retries: process.env.CI ? 2 : 1,
workers: process.env.CI ? 1 : undefined,
- reporter: "html",
+ reporter: process.env.CI ? [["github"], ["html"]] : "list",
use: {
baseURL: "http://localhost:3000",
- trace: "on-first-retry",
+ trace: "retain-on-first-failure",
+ screenshot: "only-on-failure",
},
+ timeout: 60 * 1000,
+
projects: [
{
name: "chromium",
- use: { ...devices["Desktop Chrome"] },
+ use: {
+ ...devices["Desktop Chrome"],
+ channel: "chromium",
+ ...(process.env.CI
+ ? {
+ args: [
+ "--enable-gpu",
+ "--use-gl=angle",
+ "--use-angle=gl-egl",
+ "--ignore-gpu-blocklist",
+ "--enable-unsafe-swiftshader",
+ ],
+ }
+ : {}),
+ },
},
],
diff --git a/src/app/(development)/layout.tsx b/src/app/(development)/layout.tsx
index bcfae89f8e..6b96532225 100644
--- a/src/app/(development)/layout.tsx
+++ b/src/app/(development)/layout.tsx
@@ -2,7 +2,6 @@ import React from "react"
import { notFound } from "next/navigation"
import { NewFontsStyleTag } from "../fonts"
-// @ts-expect-error: we want to import the same version as Nextra for the main page
import { ThemeProvider } from "next-themes"
import "../colors.css"
diff --git a/src/app/(main)/community/events/benefit-card.tsx b/src/app/(main)/community/events/benefit-card.tsx
new file mode 100644
index 0000000000..3d35cdde61
--- /dev/null
+++ b/src/app/(main)/community/events/benefit-card.tsx
@@ -0,0 +1,21 @@
+import { ReactNode } from "react"
+
+export function BenefitCard({
+ title,
+ description,
+ icon,
+}: {
+ title: string
+ description: string
+ icon: ReactNode
+}) {
+ return (
+ {description}
+ Contributing to GraphQL means more than writing code — it’s a chance
+ to collaborate, share ideas, and shape the future of the ecosystem.
+
+ Learn how to start a local initiative and create your own – host
+ events, share knowledge, and grow the GraphQL community where you
+ live.
+ {title}
+
+ Benefits of getting involved
+
+ Bring GraphQL to your community
+
+ Get your meetup noticed +
++ Planning to host a GraphQL meetup? The GraphQL Foundation can help + spread the word through official channels. +
++ To submit your event, join our{" "} + + Discord + {" "} + and share details in the{" "} + + #locals + {" "} + channel. +
++ See what’s coming up across the GraphQL ecosystem. +
++ Find and join local GraphQL meetups happening around the world. Select + a city to explore upcoming events. +
+ ++ A look back at how the GraphQL community connects and grows together. +
++ A look back at what’s been happening. +
+