From e0e5fcb12c2a2c0963893d6c5d4613ccbf63adc8 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 5 Aug 2024 18:40:53 +0200 Subject: [PATCH 1/4] feat(sveltekit): Add `wrapServerRouteWithSentry` wrapper --- .../sveltekit-2/src/routes/+page.svelte | 3 + .../src/routes/wrap-server-route/+page.svelte | 7 ++ .../src/routes/wrap-server-route/+page.ts | 8 +++ .../routes/wrap-server-route/api/+server.ts | 8 +++ .../routes/wrap-server-route/api/image.png | Bin 0 -> 76341 bytes .../sveltekit-2/tests/errors.server.test.ts | 34 +++++++++ packages/sveltekit/src/server/handle.ts | 40 ++--------- packages/sveltekit/src/server/index.ts | 1 + packages/sveltekit/src/server/load.ts | 46 ++---------- packages/sveltekit/src/server/serverRoute.ts | 66 ++++++++++++++++++ packages/sveltekit/src/server/utils.ts | 43 +++++++++++- 11 files changed, 177 insertions(+), 79 deletions(-) create mode 100644 dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.svelte create mode 100644 dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.ts create mode 100644 dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/+server.ts create mode 100644 dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/image.png create mode 100644 packages/sveltekit/src/server/serverRoute.ts diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/+page.svelte index e7788b6433cd..0cfae1c54741 100644 --- a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/+page.svelte +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/+page.svelte @@ -38,4 +38,7 @@
  • Component Tracking
  • +
  • + server routes +
  • diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.svelte b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.svelte new file mode 100644 index 000000000000..adc04d52c0ea --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.svelte @@ -0,0 +1,7 @@ + + +

    + Message from API: {data.myMessage} +

    diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.ts b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.ts new file mode 100644 index 000000000000..8289b0167dbe --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.ts @@ -0,0 +1,8 @@ +export const load = async ({ fetch }) => { + const res = await fetch('/wrap-server-route/api'); + const myMessage = await res.json(); + console.log({ myMessage }); + return { + myMessage: myMessage.myMessage, + }; +}; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/+server.ts b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/+server.ts new file mode 100644 index 000000000000..4f69ca0d0785 --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/+server.ts @@ -0,0 +1,8 @@ +import { wrapServerRouteWithSentry } from '@sentry/sveltekit'; +import { error } from '@sveltejs/kit'; + +export const GET = wrapServerRouteWithSentry(async () => { + console.log('API call'); + error(500, 'error() error'); + return new Response(JSON.stringify({ myMessage: 'hi from API route' })); +}); diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/image.png b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/image.png new file mode 100644 index 0000000000000000000000000000000000000000..b62f8885de0b92f1475b15d7e066f48a794d9f6f GIT binary patch literal 76341 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 literal 0 HcmV?d00001 diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/tests/errors.server.test.ts b/dev-packages/e2e-tests/test-applications/sveltekit-2/tests/errors.server.test.ts index c9dc56b9c96b..8d8a1f9a0bdd 100644 --- a/dev-packages/e2e-tests/test-applications/sveltekit-2/tests/errors.server.test.ts +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2/tests/errors.server.test.ts @@ -58,4 +58,38 @@ test.describe('server-side errors', () => { expect(errorEvent.transaction).toEqual('GET /server-route-error'); }); + + test('captures error() thrown in server route with `wrapServerRouteWithSentry`', async ({ page }) => { + const errorEventPromise = waitForError('sveltekit-2', errorEvent => { + console.log(errorEvent?.exception?.values?.[0]?.stacktrace); + return errorEvent?.exception?.values?.[0]?.value === "'HttpError' captured as exception with keys: body, status"; + }); + + await page.goto('/wrap-server-route'); + + expect(await errorEventPromise).toMatchObject({ + exception: { + values: [ + { + value: "'HttpError' captured as exception with keys: body, status", + mechanism: { + handled: false, + data: { + function: 'serverRoute', + }, + }, + stacktrace: { frames: expect.any(Array) }, + }, + ], + }, + extra: { + __serialized__: { + body: { + message: 'error() error', + }, + status: 500, + }, + }, + }); + }); }); diff --git a/packages/sveltekit/src/server/handle.ts b/packages/sveltekit/src/server/handle.ts index 56ddc23e1885..7f4b8d980ad8 100644 --- a/packages/sveltekit/src/server/handle.ts +++ b/packages/sveltekit/src/server/handle.ts @@ -11,21 +11,15 @@ import { withIsolationScope, } from '@sentry/core'; import { startSpan } from '@sentry/core'; -import { captureException, continueTrace } from '@sentry/node'; +import { continueTrace } from '@sentry/node'; import type { Span } from '@sentry/types'; -import { - dynamicSamplingContextToSentryBaggageHeader, - logger, - objectify, - winterCGRequestToRequestData, -} from '@sentry/utils'; +import { dynamicSamplingContextToSentryBaggageHeader, logger, winterCGRequestToRequestData } from '@sentry/utils'; import type { Handle, ResolveOptions } from '@sveltejs/kit'; import { getDynamicSamplingContextFromSpan } from '@sentry/opentelemetry'; import { DEBUG_BUILD } from '../common/debug-build'; -import { isHttpError, isRedirect } from '../common/utils'; -import { flushIfServerless, getTracePropagationData } from './utils'; +import { flushIfServerless, getTracePropagationData, sendErrorToSentry } from './utils'; export type SentryHandleOptions = { /** @@ -62,32 +56,6 @@ export type SentryHandleOptions = { fetchProxyScriptNonce?: string; }; -function sendErrorToSentry(e: unknown): unknown { - // In case we have a primitive, wrap it in the equivalent wrapper class (string -> String, etc.) so that we can - // store a seen flag on it. - const objectifiedErr = objectify(e); - - // similarly to the `load` function, we don't want to capture 4xx errors or redirects - if ( - isRedirect(objectifiedErr) || - (isHttpError(objectifiedErr) && objectifiedErr.status < 500 && objectifiedErr.status >= 400) - ) { - return objectifiedErr; - } - - captureException(objectifiedErr, { - mechanism: { - type: 'sveltekit', - handled: false, - data: { - function: 'handle', - }, - }, - }); - - return objectifiedErr; -} - /** * Exported only for testing */ @@ -225,7 +193,7 @@ async function instrumentHandle( ); return resolveResult; } catch (e: unknown) { - sendErrorToSentry(e); + sendErrorToSentry(e, 'handle'); throw e; } finally { await flushIfServerless(); diff --git a/packages/sveltekit/src/server/index.ts b/packages/sveltekit/src/server/index.ts index a74e5bb89dc0..478a16fd1deb 100644 --- a/packages/sveltekit/src/server/index.ts +++ b/packages/sveltekit/src/server/index.ts @@ -128,6 +128,7 @@ export { init } from './sdk'; export { handleErrorWithSentry } from './handleError'; export { wrapLoadWithSentry, wrapServerLoadWithSentry } from './load'; export { sentryHandle } from './handle'; +export { wrapServerRouteWithSentry } from './serverRoute'; /** * Tracks the Svelte component's initialization and mounting operation as well as diff --git a/packages/sveltekit/src/server/load.ts b/packages/sveltekit/src/server/load.ts index fe61ed0913bd..82a8c548c6ec 100644 --- a/packages/sveltekit/src/server/load.ts +++ b/packages/sveltekit/src/server/load.ts @@ -1,49 +1,13 @@ -import { - SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, - SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, - captureException, - startSpan, -} from '@sentry/node'; -import { addNonEnumerableProperty, objectify } from '@sentry/utils'; +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, startSpan } from '@sentry/node'; +import { addNonEnumerableProperty } from '@sentry/utils'; import type { LoadEvent, ServerLoadEvent } from '@sveltejs/kit'; import type { SentryWrappedFlag } from '../common/utils'; -import { isHttpError, isRedirect } from '../common/utils'; -import { flushIfServerless } from './utils'; +import { flushIfServerless, sendErrorToSentry } from './utils'; type PatchedLoadEvent = LoadEvent & SentryWrappedFlag; type PatchedServerLoadEvent = ServerLoadEvent & SentryWrappedFlag; -function sendErrorToSentry(e: unknown): unknown { - // In case we have a primitive, wrap it in the equivalent wrapper class (string -> String, etc.) so that we can - // store a seen flag on it. - const objectifiedErr = objectify(e); - - // The error() helper is commonly used to throw errors in load functions: https://kit.svelte.dev/docs/modules#sveltejs-kit-error - // If we detect a thrown error that is an instance of HttpError, we don't want to capture 4xx errors as they - // could be noisy. - // Also the `redirect(...)` helper is used to redirect users from one page to another. We don't want to capture thrown - // `Redirect`s as they're not errors but expected behaviour - if ( - isRedirect(objectifiedErr) || - (isHttpError(objectifiedErr) && objectifiedErr.status < 500 && objectifiedErr.status >= 400) - ) { - return objectifiedErr; - } - - captureException(objectifiedErr, { - mechanism: { - type: 'sveltekit', - handled: false, - data: { - function: 'load', - }, - }, - }); - - return objectifiedErr; -} - /** * @inheritdoc */ @@ -81,7 +45,7 @@ export function wrapLoadWithSentry any>(origLoad: T) () => wrappingTarget.apply(thisArg, args), ); } catch (e) { - sendErrorToSentry(e); + sendErrorToSentry(e, 'load'); throw e; } finally { await flushIfServerless(); @@ -146,7 +110,7 @@ export function wrapServerLoadWithSentry any>(origSe () => wrappingTarget.apply(thisArg, args), ); } catch (e: unknown) { - sendErrorToSentry(e); + sendErrorToSentry(e, 'load'); throw e; } finally { await flushIfServerless(); diff --git a/packages/sveltekit/src/server/serverRoute.ts b/packages/sveltekit/src/server/serverRoute.ts new file mode 100644 index 000000000000..5daee3246502 --- /dev/null +++ b/packages/sveltekit/src/server/serverRoute.ts @@ -0,0 +1,66 @@ +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, startSpan } from '@sentry/node'; +import { addNonEnumerableProperty } from '@sentry/utils'; +import type { RequestEvent } from '@sveltejs/kit'; +import { flushIfServerless, sendErrorToSentry } from './utils'; + +type PatchedServerRouteEvent = RequestEvent & { __sentry_wrapped__?: boolean }; + +/** + * Wraps a server route handler for API or server routes registered in `+server.(js|js)` files. + * + * This function will automatically capture any errors that occur during the execution of the route handler + * and it will start a span for the duration of your route handler. + * + * @example + * ```js + * import { wrapServerRouteWithSentry } from '@sentry/sveltekit'; + * + * const get = async event => { + * return new Response(JSON.stringify({ message: 'hello world' })); + * } + * + * export const GET = wrapServerRouteWithSentry(get); + * ``` + * + * @param originalRouteHandler your server route handler + * @param httpMethod the HTTP method of your route handler + * + * @returns a wrapped version of your server route handler + */ +export function wrapServerRouteWithSentry( + originalRouteHandler: (request: RequestEvent) => Promise, +): (requestEvent: RequestEvent) => Promise { + return new Proxy(originalRouteHandler, { + apply: async (wrappingTarget, thisArg, args) => { + const event = args[0] as PatchedServerRouteEvent; + const routeId = event.route && event.route.id; + const httpMethod = event.request.method; + + if (event.__sentry_wrapped__) { + return wrappingTarget.apply(thisArg, args); + } + + addNonEnumerableProperty(event as unknown as Record, '__sentry_wrapped__', true); + + try { + return await startSpan( + { + name: `${httpMethod} ${routeId || 'Server Route'}`, + op: `function.sveltekit.server.${httpMethod.toLowerCase()}`, + attributes: { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.function.sveltekit', + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route', + }, + onlyIfParent: true, + }, + () => wrappingTarget.apply(thisArg, args), + ); + } catch (e) { + sendErrorToSentry(e, 'serverRoute'); + throw e; + } finally { + await flushIfServerless(); + } + }, + }); +} diff --git a/packages/sveltekit/src/server/utils.ts b/packages/sveltekit/src/server/utils.ts index 0db8ee893783..8d7f2c649331 100644 --- a/packages/sveltekit/src/server/utils.ts +++ b/packages/sveltekit/src/server/utils.ts @@ -1,8 +1,9 @@ -import { flush } from '@sentry/node'; -import { logger } from '@sentry/utils'; +import { captureException, flush } from '@sentry/node'; +import { logger, objectify } from '@sentry/utils'; import type { RequestEvent } from '@sveltejs/kit'; import { DEBUG_BUILD } from '../common/debug-build'; +import { isHttpError, isRedirect } from '../common/utils'; /** * Takes a request event and extracts traceparent and DSC data @@ -31,3 +32,41 @@ export async function flushIfServerless(): Promise { } } } + +/** + * Extracts a server-side sveltekit error, filters a couple of known errors we don't want to capture + * and captures the error via `captureException`. + * + * @param e error + * + * @returns an objectified version of @param e + */ +export function sendErrorToSentry(e: unknown, handlerFn: 'handle' | 'load' | 'serverRoute'): object { + // In case we have a primitive, wrap it in the equivalent wrapper class (string -> String, etc.) so that we can + // store a seen flag on it. + const objectifiedErr = objectify(e); + + // The error() helper is commonly used to throw errors in load functions: https://kit.svelte.dev/docs/modules#sveltejs-kit-error + // If we detect a thrown error that is an instance of HttpError, we don't want to capture 4xx errors as they + // could be noisy. + // Also the `redirect(...)` helper is used to redirect users from one page to another. We don't want to capture thrown + // `Redirect`s as they're not errors but expected behaviour + if ( + isRedirect(objectifiedErr) || + (isHttpError(objectifiedErr) && objectifiedErr.status < 500 && objectifiedErr.status >= 400) + ) { + return objectifiedErr; + } + + captureException(objectifiedErr, { + mechanism: { + type: 'sveltekit', + handled: false, + data: { + function: handlerFn, + }, + }, + }); + + return objectifiedErr; +} From ad0bb5e324666220e6dbe58f4b8bcb0b74884a36 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 6 Aug 2024 10:29:35 +0200 Subject: [PATCH 2/4] add unit tests --- .../sveltekit/test/server/serverRoute.test.ts | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 packages/sveltekit/test/server/serverRoute.test.ts diff --git a/packages/sveltekit/test/server/serverRoute.test.ts b/packages/sveltekit/test/server/serverRoute.test.ts new file mode 100644 index 000000000000..de99db5a548e --- /dev/null +++ b/packages/sveltekit/test/server/serverRoute.test.ts @@ -0,0 +1,133 @@ +import * as SentryNode from '@sentry/node'; +import type { NumericRange } from '@sveltejs/kit'; +import { type RequestEvent, error, redirect } from '@sveltejs/kit'; +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + wrapServerRouteWithSentry, +} from '../../src/server'; + +describe('wrapServerRouteWithSentry', () => { + const originalRouteHandler = vi.fn(); + + const getRequestEventMock = () => + ({ + request: { + method: 'GET', + }, + route: { + id: '/api/users/:id', + }, + }) as RequestEvent; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + describe('wraps a server route span around the original server route handler', () => { + const startSpanSpy = vi.spyOn(SentryNode, 'startSpan'); + + it('assigns the route id as name if available', () => { + const wrappedRouteHandler = wrapServerRouteWithSentry(originalRouteHandler); + + wrappedRouteHandler(getRequestEventMock() as RequestEvent); + + expect(startSpanSpy).toHaveBeenCalledWith( + { + attributes: { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.function.sveltekit', + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route', + }, + name: 'GET /api/users/:id', + onlyIfParent: true, + op: 'function.sveltekit.server.get', + }, + expect.any(Function), + ); + + expect(originalRouteHandler).toHaveBeenCalledTimes(1); + }); + + it('falls back to a generic name if route id is not available', () => { + const wrappedRouteHandler = wrapServerRouteWithSentry(originalRouteHandler); + + wrappedRouteHandler({ ...getRequestEventMock(), route: undefined } as unknown as RequestEvent); + + expect(startSpanSpy).toHaveBeenCalledWith( + { + attributes: { + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.function.sveltekit', + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route', + }, + name: 'GET Server Route', + onlyIfParent: true, + op: 'function.sveltekit.server.get', + }, + expect.any(Function), + ); + + expect(originalRouteHandler).toHaveBeenCalledTimes(1); + }); + }); + + const captureExceptionSpy = vi.spyOn(SentryNode, 'captureException'); + describe('captures server route errors', () => { + it('captures and rethrows normal server route error', async () => { + const error = new Error('Server Route Error'); + + const wrappedRouteHandler = wrapServerRouteWithSentry(() => { + throw error; + }); + + await expect(async () => { + await wrappedRouteHandler(getRequestEventMock() as RequestEvent); + }).rejects.toThrowError('Server Route Error'); + + expect(captureExceptionSpy).toHaveBeenCalledWith(error, { + mechanism: { type: 'sveltekit', handled: false, data: { function: 'serverRoute' } }, + }); + }); + + it.each([500, 501, 599])('captures and rethrows %s error() calls', async status => { + const wrappedRouteHandler = wrapServerRouteWithSentry(() => { + error(status as NumericRange<400, 599>, `error(${status}) error`); + }); + + await expect(async () => { + await wrappedRouteHandler(getRequestEventMock() as RequestEvent); + }).rejects.toThrow(); + + expect(captureExceptionSpy).toHaveBeenCalledWith( + { body: { message: `error(${status}) error` }, status }, + { + mechanism: { type: 'sveltekit', handled: false, data: { function: 'serverRoute' } }, + }, + ); + }); + + it.each([400, 401, 499])("doesn't capture but rethrows %s error() calls", async status => { + const wrappedRouteHandler = wrapServerRouteWithSentry(() => { + error(status as NumericRange<400, 599>, `error(${status}) error`); + }); + + await expect(async () => { + await wrappedRouteHandler(getRequestEventMock() as RequestEvent); + }).rejects.toThrow(); + + expect(captureExceptionSpy).not.toHaveBeenCalled(); + }); + + it.each([300, 301, 308])("doesn't capture redirect(%s) calls", async status => { + const wrappedRouteHandler = wrapServerRouteWithSentry(() => { + redirect(status as NumericRange<300, 308>, '/redirect'); + }); + + await expect(async () => { + await wrappedRouteHandler(getRequestEventMock() as RequestEvent); + }).rejects.toThrow(); + + expect(captureExceptionSpy).not.toHaveBeenCalled(); + }); + }); +}); From 61ddb29e3fec6b06efabd81af69fb5abd7527560 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 6 Aug 2024 10:39:18 +0200 Subject: [PATCH 3/4] cleanup --- .../src/routes/wrap-server-route/+page.ts | 1 - .../src/routes/wrap-server-route/api/+server.ts | 2 -- .../src/routes/wrap-server-route/api/image.png | Bin 76341 -> 0 bytes .../sveltekit-2/tests/errors.server.test.ts | 1 - 4 files changed, 4 deletions(-) delete mode 100644 dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/image.png diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.ts b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.ts index 8289b0167dbe..3f3f5942366e 100644 --- a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.ts +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/+page.ts @@ -1,7 +1,6 @@ export const load = async ({ fetch }) => { const res = await fetch('/wrap-server-route/api'); const myMessage = await res.json(); - console.log({ myMessage }); return { myMessage: myMessage.myMessage, }; diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/+server.ts b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/+server.ts index 4f69ca0d0785..6ba210690ad5 100644 --- a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/+server.ts +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/+server.ts @@ -2,7 +2,5 @@ import { wrapServerRouteWithSentry } from '@sentry/sveltekit'; import { error } from '@sveltejs/kit'; export const GET = wrapServerRouteWithSentry(async () => { - console.log('API call'); error(500, 'error() error'); - return new Response(JSON.stringify({ myMessage: 'hi from API route' })); }); diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/image.png b/dev-packages/e2e-tests/test-applications/sveltekit-2/src/routes/wrap-server-route/api/image.png deleted file mode 100644 index b62f8885de0b92f1475b15d7e066f48a794d9f6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76341 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 diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/tests/errors.server.test.ts b/dev-packages/e2e-tests/test-applications/sveltekit-2/tests/errors.server.test.ts index 8d8a1f9a0bdd..fd2e58e9c2a3 100644 --- a/dev-packages/e2e-tests/test-applications/sveltekit-2/tests/errors.server.test.ts +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2/tests/errors.server.test.ts @@ -61,7 +61,6 @@ test.describe('server-side errors', () => { test('captures error() thrown in server route with `wrapServerRouteWithSentry`', async ({ page }) => { const errorEventPromise = waitForError('sveltekit-2', errorEvent => { - console.log(errorEvent?.exception?.values?.[0]?.stacktrace); return errorEvent?.exception?.values?.[0]?.value === "'HttpError' captured as exception with keys: body, status"; }); From ed0701f27391c68620f39208555cd57ca43df94d Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 8 Aug 2024 14:44:10 +0200 Subject: [PATCH 4/4] bail out earlier if double wrapped --- packages/sveltekit/src/server/serverRoute.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/sveltekit/src/server/serverRoute.ts b/packages/sveltekit/src/server/serverRoute.ts index 5daee3246502..a5f13f9a73ca 100644 --- a/packages/sveltekit/src/server/serverRoute.ts +++ b/packages/sveltekit/src/server/serverRoute.ts @@ -33,13 +33,14 @@ export function wrapServerRouteWithSentry( return new Proxy(originalRouteHandler, { apply: async (wrappingTarget, thisArg, args) => { const event = args[0] as PatchedServerRouteEvent; - const routeId = event.route && event.route.id; - const httpMethod = event.request.method; if (event.__sentry_wrapped__) { return wrappingTarget.apply(thisArg, args); } + const routeId = event.route && event.route.id; + const httpMethod = event.request.method; + addNonEnumerableProperty(event as unknown as Record, '__sentry_wrapped__', true); try {