From a791903859b055be618e44c42154457dcb5cc6e7 Mon Sep 17 00:00:00 2001 From: Eugeny Date: Mon, 13 Apr 2026 23:46:48 +0300 Subject: [PATCH 1/2] feat(sentry): include message into title --- workers/sentry/src/utils/converter.ts | 4 ++++ workers/sentry/tests/converter.test.ts | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/workers/sentry/src/utils/converter.ts b/workers/sentry/src/utils/converter.ts index 916f158c..8c51c846 100644 --- a/workers/sentry/src/utils/converter.ts +++ b/workers/sentry/src/utils/converter.ts @@ -54,6 +54,10 @@ function flattenObject(obj: unknown, prefix = ''): string[] { * @param eventPayload - Sentry event payload */ export function composeTitle(eventPayload: SentryEvent): string { + if (eventPayload.message) { + return eventPayload.message; + } + return `${eventPayload.exception?.values?.[0]?.type || 'Unknown'}: ${eventPayload.exception?.values?.[0]?.value || ''}`; } diff --git a/workers/sentry/tests/converter.test.ts b/workers/sentry/tests/converter.test.ts index 7c630c69..1d51867e 100644 --- a/workers/sentry/tests/converter.test.ts +++ b/workers/sentry/tests/converter.test.ts @@ -21,6 +21,14 @@ describe('converter utils', () => { expect(composeTitle(event)).toBe('Unknown: '); }); + + it('should compose title from message', () => { + const event: SentryEvent = { + message: 'message' + }; + + expect(composeTitle(event)).toBe('message'); + }); }); describe('composeBacktrace()', () => { From a1e2ed808d0b6e71712e8f9361f61bec6a015430 Mon Sep 17 00:00:00 2001 From: Eugeny Date: Tue, 14 Apr 2026 00:19:22 +0300 Subject: [PATCH 2/2] fix(sentry): message is included in title if exception is missing --- workers/sentry/src/utils/converter.ts | 10 ++++++---- workers/sentry/tests/converter.test.ts | 16 +++++++++++++++- workers/sentry/tests/index.test.ts | 2 +- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/workers/sentry/src/utils/converter.ts b/workers/sentry/src/utils/converter.ts index 8c51c846..ba7f6eb6 100644 --- a/workers/sentry/src/utils/converter.ts +++ b/workers/sentry/src/utils/converter.ts @@ -54,11 +54,13 @@ function flattenObject(obj: unknown, prefix = ''): string[] { * @param eventPayload - Sentry event payload */ export function composeTitle(eventPayload: SentryEvent): string { - if (eventPayload.message) { - return eventPayload.message; + const exception = eventPayload.exception?.values?.[0]; + + if (exception) { + return `${exception.type || 'Unknown'}: ${exception.value || ''}`; } - - return `${eventPayload.exception?.values?.[0]?.type || 'Unknown'}: ${eventPayload.exception?.values?.[0]?.value || ''}`; + + return eventPayload.message || 'Unknown: '; } /** diff --git a/workers/sentry/tests/converter.test.ts b/workers/sentry/tests/converter.test.ts index 1d51867e..17517150 100644 --- a/workers/sentry/tests/converter.test.ts +++ b/workers/sentry/tests/converter.test.ts @@ -22,13 +22,27 @@ describe('converter utils', () => { expect(composeTitle(event)).toBe('Unknown: '); }); - it('should compose title from message', () => { + it('should compose title from message if exception is missing', () => { const event: SentryEvent = { message: 'message' }; expect(composeTitle(event)).toBe('message'); }); + + it('should compose title from exception type and value even if message is present', () => { + const event: SentryEvent = { + exception: { + values: [ { + type: 'Error', + value: 'Something went wrong', + } ], + }, + message: 'message' + }; + + expect(composeTitle(event)).toBe('Error: Something went wrong'); + }); }); describe('composeBacktrace()', () => { diff --git a/workers/sentry/tests/index.test.ts b/workers/sentry/tests/index.test.ts index 7d964c1b..6e8f34e2 100644 --- a/workers/sentry/tests/index.test.ts +++ b/workers/sentry/tests/index.test.ts @@ -304,7 +304,7 @@ describe('SentryEventWorker', () => { }, }, catcherVersion: '1.0.1', - title: 'Unknown: ', + title: 'Test timestamp', type: 'error', }, }));