diff --git a/dev-packages/e2e-tests/test-applications/node-express-app/tests/trpc.test.ts b/dev-packages/e2e-tests/test-applications/node-express-app/tests/trpc.test.ts index 745e89752e9e..4b287946d86d 100644 --- a/dev-packages/e2e-tests/test-applications/node-express-app/tests/trpc.test.ts +++ b/dev-packages/e2e-tests/test-applications/node-express-app/tests/trpc.test.ts @@ -3,14 +3,12 @@ import { waitForError, waitForTransaction } from '@sentry-internal/event-proxy-s import { createTRPCProxyClient, httpBatchLink } from '@trpc/client'; import type { AppRouter } from '../src/app'; -const authToken = process.env.E2E_TEST_AUTH_TOKEN; -const sentryTestOrgSlug = process.env.E2E_TEST_SENTRY_ORG_SLUG; -const sentryTestProject = process.env.E2E_TEST_SENTRY_TEST_PROJECT; -const EVENT_POLLING_TIMEOUT = 90_000; - -test('Should record transaction for trpc query', async ({ baseURL }) => { +test('Should record span for trpc query', async ({ baseURL }) => { const transactionEventPromise = waitForTransaction('node-express-app', transactionEvent => { - return transactionEvent.transaction === 'trpc/getSomething'; + return ( + transactionEvent.transaction === 'GET /trpc' && + !!transactionEvent.spans?.find(span => span.description === 'trpc/getSomething') + ); }); const trpcClient = createTRPCProxyClient({ @@ -26,6 +24,16 @@ test('Should record transaction for trpc query', async ({ baseURL }) => { await expect(transactionEventPromise).resolves.toBeDefined(); const transaction = await transactionEventPromise; + expect(transaction.spans).toContainEqual( + expect.objectContaining({ + data: expect.objectContaining({ + 'sentry.op': 'rpc.server', + 'sentry.origin': 'auto.rpc.trpc', + }), + description: `trpc/getSomething`, + }), + ); + expect(transaction.contexts?.trpc).toMatchObject({ procedure_type: 'query', input: 'foobar', @@ -34,7 +42,10 @@ test('Should record transaction for trpc query', async ({ baseURL }) => { test('Should record transaction for trpc mutation', async ({ baseURL }) => { const transactionEventPromise = waitForTransaction('node-express-app', transactionEvent => { - return transactionEvent.transaction === 'trpc/createSomething'; + return ( + transactionEvent.transaction === 'POST /trpc' && + !!transactionEvent.spans?.find(span => span.description === 'trpc/createSomething') + ); }); const trpcClient = createTRPCProxyClient({ @@ -50,6 +61,16 @@ test('Should record transaction for trpc mutation', async ({ baseURL }) => { await expect(transactionEventPromise).resolves.toBeDefined(); const transaction = await transactionEventPromise; + expect(transaction.spans).toContainEqual( + expect.objectContaining({ + data: expect.objectContaining({ + 'sentry.op': 'rpc.server', + 'sentry.origin': 'auto.rpc.trpc', + }), + description: `trpc/createSomething`, + }), + ); + expect(transaction.contexts?.trpc).toMatchObject({ procedure_type: 'mutation', }); @@ -57,7 +78,10 @@ test('Should record transaction for trpc mutation', async ({ baseURL }) => { test('Should record transaction and error for a crashing trpc handler', async ({ baseURL }) => { const transactionEventPromise = waitForTransaction('node-express-app', transactionEvent => { - return transactionEvent.transaction === 'trpc/crashSomething'; + return ( + transactionEvent.transaction === 'POST /trpc' && + !!transactionEvent.spans?.find(span => span.description === 'trpc/crashSomething') + ); }); const errorEventPromise = waitForError('node-express-app', errorEvent => { @@ -80,7 +104,10 @@ test('Should record transaction and error for a crashing trpc handler', async ({ test('Should record transaction and error for a trpc handler that returns a status code', async ({ baseURL }) => { const transactionEventPromise = waitForTransaction('node-express-app', transactionEvent => { - return transactionEvent.transaction === 'trpc/dontFindSomething'; + return ( + transactionEvent.transaction === 'POST /trpc' && + !!transactionEvent.spans?.find(span => span.description === 'trpc/dontFindSomething') + ); }); const errorEventPromise = waitForError('node-express-app', errorEvent => { diff --git a/packages/core/src/trpc.ts b/packages/core/src/trpc.ts index f2cc6656d62d..1320f0ff15bc 100644 --- a/packages/core/src/trpc.ts +++ b/packages/core/src/trpc.ts @@ -55,7 +55,6 @@ export function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) { { name: `trpc/${path}`, op: 'rpc.server', - forceTransaction: true, attributes: { [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route', [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.rpc.trpc',