From f11e6e893276dd23a0eb4889238b622423c4246f Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 24 Jul 2025 16:18:05 +0200 Subject: [PATCH 1/3] update stackframe calls --- .../nextjs-app-dir/package.json | 4 +- .../tests/devErrorSymbolification.test.ts | 47 +++++++++---------- .../devErrorSymbolicationEventProcessor.ts | 9 ++-- 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json index 85bc81d19132..b5bce4c3e2a7 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json @@ -7,9 +7,9 @@ "clean": "npx rimraf node_modules pnpm-lock.yaml", "test:prod": "TEST_ENV=production playwright test", "test:dev": "TEST_ENV=development playwright test", - "test:build": "pnpm install && pnpm build", + "test:build": "pnpm install && pnpm build:canary", "test:test-build": "pnpm ts-node --script-mode assert-build.ts", - "test:build-canary": "pnpm install && pnpm add next@canary && pnpm add react@beta && pnpm add react-dom@beta && pnpm build", + "build:canary": "pnpm install && pnpm add next@canary && pnpm add react@beta && pnpm add react-dom@beta && pnpm build", "test:build-latest": "pnpm install && pnpm add next@latest && pnpm build", "test:build-13": "pnpm install && pnpm add next@13.5.11 && pnpm build", "test:assert": "pnpm test:test-build && pnpm test:prod && pnpm test:dev" diff --git a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/tests/devErrorSymbolification.test.ts b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/tests/devErrorSymbolification.test.ts index d1ca11ad9a9e..ea9fd112778f 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/tests/devErrorSymbolification.test.ts +++ b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/tests/devErrorSymbolification.test.ts @@ -1,35 +1,30 @@ import { expect, test } from '@playwright/test'; import { waitForError } from '@sentry-internal/test-utils'; -test.describe('dev mode error symbolification', () => { - if (process.env.TEST_ENV !== 'development') { - test.skip('should be skipped for non-dev mode', () => {}); - return; - } +test('should have symbolicated dev errors', async ({ page }) => { + test.skip(process.env.TEST_ENV !== 'development', 'should be skipped for non-dev mode'); - test('should have symbolicated dev errors', async ({ page }) => { - await page.goto('/'); + await page.goto('/'); - const errorEventPromise = waitForError('nextjs-app-dir', errorEvent => { - return errorEvent?.exception?.values?.[0]?.value === 'Click Error'; - }); + const errorEventPromise = waitForError('nextjs-app-dir', errorEvent => { + return errorEvent?.exception?.values?.[0]?.value === 'Click Error'; + }); - await page.getByText('Throw error').click(); + await page.getByText('Throw error').click(); - const errorEvent = await errorEventPromise; - const errorEventFrames = errorEvent.exception?.values?.[0]?.stacktrace?.frames; + const errorEvent = await errorEventPromise; + const errorEventFrames = errorEvent.exception?.values?.[0]?.stacktrace?.frames; - expect(errorEventFrames?.[errorEventFrames?.length - 1]).toEqual( - expect.objectContaining({ - function: 'onClick', - filename: 'components/client-error-debug-tools.tsx', - lineno: 54, - colno: expect.any(Number), - in_app: true, - pre_context: [' {'], - context_line: " throw new Error('Click Error');", - post_context: [' }}', ' >', ' Throw error'], - }), - ); - }); + expect(errorEventFrames?.[errorEventFrames?.length - 1]).toEqual( + expect.objectContaining({ + function: 'onClick', + filename: 'components/client-error-debug-tools.tsx', + lineno: 54, + colno: expect.any(Number), + in_app: true, + pre_context: [' {'], + context_line: " throw new Error('Click Error');", + post_context: [' }}', ' >', ' Throw error'], + }), + ); }); diff --git a/packages/nextjs/src/common/devErrorSymbolicationEventProcessor.ts b/packages/nextjs/src/common/devErrorSymbolicationEventProcessor.ts index 2a1781481536..ea9f0aeb63ea 100644 --- a/packages/nextjs/src/common/devErrorSymbolicationEventProcessor.ts +++ b/packages/nextjs/src/common/devErrorSymbolicationEventProcessor.ts @@ -45,7 +45,7 @@ export async function devErrorSymbolicationEventProcessor(event: Event, hint: Ev let resolvedFrames: ({ originalCodeFrame: string | null; - originalStackFrame: StackFrame | null; + originalStackFrame: (StackFrame & { line1?: number; column1?: number }) | null; } | null)[]; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion @@ -84,8 +84,9 @@ export async function devErrorSymbolicationEventProcessor(event: Event, hint: Ev post_context: postContextLines, function: resolvedFrame.originalStackFrame.methodName, filename: resolvedFrame.originalStackFrame.file || undefined, - lineno: resolvedFrame.originalStackFrame.lineNumber || undefined, - colno: resolvedFrame.originalStackFrame.column || undefined, + lineno: + resolvedFrame.originalStackFrame.lineNumber || resolvedFrame.originalStackFrame.line1 || undefined, + colno: resolvedFrame.originalStackFrame.column || resolvedFrame.originalStackFrame.column1 || undefined, }; }, ); @@ -175,6 +176,8 @@ async function resolveStackFrames( arguments: [], lineNumber: frame.lineNumber ?? 0, column: frame.column ?? 0, + line1: frame.lineNumber ?? 0, + column1: frame.column ?? 0, }; }), isServer: false, From 3deb0d1dcbc82c6f50ffd85dcd7bdd3e8474ecbe Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 24 Jul 2025 16:32:31 +0200 Subject: [PATCH 2/3] . --- .../e2e-tests/test-applications/nextjs-app-dir/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json index b5bce4c3e2a7..3d654ea0fa49 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json @@ -9,7 +9,7 @@ "test:dev": "TEST_ENV=development playwright test", "test:build": "pnpm install && pnpm build:canary", "test:test-build": "pnpm ts-node --script-mode assert-build.ts", - "build:canary": "pnpm install && pnpm add next@canary && pnpm add react@beta && pnpm add react-dom@beta && pnpm build", + "test:build:canary": "pnpm install && pnpm add next@canary && pnpm add react@beta && pnpm add react-dom@beta && pnpm build", "test:build-latest": "pnpm install && pnpm add next@latest && pnpm build", "test:build-13": "pnpm install && pnpm add next@13.5.11 && pnpm build", "test:assert": "pnpm test:test-build && pnpm test:prod && pnpm test:dev" From 37196b0b20721ab808b6e8636cf64037ceb0bbd5 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Thu, 24 Jul 2025 16:42:44 +0200 Subject: [PATCH 3/3] somewhat old man yells at cursor --- .../e2e-tests/test-applications/nextjs-app-dir/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json index 3d654ea0fa49..85bc81d19132 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json @@ -7,9 +7,9 @@ "clean": "npx rimraf node_modules pnpm-lock.yaml", "test:prod": "TEST_ENV=production playwright test", "test:dev": "TEST_ENV=development playwright test", - "test:build": "pnpm install && pnpm build:canary", + "test:build": "pnpm install && pnpm build", "test:test-build": "pnpm ts-node --script-mode assert-build.ts", - "test:build:canary": "pnpm install && pnpm add next@canary && pnpm add react@beta && pnpm add react-dom@beta && pnpm build", + "test:build-canary": "pnpm install && pnpm add next@canary && pnpm add react@beta && pnpm add react-dom@beta && pnpm build", "test:build-latest": "pnpm install && pnpm add next@latest && pnpm build", "test:build-13": "pnpm install && pnpm add next@13.5.11 && pnpm build", "test:assert": "pnpm test:test-build && pnpm test:prod && pnpm test:dev"