Skip to content

Commit

Permalink
test: Add tests to demonstrate wrong scope data loss
Browse files Browse the repository at this point in the history
  • Loading branch information
Lms24 committed Mar 19, 2024
1 parent 0b8540f commit 270c6b6
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Sentry.setTag('global', 'tag');
setTimeout(() => {
Sentry.withScope(scope => {
scope.setTag('local', 'tag');
throw new Error('test error');
});
}, 10);
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { expect } from '@playwright/test';
import type { Event } from '@sentry/types';

import { sentryTest } from '../../../../utils/fixtures';
import { getFirstSentryEnvelopeRequest } from '../../../../utils/helpers';

sentryTest('scope is applied to thrown error', async ({ getLocalTestPath, page }) => {
const url = await getLocalTestPath({ testDir: __dirname });

const eventData = await getFirstSentryEnvelopeRequest<Event>(page, url);

const ex = eventData.exception?.values ? eventData.exception.values[0] : undefined;

expect(eventData.tags).toMatchObject({ global: 'tag', local: 'tag' });
expect(ex?.value).toBe('test error');
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests';
import * as Sentry from '@sentry/node-experimental';
import express from 'express';

const app = express();

Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
release: '1.0',
transport: loggingTransport,
});

app.use(Sentry.Handlers.requestHandler());

Sentry.setTag('global', 'tag');

app.get('/test/express', () => {
Sentry.withScope(scope => {
scope.setTag('local', 'tag');
throw new Error('test_error');
})
});

app.use(Sentry.Handlers.errorHandler());

startExpressServerAndSendPortToRunner(app);
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { cleanupChildProcesses, createRunner } from '../../../utils/runner';

afterAll(() => {
cleanupChildProcesses();
});

test('applies withScope scope to thrown error', done => {
const runner = createRunner(__dirname, 'server.ts')
.ignore('session', 'sessions')
.expect({
event: {
exception: {
values: [
{
mechanism: {
type: 'middleware',
handled: false,
},
type: 'Error',
value: 'test_error',
stacktrace: {
frames: expect.arrayContaining([
expect.objectContaining({
function: expect.any(String),
lineno: expect.any(Number),
colno: expect.any(Number),
}),
]),
},
},
],
},
tags: {
'global': 'tag',
'local': 'tag', // This tag is missing :(
}
},
})
.start(done);

expect(() => runner.makeRequest('get', '/test/express')).rejects.toThrow();
});

0 comments on commit 270c6b6

Please sign in to comment.