Skip to content

Commit 61f2448

Browse files
committed
test(replay): Add test & comment for replay event creation
1 parent fc9b6d8 commit 61f2448

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
@@ -949,6 +949,42 @@ export class ReplayContainer implements ReplayContainerInterface {
949949
replayType: this.session?.sampled,
950950
};
951951

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

954990
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)