From 90431dbd8c0bb27dccb3987651e452422738f3d1 Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Mon, 5 Oct 2026 14:59:14 +0200 Subject: [PATCH 1/2] test(aws-serverless): Port GraphQL test to span streaming Co-Authored-By: GPT-6 --- .../useOperationNameForRootSpan/scenario.js | 1 - .../useOperationNameForRootSpan/test.ts | 42 ++++++++++++------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/scenario.js b/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/scenario.js index a37f51672bba..4023421921b5 100644 --- a/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/scenario.js +++ b/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/scenario.js @@ -2,7 +2,6 @@ const { loggingTransport } = require('@sentry-internal/node-integration-tests'); const Sentry = require('@sentry/aws-serverless'); Sentry.init({ - traceLifecycle: 'static', dsn: 'https://public@dsn.ingest.sentry.io/1337', tracesSampleRate: 1.0, integrations: [Sentry.graphqlIntegration({ useOperationNameForRootSpan: true })], diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/test.ts index 1138a4b4c6ca..52d9c85d697a 100644 --- a/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/test.ts +++ b/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/test.ts @@ -1,17 +1,6 @@ import { afterAll, describe, expect, test } from 'vitest'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; -const EXPECTED_TRANSCATION = { - transaction: 'Test Transaction (query GetHello)', - spans: expect.arrayContaining([ - expect.objectContaining({ - description: 'query GetHello', - origin: 'auto.graphql.diagnostic_channel', - status: 'ok', - }), - ]), -}; - describe('graphqlIntegration', () => { afterAll(() => { cleanupChildProcesses(); @@ -19,9 +8,34 @@ describe('graphqlIntegration', () => { test('should use GraphQL operation name for root span if useOperationNameForRootSpan is set', async () => { await createRunner(__dirname, 'scenario.js') - .ignore('event') - .expect({ transaction: { transaction: 'Test Server Start' } }) - .expect({ transaction: EXPECTED_TRANSCATION }) + .expect({ + span: container => { + expect(container.items.find(span => span.is_segment && span.name === 'Test Server Start')).toBeDefined(); + const segment = container.items.find(span => span.is_segment && span.name === 'Test Transaction'); + expect(segment).toBeDefined(); + expect(segment?.name).toBe('Test Transaction'); + const children = container.items.filter( + span => !span.is_segment && span.attributes['sentry.segment.id']?.value === segment?.span_id, + ); + + expect(segment?.attributes['sentry.graphql.operation']).toEqual({ + value: 'query GetHello', + type: 'string', + }); + const executeSpan = children.find(span => span.attributes['graphql.processing.type']?.value === 'execute'); + expect(executeSpan).toBeDefined(); + expect(executeSpan?.name).toBe('GraphQL query'); + expect(executeSpan?.status).toBe('ok'); + expect(executeSpan?.attributes['graphql.operation.name']).toEqual({ + value: 'GetHello', + type: 'string', + }); + expect(executeSpan?.attributes['sentry.origin']).toEqual({ + value: 'auto.graphql.diagnostic_channel', + type: 'string', + }); + }, + }) .start() .completed(); }); From 9051c9a5e9a2ba0476ce2e330e98584888e20fcf Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Mon, 5 Oct 2026 15:08:57 +0200 Subject: [PATCH 2/2] test(aws-serverless): Remove redundant GraphQL assertions Co-Authored-By: GPT-6 --- .../graphql/useOperationNameForRootSpan/test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/test.ts b/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/test.ts index 52d9c85d697a..723e6a9e3d95 100644 --- a/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/test.ts +++ b/dev-packages/node-integration-tests/suites/aws-serverless/graphql/useOperationNameForRootSpan/test.ts @@ -8,12 +8,11 @@ describe('graphqlIntegration', () => { test('should use GraphQL operation name for root span if useOperationNameForRootSpan is set', async () => { await createRunner(__dirname, 'scenario.js') + .ignore('event') .expect({ span: container => { expect(container.items.find(span => span.is_segment && span.name === 'Test Server Start')).toBeDefined(); const segment = container.items.find(span => span.is_segment && span.name === 'Test Transaction'); - expect(segment).toBeDefined(); - expect(segment?.name).toBe('Test Transaction'); const children = container.items.filter( span => !span.is_segment && span.attributes['sentry.segment.id']?.value === segment?.span_id, ); @@ -23,7 +22,6 @@ describe('graphqlIntegration', () => { type: 'string', }); const executeSpan = children.find(span => span.attributes['graphql.processing.type']?.value === 'execute'); - expect(executeSpan).toBeDefined(); expect(executeSpan?.name).toBe('GraphQL query'); expect(executeSpan?.status).toBe('ok'); expect(executeSpan?.attributes['graphql.operation.name']).toEqual({