Skip to content

Commit dac868f

Browse files
authored
fix(v9/nextjs): Update stackframe calls for next v15.5 (#17161)
1 parent fa7a2b0 commit dac868f

File tree

2 files changed

+27
-29
lines changed

2 files changed

+27
-29
lines changed
Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,30 @@
11
import { expect, test } from '@playwright/test';
22
import { waitForError } from '@sentry-internal/test-utils';
33

4-
test.describe('dev mode error symbolification', () => {
5-
if (process.env.TEST_ENV !== 'development') {
6-
test.skip('should be skipped for non-dev mode', () => {});
7-
return;
8-
}
4+
test('should have symbolicated dev errors', async ({ page }) => {
5+
test.skip(process.env.TEST_ENV !== 'development', 'should be skipped for non-dev mode');
96

10-
test('should have symbolicated dev errors', async ({ page }) => {
11-
await page.goto('/');
7+
await page.goto('/');
128

13-
const errorEventPromise = waitForError('nextjs-app-dir', errorEvent => {
14-
return errorEvent?.exception?.values?.[0]?.value === 'Click Error';
15-
});
9+
const errorEventPromise = waitForError('nextjs-app-dir', errorEvent => {
10+
return errorEvent?.exception?.values?.[0]?.value === 'Click Error';
11+
});
1612

17-
await page.getByText('Throw error').click();
13+
await page.getByText('Throw error').click();
1814

19-
const errorEvent = await errorEventPromise;
20-
const errorEventFrames = errorEvent.exception?.values?.[0]?.stacktrace?.frames;
15+
const errorEvent = await errorEventPromise;
16+
const errorEventFrames = errorEvent.exception?.values?.[0]?.stacktrace?.frames;
2117

22-
expect(errorEventFrames?.[errorEventFrames?.length - 1]).toEqual(
23-
expect.objectContaining({
24-
function: 'onClick',
25-
filename: 'components/client-error-debug-tools.tsx',
26-
lineno: 54,
27-
colno: expect.any(Number),
28-
in_app: true,
29-
pre_context: [' <button', ' onClick={() => {'],
30-
context_line: " throw new Error('Click Error');",
31-
post_context: [' }}', ' >', ' Throw error'],
32-
}),
33-
);
34-
});
18+
expect(errorEventFrames?.[errorEventFrames?.length - 1]).toEqual(
19+
expect.objectContaining({
20+
function: 'onClick',
21+
filename: 'components/client-error-debug-tools.tsx',
22+
lineno: 54,
23+
colno: expect.any(Number),
24+
in_app: true,
25+
pre_context: [' <button', ' onClick={() => {'],
26+
context_line: " throw new Error('Click Error');",
27+
post_context: [' }}', ' >', ' Throw error'],
28+
}),
29+
);
3530
});

packages/nextjs/src/common/devErrorSymbolicationEventProcessor.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export async function devErrorSymbolicationEventProcessor(event: Event, hint: Ev
4545

4646
let resolvedFrames: ({
4747
originalCodeFrame: string | null;
48-
originalStackFrame: StackFrame | null;
48+
originalStackFrame: (StackFrame & { line1?: number; column1?: number }) | null;
4949
} | null)[];
5050

5151
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -84,8 +84,9 @@ export async function devErrorSymbolicationEventProcessor(event: Event, hint: Ev
8484
post_context: postContextLines,
8585
function: resolvedFrame.originalStackFrame.methodName,
8686
filename: resolvedFrame.originalStackFrame.file || undefined,
87-
lineno: resolvedFrame.originalStackFrame.lineNumber || undefined,
88-
colno: resolvedFrame.originalStackFrame.column || undefined,
87+
lineno:
88+
resolvedFrame.originalStackFrame.lineNumber || resolvedFrame.originalStackFrame.line1 || undefined,
89+
colno: resolvedFrame.originalStackFrame.column || resolvedFrame.originalStackFrame.column1 || undefined,
8990
};
9091
},
9192
);
@@ -175,6 +176,8 @@ async function resolveStackFrames(
175176
arguments: [],
176177
lineNumber: frame.lineNumber ?? 0,
177178
column: frame.column ?? 0,
179+
line1: frame.lineNumber ?? 0,
180+
column1: frame.column ?? 0,
178181
};
179182
}),
180183
isServer: false,

0 commit comments

Comments
 (0)