Skip to content

Commit 78f62e3

Browse files
committed
test(replay): Add test & comment for replay event creation
1 parent 48156d8 commit 78f62e3

File tree

3 files changed

+108
-0
lines changed

3 files changed

+108
-0
lines changed

packages/replay/src/replay.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -954,6 +954,42 @@ export class ReplayContainer implements ReplayContainerInterface {
954954
replayType: this.session?.sampled,
955955
};
956956

957+
/*
958+
For reference, the fully built event looks something like this:
959+
{
960+
"type": "replay_event",
961+
"timestamp": 1670837008.634,
962+
"error_ids": [
963+
"errorId"
964+
],
965+
"trace_ids": [
966+
"traceId"
967+
],
968+
"urls": [
969+
"https://example.com"
970+
],
971+
"replay_id": "eventId",
972+
"segment_id": 3,
973+
"platform": "javascript",
974+
"event_id": "eventId",
975+
"environment": "production",
976+
"sdk": {
977+
"integrations": [
978+
"BrowserTracing",
979+
"Replay"
980+
],
981+
"name": "sentry.javascript.integration.replay",
982+
"version": "7.24.2"
983+
},
984+
"sdkProcessingMetadata": {},
985+
"tags": {
986+
"sessionSampleRate": 1,
987+
"errorSampleRate": 0,
988+
"replayType": "error"
989+
}
990+
}
991+
*/
992+
957993
const envelope = createReplayEnvelope(replayId, replayEvent, payloadWithSequence);
958994

959995
try {
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import { BrowserClient } from '@sentry/browser';
2+
import { getCurrentHub, Hub, Scope } from '@sentry/core';
3+
import { Client, Event } from '@sentry/types';
4+
5+
import { REPLAY_EVENT_NAME } from '../../../src/constants';
6+
import { getReplayEvent } from '../../../src/util/getReplayEvent';
7+
import { getDefaultBrowserClientOptions } from '../../utils/getDefaultBrowserClientOptions';
8+
9+
describe('getReplayEvent', () => {
10+
let hub: Hub;
11+
let client: Client;
12+
let scope: Scope;
13+
14+
beforeEach(() => {
15+
hub = getCurrentHub();
16+
client = new BrowserClient(getDefaultBrowserClientOptions());
17+
hub.bindClient(client);
18+
19+
client = hub.getClient()!;
20+
scope = hub.getScope()!;
21+
});
22+
23+
it('works', async () => {
24+
expect(client).toBeDefined();
25+
expect(scope).toBeDefined();
26+
27+
const replayId = 'replay-ID';
28+
const event: Event = {
29+
// @ts-ignore private api
30+
type: REPLAY_EVENT_NAME,
31+
timestamp: 1670837008.634,
32+
error_ids: ['error-ID'],
33+
trace_ids: ['trace-ID'],
34+
urls: ['https://sentry.io/'],
35+
replay_id: replayId,
36+
segment_id: 3,
37+
};
38+
39+
const replayEvent = await getReplayEvent({ scope, client, replayId, event });
40+
41+
expect(replayEvent).toEqual({
42+
type: 'replay_event',
43+
timestamp: 1670837008.634,
44+
error_ids: ['error-ID'],
45+
trace_ids: ['trace-ID'],
46+
urls: ['https://sentry.io/'],
47+
replay_id: 'replay-ID',
48+
segment_id: 3,
49+
platform: 'javascript',
50+
event_id: 'replay-ID',
51+
environment: 'production',
52+
sdk: {
53+
name: 'sentry.javascript.integration.replay',
54+
version: 'version:Test',
55+
},
56+
sdkProcessingMetadata: {},
57+
breadcrumbs: undefined,
58+
});
59+
});
60+
});
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { createTransport } from '@sentry/core';
2+
import { ClientOptions } from '@sentry/types';
3+
import { resolvedSyncPromise } from '@sentry/utils';
4+
5+
export function getDefaultBrowserClientOptions(options: Partial<ClientOptions> = {}): ClientOptions {
6+
return {
7+
integrations: [],
8+
transport: () => createTransport({ recordDroppedEvent: () => undefined }, _ => resolvedSyncPromise({})),
9+
stackParser: () => [],
10+
...options,
11+
};
12+
}

0 commit comments

Comments
 (0)