From 81639f808f11bcb21742d5121c0355621896b5e4 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 14 Aug 2024 18:19:03 +0200 Subject: [PATCH] add test --- .../tracing/meta-tags-twp-errors/server.js | 31 +++++++++++++ .../tracing/meta-tags-twp-errors/test.ts | 43 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/server.js create mode 100644 dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts diff --git a/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/server.js b/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/server.js new file mode 100644 index 000000000000..af879aa5787d --- /dev/null +++ b/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/server.js @@ -0,0 +1,31 @@ +const { loggingTransport } = require('@sentry-internal/node-integration-tests'); +const Sentry = require('@sentry/node'); + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + transport: loggingTransport, +}); + +// express must be required after Sentry is initialized +const express = require('express'); +const { startExpressServerAndSendPortToRunner } = require('@sentry-internal/node-integration-tests'); + +const app = express(); + +app.get('/test', (_req, res) => { + Sentry.captureException(new Error('This is a test error')); + Sentry.getClient().on('beforeEnvelope', envelope => { + const event = envelope[1][0][1]; + if (event.exception.values[0].value === 'This is a test error') { + res.send({ + traceData: Sentry.getTraceData(), + traceMetaTags: Sentry.getTraceMetaTags(), + errorTraceContext: event.contexts.trace, + }); + } + }); +}); + +Sentry.setupExpressErrorHandler(app); + +startExpressServerAndSendPortToRunner(app); diff --git a/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts b/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts new file mode 100644 index 000000000000..aed6914ecaaf --- /dev/null +++ b/dev-packages/node-integration-tests/suites/tracing/meta-tags-twp-errors/test.ts @@ -0,0 +1,43 @@ +import { cleanupChildProcesses, createRunner } from '../../../utils/runner'; + +describe('errors in Tracing without Performance mode', () => { + afterAll(() => { + cleanupChildProcesses(); + }); + + test('error has the same traceId as obtained via getTraceData()/getTraceMetaTags()', async () => { + const runner = createRunner(__dirname, 'server.js').start(); + + const response = await runner.makeRequest('get', '/test'); + + console.log('response: ', response); + + const { traceData, traceMetaTags, errorTraceContext } = response as { + traceData: Record; + traceMetaTags: string; + errorTraceContext: { + trace_id: string; + span_id: string; + }; + }; + + const traceId = errorTraceContext?.trace_id; + const spanId = errorTraceContext?.span_id; + + expect(traceId).toMatch(/^[a-f0-9]{32}$/); + expect(spanId).toMatch(/^[a-f0-9]{16}$/); + + expect(errorTraceContext).toEqual({ + trace_id: traceId, + span_id: spanId, + }); + + expect(traceData).toEqual({ + 'sentry-trace': `${traceId}-${spanId}`, + baggage: expect.stringContaining(`sentry-trace_id=${traceId}`), + }); + + expect(traceMetaTags).toContain(`content="${traceId}-${spanId}"/>\n`); + expect(traceMetaTags).toContain(`sentry-trace_id=${traceId}`); + }); +});