Skip to content

Commit c1b4a47

Browse files
authored
test(node): Fix node session aggregate tests (#11334)
Ports these tests to the new test runner - everything still seems to be working as expected 🎉
1 parent 2389646 commit c1b4a47

File tree

4 files changed

+88
-111
lines changed
  • dev-packages/node-integration-tests

4 files changed

+88
-111
lines changed
Lines changed: 28 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,34 @@
1-
import path from 'path';
2-
import nock from 'nock';
1+
import { cleanupChildProcesses, createRunner } from '../../../utils/runner';
32

4-
import { TestEnv } from '../../../utils';
5-
6-
// TODO: Convert this test to the new test runner
7-
// eslint-disable-next-line jest/no-disabled-tests
8-
test.skip('should aggregate successful and crashed sessions', async () => {
9-
const env = await TestEnv.init(__dirname, `${path.resolve(__dirname, '..')}/server.ts`);
10-
11-
const envelope = (
12-
await Promise.race([
13-
env.getMultipleEnvelopeRequest({ url: `${env.url}/success`, endServer: false, envelopeType: 'sessions' }),
14-
env.getMultipleEnvelopeRequest({ url: `${env.url}/error_unhandled`, endServer: false, envelopeType: 'sessions' }),
15-
env.getMultipleEnvelopeRequest({
16-
url: `${env.url}/success_next`,
17-
endServer: false,
18-
envelopeType: 'sessions',
19-
}),
20-
])
21-
)[0];
22-
23-
nock.cleanAll();
24-
env.server.close();
25-
26-
expect(envelope[0]).toMatchObject({
27-
sent_at: expect.any(String),
28-
sdk: {
29-
name: 'sentry.javascript.node',
30-
version: expect.any(String),
31-
},
32-
});
3+
afterEach(() => {
4+
cleanupChildProcesses();
5+
});
336

34-
expect(envelope[1]).toMatchObject({
35-
type: 'sessions',
7+
test('should aggregate successful and crashed sessions', async () => {
8+
let _done: undefined | (() => void);
9+
const promise = new Promise<void>(resolve => {
10+
_done = resolve;
3611
});
3712

38-
expect(envelope[2]).toMatchObject({
39-
aggregates: [
40-
{
41-
started: expect.any(String),
42-
exited: 2,
43-
crashed: 1,
13+
const runner = createRunner(__dirname, 'server.ts')
14+
.ignore('transaction', 'event', 'session')
15+
.expectError()
16+
.expect({
17+
sessions: {
18+
aggregates: [
19+
{
20+
started: expect.any(String),
21+
exited: 2,
22+
crashed: 1,
23+
},
24+
],
4425
},
45-
],
46-
});
26+
})
27+
.start(_done);
28+
29+
runner.makeRequest('get', '/success');
30+
runner.makeRequest('get', '/error_unhandled');
31+
runner.makeRequest('get', '/success_next');
32+
33+
await promise;
4734
});
Lines changed: 29 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,35 @@
1-
import path from 'path';
1+
import { cleanupChildProcesses, createRunner } from '../../../utils/runner';
22

3-
import { TestEnv } from '../../../utils';
4-
5-
// TODO: Convert this test to the new test runner
6-
// eslint-disable-next-line jest/no-disabled-tests
7-
test.skip('should aggregate successful, crashed and erroneous sessions', async () => {
8-
const env = await TestEnv.init(__dirname, `${path.resolve(__dirname, '..')}/server.ts`);
9-
10-
const aggregateSessionEnvelope = await Promise.race([
11-
env.getEnvelopeRequest({ url: `${env.url}/success`, endServer: false, envelopeType: 'sessions' }),
12-
env.getEnvelopeRequest({ url: `${env.url}/error_handled`, endServer: false, envelopeType: 'sessions' }),
13-
env.getEnvelopeRequest({ url: `${env.url}/error_unhandled`, endServer: false, envelopeType: 'sessions' }),
14-
]);
15-
16-
await new Promise(resolve => env.server.close(resolve));
17-
18-
expect(aggregateSessionEnvelope[0]).toMatchObject({
19-
sent_at: expect.any(String),
20-
sdk: {
21-
name: 'sentry.javascript.node',
22-
version: expect.any(String),
23-
},
24-
});
3+
afterEach(() => {
4+
cleanupChildProcesses();
5+
});
256

26-
expect(aggregateSessionEnvelope[1]).toMatchObject({
27-
type: 'sessions',
7+
test('should aggregate successful, crashed and erroneous sessions', async () => {
8+
let _done: undefined | (() => void);
9+
const promise = new Promise<void>(resolve => {
10+
_done = resolve;
2811
});
2912

30-
expect(aggregateSessionEnvelope[2]).toMatchObject({
31-
aggregates: [
32-
{
33-
started: expect.any(String),
34-
exited: 1,
35-
crashed: 1,
36-
errored: 1,
13+
const runner = createRunner(__dirname, 'server.ts')
14+
.ignore('transaction', 'event', 'session')
15+
.expectError()
16+
.expect({
17+
sessions: {
18+
aggregates: [
19+
{
20+
started: expect.any(String),
21+
exited: 1,
22+
crashed: 1,
23+
errored: 1,
24+
},
25+
],
3726
},
38-
],
39-
});
27+
})
28+
.start(_done);
29+
30+
runner.makeRequest('get', '/success');
31+
runner.makeRequest('get', '/error_handled');
32+
runner.makeRequest('get', '/error_unhandled');
33+
34+
await promise;
4035
});
Lines changed: 27 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,33 @@
1-
import path from 'path';
2-
import nock from 'nock';
1+
import { cleanupChildProcesses, createRunner } from '../../../utils/runner';
32

4-
import { TestEnv } from '../../../utils';
5-
6-
// TODO: Convert this test to the new test runner
7-
// eslint-disable-next-line jest/no-disabled-tests
8-
test.skip('should aggregate successful sessions', async () => {
9-
const env = await TestEnv.init(__dirname, `${path.resolve(__dirname, '..')}/server.ts`);
10-
11-
const envelope = await Promise.race([
12-
env.getEnvelopeRequest({ url: `${env.url}/success`, endServer: false, envelopeType: 'sessions' }),
13-
env.getEnvelopeRequest({ url: `${env.url}/success_next`, endServer: false, envelopeType: 'sessions' }),
14-
env.getEnvelopeRequest({ url: `${env.url}/success_slow`, endServer: false, envelopeType: 'sessions' }),
15-
]);
16-
17-
nock.cleanAll();
18-
env.server.close();
19-
20-
expect(envelope).toHaveLength(3);
21-
expect(envelope[0]).toMatchObject({
22-
sent_at: expect.any(String),
23-
sdk: {
24-
name: 'sentry.javascript.node',
25-
version: expect.any(String),
26-
},
27-
});
3+
afterEach(() => {
4+
cleanupChildProcesses();
5+
});
286

29-
expect(envelope[1]).toMatchObject({
30-
type: 'sessions',
7+
test('should aggregate successful sessions', async () => {
8+
let _done: undefined | (() => void);
9+
const promise = new Promise<void>(resolve => {
10+
_done = resolve;
3111
});
3212

33-
expect(envelope[2]).toMatchObject({
34-
aggregates: [
35-
{
36-
started: expect.any(String),
37-
exited: 3,
13+
const runner = createRunner(__dirname, 'server.ts')
14+
.ignore('transaction', 'event', 'session')
15+
.expectError()
16+
.expect({
17+
sessions: {
18+
aggregates: [
19+
{
20+
started: expect.any(String),
21+
exited: 3,
22+
},
23+
],
3824
},
39-
],
40-
});
25+
})
26+
.start(_done);
27+
28+
runner.makeRequest('get', '/success');
29+
runner.makeRequest('get', '/success_next');
30+
runner.makeRequest('get', '/success_slow');
31+
32+
await promise;
4133
});

dev-packages/node-integration-tests/utils/runner.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { spawn, spawnSync } from 'child_process';
22
import { join } from 'path';
3-
import type { Envelope, EnvelopeItemType, Event, SerializedSession } from '@sentry/types';
3+
import type { Envelope, EnvelopeItemType, Event, SerializedSession, SessionAggregates } from '@sentry/types';
44
import axios from 'axios';
55
import { createBasicSentryServer } from './server';
66

@@ -113,6 +113,9 @@ type Expected =
113113
}
114114
| {
115115
session: Partial<SerializedSession> | ((event: SerializedSession) => void);
116+
}
117+
| {
118+
sessions: Partial<SessionAggregates> | ((event: SessionAggregates) => void);
116119
};
117120

118121
/** Creates a test runner */

0 commit comments

Comments
 (0)