Skip to content

Commit 70653af

Browse files
Zih0Lms24
andauthored
fix(core): Set level in server runtime captureException (#10587)
Set `level` property on error event captured via `captureException`, analogously to how this is handled in browser SDKs --------- Co-authored-by: Lukas Stracke <[email protected]>
1 parent cdaf852 commit 70653af

File tree

4 files changed

+71
-15
lines changed

4 files changed

+71
-15
lines changed

packages/browser/test/index.test.ts

+15-14
Original file line numberDiff line numberDiff line change
@@ -235,27 +235,28 @@ describe('SentryBrowser', () => {
235235
await flush(2000);
236236

237237
const event = beforeSend.mock.calls[0]?.[0];
238+
expect(event.level).toBe('error');
238239
expect(event.exception).toBeDefined();
239240
expect(event.exception.values[0]).toBeDefined();
240241
expect(event.exception.values[0]?.type).toBe('Error');
241242
expect(event.exception.values[0]?.value).toBe('test');
242243
expect(event.exception.values[0]?.stacktrace.frames).not.toHaveLength(0);
243244
});
244245

245-
it('should capture a message', () =>
246-
new Promise<void>(resolve => {
247-
const options = getDefaultBrowserClientOptions({
248-
beforeSend: event => {
249-
expect(event.message).toBe('test');
250-
expect(event.exception).toBeUndefined();
251-
resolve();
252-
return event;
253-
},
254-
dsn,
255-
});
256-
setCurrentClient(new BrowserClient(options));
257-
captureMessage('test');
258-
}));
246+
it('should capture a message', done => {
247+
const options = getDefaultBrowserClientOptions({
248+
beforeSend: (event: Event): Event | null => {
249+
expect(event.level).toBe('info');
250+
expect(event.message).toBe('test');
251+
expect(event.exception).toBeUndefined();
252+
done();
253+
return event;
254+
},
255+
dsn,
256+
});
257+
setCurrentClient(new BrowserClient(options));
258+
captureMessage('test');
259+
});
259260

260261
it('should capture an event', () =>
261262
new Promise<void>(resolve => {

packages/core/src/server-runtime-client.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,10 @@ export class ServerRuntimeClient<
6060
* @inheritDoc
6161
*/
6262
public eventFromException(exception: unknown, hint?: EventHint): PromiseLike<Event> {
63-
return resolvedSyncPromise(eventFromUnknownInput(this, this._options.stackParser, exception, hint));
63+
const event = eventFromUnknownInput(this, this._options.stackParser, exception, hint);
64+
event.level = 'error';
65+
66+
return resolvedSyncPromise(event);
6467
}
6568

6669
/**

packages/core/test/lib/serverruntimeclient.test.ts

+48
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,52 @@ describe('ServerRuntimeClient', () => {
154154
expect(sendEnvelopeSpy).toHaveBeenCalledTimes(0);
155155
});
156156
});
157+
158+
describe('captureException', () => {
159+
it('sends an exception event with level error', () => {
160+
const options = getDefaultClientOptions({ dsn: PUBLIC_DSN });
161+
client = new ServerRuntimeClient(options);
162+
163+
const sendEnvelopeSpy = jest.spyOn(client, 'sendEnvelope');
164+
165+
client.captureException(new Error('foo'));
166+
167+
expect(sendEnvelopeSpy).toHaveBeenCalledTimes(1);
168+
expect(sendEnvelopeSpy).toHaveBeenCalledWith([
169+
expect.any(Object),
170+
[
171+
[
172+
expect.any(Object),
173+
expect.objectContaining({
174+
level: 'error',
175+
}),
176+
],
177+
],
178+
]);
179+
});
180+
});
181+
182+
describe('captureMessage', () => {
183+
it('sends a message event with level info', () => {
184+
const options = getDefaultClientOptions({ dsn: PUBLIC_DSN });
185+
client = new ServerRuntimeClient(options);
186+
187+
const sendEnvelopeSpy = jest.spyOn(client, 'sendEnvelope');
188+
189+
client.captureMessage('foo');
190+
191+
expect(sendEnvelopeSpy).toHaveBeenCalledTimes(1);
192+
expect(sendEnvelopeSpy).toHaveBeenCalledWith([
193+
expect.any(Object),
194+
[
195+
[
196+
expect.any(Object),
197+
expect.objectContaining({
198+
level: 'info',
199+
}),
200+
],
201+
],
202+
]);
203+
});
204+
});
157205
});

packages/deno/test/__snapshots__/mod.test.ts.snap

+4
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ snapshot[`captureException 1`] = `
101101
},
102102
],
103103
},
104+
level: "error",
104105
platform: "javascript",
105106
sdk: {
106107
integrations: [
@@ -134,6 +135,7 @@ snapshot[`captureMessage 1`] = `
134135
{
135136
category: "sentry.event",
136137
event_id: "{{id}}",
138+
level: "error",
137139
message: "Error: Some unhandled error",
138140
timestamp: 0,
139141
},
@@ -204,6 +206,7 @@ snapshot[`captureMessage twice 1`] = `
204206
{
205207
category: "sentry.event",
206208
event_id: "{{id}}",
209+
level: "error",
207210
message: "Error: Some unhandled error",
208211
timestamp: 0,
209212
},
@@ -281,6 +284,7 @@ snapshot[`captureMessage twice 2`] = `
281284
{
282285
category: "sentry.event",
283286
event_id: "{{id}}",
287+
level: "error",
284288
message: "Error: Some unhandled error",
285289
timestamp: 0,
286290
},

0 commit comments

Comments
 (0)