Skip to content

Commit 5faa33a

Browse files
authored
test(browser): Add test for captureConsole (#11831)
Adding tests for #11829. backport of #11830
1 parent b46a735 commit 5faa33a

File tree

3 files changed

+135
-0
lines changed

3 files changed

+135
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import * as Sentry from '@sentry/browser';
2+
import { captureConsoleIntegration } from '@sentry/browser';
3+
4+
window.Sentry = Sentry;
5+
6+
Sentry.init({
7+
dsn: 'https://[email protected]/1337',
8+
integrations: [captureConsoleIntegration()],
9+
autoSessionTracking: false,
10+
});
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
console.log('console log');
2+
console.warn('console warn');
3+
console.error('console error');
4+
console.info('console info');
5+
console.trace('console trace');
6+
7+
console.error(new Error('console error with error object'));
8+
console.trace(new Error('console trace with error object'));
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
import { expect } from '@playwright/test';
2+
import type { Event } from '@sentry/types';
3+
4+
import { sentryTest } from '../../../utils/fixtures';
5+
import { getMultipleSentryEnvelopeRequests } from '../../../utils/helpers';
6+
7+
sentryTest('it captures console messages correctly', async ({ getLocalTestUrl, page }) => {
8+
const url = await getLocalTestUrl({ testDir: __dirname });
9+
10+
await page.route('https://dsn.ingest.sentry.io/**/*', route => {
11+
return route.fulfill({
12+
status: 200,
13+
contentType: 'application/json',
14+
body: JSON.stringify({ id: 'test-id' }),
15+
});
16+
});
17+
18+
const [, events] = await Promise.all([page.goto(url), getMultipleSentryEnvelopeRequests<Event>(page, 7)]);
19+
20+
expect(events).toHaveLength(7);
21+
22+
const logEvent = events.find(event => event.message === 'console log');
23+
const warnEvent = events.find(event => event.message === 'console warn');
24+
const infoEvent = events.find(event => event.message === 'console info');
25+
const errorEvent = events.find(event => event.message === 'console error');
26+
const traceEvent = events.find(event => event.message === 'console trace');
27+
const errorWithErrorEvent = events.find(
28+
event => event.exception && event.exception.values?.[0].value === 'console error with error object',
29+
);
30+
const traceWithErrorEvent = events.find(
31+
event => event.exception && event.exception.values?.[0].value === 'console trace with error object',
32+
);
33+
34+
expect(logEvent).toEqual(
35+
expect.objectContaining({
36+
level: 'log',
37+
logger: 'console',
38+
extra: {
39+
arguments: ['console log'],
40+
},
41+
}),
42+
);
43+
expect(logEvent?.exception).toBeUndefined();
44+
expect(warnEvent).toEqual(
45+
expect.objectContaining({
46+
level: 'warning',
47+
logger: 'console',
48+
extra: {
49+
arguments: ['console warn'],
50+
},
51+
}),
52+
);
53+
expect(warnEvent?.exception).toBeUndefined();
54+
expect(infoEvent).toEqual(
55+
expect.objectContaining({
56+
level: 'info',
57+
logger: 'console',
58+
extra: {
59+
arguments: ['console info'],
60+
},
61+
}),
62+
);
63+
expect(infoEvent?.exception).toBeUndefined();
64+
expect(errorEvent).toEqual(
65+
expect.objectContaining({
66+
level: 'error',
67+
logger: 'console',
68+
extra: {
69+
arguments: ['console error'],
70+
},
71+
}),
72+
);
73+
expect(errorEvent?.exception).toBeUndefined();
74+
expect(traceEvent).toEqual(
75+
expect.objectContaining({
76+
level: 'log',
77+
logger: 'console',
78+
extra: {
79+
arguments: ['console trace'],
80+
},
81+
}),
82+
);
83+
expect(traceEvent?.exception).toBeUndefined();
84+
expect(errorWithErrorEvent).toEqual(
85+
expect.objectContaining({
86+
level: 'error',
87+
logger: 'console',
88+
extra: {
89+
arguments: [
90+
{
91+
message: 'console error with error object',
92+
name: 'Error',
93+
stack: expect.any(String),
94+
},
95+
],
96+
},
97+
exception: expect.any(Object),
98+
}),
99+
);
100+
expect(errorWithErrorEvent?.exception?.values?.[0].value).toBe('console error with error object');
101+
expect(traceWithErrorEvent).toEqual(
102+
expect.objectContaining({
103+
level: 'log',
104+
logger: 'console',
105+
extra: {
106+
arguments: [
107+
{
108+
message: 'console trace with error object',
109+
name: 'Error',
110+
stack: expect.any(String),
111+
},
112+
],
113+
},
114+
}),
115+
);
116+
expect(traceWithErrorEvent?.exception?.values?.[0].value).toBe('console trace with error object');
117+
});

0 commit comments

Comments
 (0)