From ddabd12f81b8529c7f809a22a80a95bcd8b268cf Mon Sep 17 00:00:00 2001 From: ziho Date: Fri, 9 Feb 2024 21:47:41 +0900 Subject: [PATCH 1/9] fix(core): captureException set event level error --- packages/core/src/server-runtime-client.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/src/server-runtime-client.ts b/packages/core/src/server-runtime-client.ts index c683ad0d2d54..e1d89c1d067b 100644 --- a/packages/core/src/server-runtime-client.ts +++ b/packages/core/src/server-runtime-client.ts @@ -60,7 +60,10 @@ export class ServerRuntimeClient< * @inheritDoc */ public eventFromException(exception: unknown, hint?: EventHint): PromiseLike { - return resolvedSyncPromise(eventFromUnknownInput(this, this._options.stackParser, exception, hint)); + const event = eventFromUnknownInput(this, this._options.stackParser, exception, hint); + event.level = 'error'; + + return resolvedSyncPromise(event); } /** From df2babbe3deb309d0f700aad375a24b352cb423d Mon Sep 17 00:00:00 2001 From: ziho Date: Fri, 9 Feb 2024 21:48:05 +0900 Subject: [PATCH 2/9] test: browser capture level test --- packages/browser/test/index.test.ts | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/browser/test/index.test.ts b/packages/browser/test/index.test.ts index 42492cd36747..c0e79481788b 100644 --- a/packages/browser/test/index.test.ts +++ b/packages/browser/test/index.test.ts @@ -235,6 +235,7 @@ describe('SentryBrowser', () => { await flush(2000); const event = beforeSend.mock.calls[0]?.[0]; + expect(event.level).toBe('error'); expect(event.exception).toBeDefined(); expect(event.exception.values[0]).toBeDefined(); expect(event.exception.values[0]?.type).toBe('Error'); @@ -242,20 +243,20 @@ describe('SentryBrowser', () => { expect(event.exception.values[0]?.stacktrace.frames).not.toHaveLength(0); }); - it('should capture a message', () => - new Promise(resolve => { - const options = getDefaultBrowserClientOptions({ - beforeSend: event => { - expect(event.message).toBe('test'); - expect(event.exception).toBeUndefined(); - resolve(); - return event; - }, - dsn, - }); - setCurrentClient(new BrowserClient(options)); - captureMessage('test'); - })); + it('should capture a message', done => { + const options = getDefaultBrowserClientOptions({ + beforeSend: (event: Event): Event | null => { + expect(event.level).toBe('info'); + expect(event.message).toBe('test'); + expect(event.exception).toBeUndefined(); + done(); + return event; + }, + dsn, + }); + setCurrentClient(new BrowserClient(options)); + captureMessage('test'); + }); it('should capture an event', () => new Promise(resolve => { From 4c8edd44d7fbefc712b1abf9ccede76ac8187bfd Mon Sep 17 00:00:00 2001 From: ziho Date: Fri, 9 Feb 2024 21:48:12 +0900 Subject: [PATCH 3/9] test: server runtime capture level test --- .../core/test/lib/serverruntimeclient.test.ts | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/packages/core/test/lib/serverruntimeclient.test.ts b/packages/core/test/lib/serverruntimeclient.test.ts index 40be09bf011c..f53a92f413dd 100644 --- a/packages/core/test/lib/serverruntimeclient.test.ts +++ b/packages/core/test/lib/serverruntimeclient.test.ts @@ -154,4 +154,54 @@ describe('ServerRuntimeClient', () => { expect(sendEnvelopeSpy).toHaveBeenCalledTimes(0); }); }); + + describe('captureException', () => { + it('sends an exception event with level error', () => { + const options = getDefaultClientOptions({ dsn: PUBLIC_DSN }); + client = new ServerRuntimeClient(options); + + // @ts-expect-error accessing private method + const sendEnvelopeSpy = jest.spyOn(client, '_sendEnvelope'); + + client.captureException(new Error('foo')); + + expect(sendEnvelopeSpy).toHaveBeenCalledTimes(1); + expect(sendEnvelopeSpy).toHaveBeenCalledWith([ + expect.any(Object), + [ + [ + expect.any(Object), + expect.objectContaining({ + level: 'error' + }) + ], + ], + ]); + }); + }); + + describe('captureMessage', () => { + it('sends a message event with level info', () => { + const options = getDefaultClientOptions({ dsn: PUBLIC_DSN }); + client = new ServerRuntimeClient(options); + + // @ts-expect-error accessing private method + const sendEnvelopeSpy = jest.spyOn(client, '_sendEnvelope'); + + client.captureMessage('foo'); + + expect(sendEnvelopeSpy).toHaveBeenCalledTimes(1); + expect(sendEnvelopeSpy).toHaveBeenCalledWith([ + expect.any(Object), + [ + [ + expect.any(Object), + expect.objectContaining({ + level: 'info' + }) + ], + ], + ]); + }); + }); }); From da830c2b1a66ad486a8c6a4bd0f902b2b7bcebaf Mon Sep 17 00:00:00 2001 From: ziho Date: Fri, 9 Feb 2024 22:24:24 +0900 Subject: [PATCH 4/9] lint --- packages/core/test/lib/serverruntimeclient.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/core/test/lib/serverruntimeclient.test.ts b/packages/core/test/lib/serverruntimeclient.test.ts index f53a92f413dd..789e6402a9b5 100644 --- a/packages/core/test/lib/serverruntimeclient.test.ts +++ b/packages/core/test/lib/serverruntimeclient.test.ts @@ -172,8 +172,8 @@ describe('ServerRuntimeClient', () => { [ expect.any(Object), expect.objectContaining({ - level: 'error' - }) + level: 'error', + }), ], ], ]); @@ -197,8 +197,8 @@ describe('ServerRuntimeClient', () => { [ expect.any(Object), expect.objectContaining({ - level: 'info' - }) + level: 'info', + }), ], ], ]); From 056fb94f5bdd07c602ba65fb72371dc79606fafa Mon Sep 17 00:00:00 2001 From: ziho Date: Sat, 10 Feb 2024 11:31:09 +0900 Subject: [PATCH 5/9] fix: test snapshot --- packages/deno/test/__snapshots__/mod.test.ts.snap | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/deno/test/__snapshots__/mod.test.ts.snap b/packages/deno/test/__snapshots__/mod.test.ts.snap index 937eae2893f8..7c658f3468ee 100644 --- a/packages/deno/test/__snapshots__/mod.test.ts.snap +++ b/packages/deno/test/__snapshots__/mod.test.ts.snap @@ -102,6 +102,7 @@ snapshot[`captureException 1`] = ` ], }, platform: "javascript", + level: "error", sdk: { integrations: [ "InboundFilters", From c1b2a370a1627c46c3e5a676514fb012f08eacf5 Mon Sep 17 00:00:00 2001 From: ziho Date: Sat, 10 Feb 2024 12:00:14 +0900 Subject: [PATCH 6/9] fix: new snapshot --- .../deno/test/__snapshots__/mod.test.ts.snap | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/packages/deno/test/__snapshots__/mod.test.ts.snap b/packages/deno/test/__snapshots__/mod.test.ts.snap index 7c658f3468ee..127d7fcce646 100644 --- a/packages/deno/test/__snapshots__/mod.test.ts.snap +++ b/packages/deno/test/__snapshots__/mod.test.ts.snap @@ -42,6 +42,41 @@ snapshot[`captureException 1`] = ` }, stacktrace: { frames: [ + { + colno: 20, + filename: "ext:cli/40_test.js", + function: "outerWrapped", + in_app: false, + lineno: 548, + }, + { + colno: 33, + filename: "ext:cli/40_test.js", + function: "exitSanitizer", + in_app: false, + lineno: 534, + }, + { + colno: 31, + filename: "ext:cli/40_test.js", + function: "resourceSanitizer", + in_app: false, + lineno: 486, + }, + { + colno: 33, + filename: "ext:cli/40_test.js", + function: "asyncOpSanitizer", + in_app: false, + lineno: 251, + }, + { + colno: 11, + filename: "ext:cli/40_test.js", + function: "innerWrapped", + in_app: false, + lineno: 605, + }, { colno: 27, context_line: " client.captureException(something());", @@ -101,8 +136,8 @@ snapshot[`captureException 1`] = ` }, ], }, - platform: "javascript", level: "error", + platform: "javascript", sdk: { integrations: [ "InboundFilters", From e05028755930525bfe840490000e37f78577f345 Mon Sep 17 00:00:00 2001 From: ziho Date: Thu, 15 Feb 2024 09:33:07 +0900 Subject: [PATCH 7/9] fix: snapshot --- .../deno/test/__snapshots__/mod.test.ts.snap | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/deno/test/__snapshots__/mod.test.ts.snap b/packages/deno/test/__snapshots__/mod.test.ts.snap index 127d7fcce646..65cb0d71fb41 100644 --- a/packages/deno/test/__snapshots__/mod.test.ts.snap +++ b/packages/deno/test/__snapshots__/mod.test.ts.snap @@ -44,38 +44,38 @@ snapshot[`captureException 1`] = ` frames: [ { colno: 20, - filename: "ext:cli/40_test.js", + filename: "ext:cli/40_testing.js", function: "outerWrapped", in_app: false, - lineno: 548, + lineno: 472, }, { colno: 33, - filename: "ext:cli/40_test.js", + filename: "ext:cli/40_testing.js", function: "exitSanitizer", in_app: false, - lineno: 534, + lineno: 458, }, { colno: 31, - filename: "ext:cli/40_test.js", + filename: "ext:cli/40_testing.js", function: "resourceSanitizer", in_app: false, - lineno: 486, + lineno: 410, }, { colno: 33, - filename: "ext:cli/40_test.js", + filename: "ext:cli/40_testing.js", function: "asyncOpSanitizer", in_app: false, - lineno: 251, + lineno: 177, }, { colno: 11, - filename: "ext:cli/40_test.js", + filename: "ext:cli/40_testing.js", function: "innerWrapped", in_app: false, - lineno: 605, + lineno: 526, }, { colno: 27, From f03c79b4f3f0723a6f4e912150760aaa766623c4 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 12 Dec 2024 18:28:35 +0100 Subject: [PATCH 8/9] update snapshots --- .../deno/test/__snapshots__/mod.test.ts.snap | 38 ++----------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/packages/deno/test/__snapshots__/mod.test.ts.snap b/packages/deno/test/__snapshots__/mod.test.ts.snap index 65cb0d71fb41..f9f3006c34c4 100644 --- a/packages/deno/test/__snapshots__/mod.test.ts.snap +++ b/packages/deno/test/__snapshots__/mod.test.ts.snap @@ -42,41 +42,6 @@ snapshot[`captureException 1`] = ` }, stacktrace: { frames: [ - { - colno: 20, - filename: "ext:cli/40_testing.js", - function: "outerWrapped", - in_app: false, - lineno: 472, - }, - { - colno: 33, - filename: "ext:cli/40_testing.js", - function: "exitSanitizer", - in_app: false, - lineno: 458, - }, - { - colno: 31, - filename: "ext:cli/40_testing.js", - function: "resourceSanitizer", - in_app: false, - lineno: 410, - }, - { - colno: 33, - filename: "ext:cli/40_testing.js", - function: "asyncOpSanitizer", - in_app: false, - lineno: 177, - }, - { - colno: 11, - filename: "ext:cli/40_testing.js", - function: "innerWrapped", - in_app: false, - lineno: 526, - }, { colno: 27, context_line: " client.captureException(something());", @@ -170,6 +135,7 @@ snapshot[`captureMessage 1`] = ` { category: "sentry.event", event_id: "{{id}}", + level: "error", message: "Error: Some unhandled error", timestamp: 0, }, @@ -240,6 +206,7 @@ snapshot[`captureMessage twice 1`] = ` { category: "sentry.event", event_id: "{{id}}", + level: "error", message: "Error: Some unhandled error", timestamp: 0, }, @@ -317,6 +284,7 @@ snapshot[`captureMessage twice 2`] = ` { category: "sentry.event", event_id: "{{id}}", + level: "error", message: "Error: Some unhandled error", timestamp: 0, }, From bb0d9bc93cbf40700a54e74fc89b866311979785 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 12 Dec 2024 18:59:24 +0100 Subject: [PATCH 9/9] update and fix unit tests --- packages/core/test/lib/serverruntimeclient.test.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/core/test/lib/serverruntimeclient.test.ts b/packages/core/test/lib/serverruntimeclient.test.ts index 789e6402a9b5..bdf1c5242b80 100644 --- a/packages/core/test/lib/serverruntimeclient.test.ts +++ b/packages/core/test/lib/serverruntimeclient.test.ts @@ -160,8 +160,7 @@ describe('ServerRuntimeClient', () => { const options = getDefaultClientOptions({ dsn: PUBLIC_DSN }); client = new ServerRuntimeClient(options); - // @ts-expect-error accessing private method - const sendEnvelopeSpy = jest.spyOn(client, '_sendEnvelope'); + const sendEnvelopeSpy = jest.spyOn(client, 'sendEnvelope'); client.captureException(new Error('foo')); @@ -185,8 +184,7 @@ describe('ServerRuntimeClient', () => { const options = getDefaultClientOptions({ dsn: PUBLIC_DSN }); client = new ServerRuntimeClient(options); - // @ts-expect-error accessing private method - const sendEnvelopeSpy = jest.spyOn(client, '_sendEnvelope'); + const sendEnvelopeSpy = jest.spyOn(client, 'sendEnvelope'); client.captureMessage('foo');