From d9988213bd952df4dea5a10b6258867befb9986c Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Fri, 23 Jan 2026 14:03:35 +0100 Subject: [PATCH 1/2] chore(e2e): Add e2e claude skill The nature of running e2e tests in our repo is particular: When making changes in an SDK, we need to rebuild that SDK and create its tarball, only then can we run the e2e test application. Agents lack this context and will often make changes, rebuild the SDK but not publish a tarball for example. This skill can be invoked via `/e2e `, e.g. `/e2e nuxt-3` and it will detect and perform SDK rebuilds before running the e2e tests. --- .claude/skills/e2e/SKILL.md | 200 ++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 .claude/skills/e2e/SKILL.md diff --git a/.claude/skills/e2e/SKILL.md b/.claude/skills/e2e/SKILL.md new file mode 100644 index 000000000000..dd57586cd69c --- /dev/null +++ b/.claude/skills/e2e/SKILL.md @@ -0,0 +1,200 @@ +--- +name: e2e +description: Run E2E tests for Sentry JavaScript SDK test applications +argument-hint: [--variant ] +--- + +# E2E Test Runner Skill + +This skill runs end-to-end tests for Sentry JavaScript SDK test applications. It ensures SDK packages are built before running tests. + +## Input + +The user provides a test application name and optionally a variant: + +- `e2e-tests/test-applications/nextjs-app-dir` (full path) +- `nextjs-app-dir` (just the app name) +- `nextjs-app-dir --variant nextjs-15` (with variant) + +## Workflow + +### Step 1: Parse the Test Application Name + +Extract the test app name from user input: + +- Strip `e2e-tests/test-applications/` prefix if present +- Extract variant flag if provided (e.g., `--variant nextjs-15`) +- Store the clean app name (e.g., `nextjs-app-dir`) + +### Step 2: Determine Which Packages Need Rebuilding + +If the user recently edited files in `packages/*`, identify which packages were modified: + +```bash +# Check which packages have uncommitted changes +git status --porcelain | grep "^[ MARC][ MD] packages/" | cut -d'/' -f2 | sort -u +``` + +For each modified package, rebuild its tarball: + +```bash +cd packages/ +yarn build && yarn build:tarball +cd ../.. +``` + +**Option C: User Specifies Packages** + +If the user says "I changed @sentry/node" or similar, rebuild just that package: + +```bash +cd packages/node +yarn build && yarn build:tarball +cd ../.. +``` + +### Step 3: Verify Test Application Exists + +Check that the test app exists: + +```bash +ls -d dev-packages/e2e-tests/test-applications/ +``` + +If it doesn't exist, list available test apps: + +```bash +ls dev-packages/e2e-tests/test-applications/ +``` + +Ask the user which one they meant. + +### Step 4: Run the E2E Test + +Navigate to the e2e-tests directory and run the test: + +```bash +cd dev-packages/e2e-tests +yarn test:run +``` + +If a variant was specified: + +```bash +cd dev-packages/e2e-tests +yarn test:run --variant +``` + +### Step 5: Report Results + +After the test completes, provide a summary: + +**If tests passed:** + +``` +โœ… E2E tests passed for + +All tests completed successfully. Your SDK changes work correctly with this test application. +``` + +**If tests failed:** + +``` +โŒ E2E tests failed for + +[Include relevant error output] +``` + +**If package rebuild was needed:** + +``` +๐Ÿ“ฆ Rebuilt SDK packages: +๐Ÿงช Running E2E tests for ... +``` + +## Error Handling + +- **No tarballs found**: Run `yarn build && yarn build:tarball` at repository root +- **Test app not found**: List available apps and ask user to clarify +- **Verdaccio not running**: Tests should start Verdaccio automatically, but if issues occur, check Docker +- **Build failures**: Fix build errors before running tests + +## Common Test Applications + +Here are frequently tested applications: + +- `nextjs-app-dir` - Next.js App Router +- `nextjs-15` - Next.js 15.x +- `react-create-hash-router` - React with React Router +- `node-express-esm-loader` - Node.js Express with ESM +- `sveltekit-2` - SvelteKit 2.x +- `remix-2` - Remix 2.x +- `nuxt-3` - Nuxt 3.x + +To see all available test apps: + +```bash +ls dev-packages/e2e-tests/test-applications/ +``` + +## Example Workflows + +### Example 1: After modifying @sentry/node + +```bash +# User: "Run e2e tests for node-express-esm-loader" + +# Step 1: Detect recent changes to packages/node +# Step 2: Rebuild the modified package +cd packages/node +yarn build && yarn build:tarball +cd ../.. + +# Step 3: Run the test +cd dev-packages/e2e-tests +yarn test:run node-express-esm-loader +``` + +### Example 2: First-time test run + +```bash +# User: "Run e2e tests for nextjs-app-dir" + +# Step 1: Check for existing tarballs +# Step 2: None found, build all packages +yarn build && yarn build:tarball + +# Step 3: Run the test +cd dev-packages/e2e-tests +yarn test:run nextjs-app-dir +``` + +### Example 3: With variant + +```bash +# User: "Run e2e tests for nextjs-app-dir with nextjs-15 variant" + +# Step 1: Rebuild if needed +# Step 2: Run with variant +cd dev-packages/e2e-tests +yarn test:run nextjs-app-dir --variant nextjs-15 +``` + +## Tips + +- **Always rebuild after SDK changes**: Tarballs contain the compiled SDK code +- **Watch build output**: Build errors must be fixed before testing + +## Integration with Development Workflow + +This skill integrates with the standard SDK development workflow: + +1. Make changes to SDK code in `packages/*` +2. Run `/e2e ` to test your changes +3. Fix any test failures + +The skill automates the tedious parts of: + +- Remembering to rebuild tarballs +- Navigating to the correct directory +- Running tests with the right flags From 46fc499b26857be66901f4c46fcb0d0185b96fd7 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Fri, 23 Jan 2026 14:28:19 +0100 Subject: [PATCH 2/2] Use skill in CLAUDE.md --- CLAUDE.md | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index cae60376d964..739c690c4873 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -145,17 +145,7 @@ Without this file, pnpm installs from the public npm registry instead of Verdacc #### Running a Single E2E Test -```bash -# Build packages first -yarn build && yarn build:tarball - -# Run a specific test app -cd dev-packages/e2e-tests -yarn test:run - -# Run with a specific variant (e.g., Next.js 15) -yarn test:run --variant -``` +Run the e2e skill. #### Common Pitfalls and Debugging