Skip to content

Commit 476f51b

Browse files
authored
ref(replay): Remove circular @sentry/browser peerDependency (#6736)
We have only been using this in tests, and can use our own client instead here.
1 parent ef83db6 commit 476f51b

File tree

8 files changed

+60
-35
lines changed

8 files changed

+60
-35
lines changed

packages/replay/package.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,6 @@
5757
"@sentry/types": "7.30.0",
5858
"@sentry/utils": "7.30.0"
5959
},
60-
"peerDependencies": {
61-
"@sentry/browser": ">=7.24.0"
62-
},
6360
"engines": {
6461
"node": ">=12"
6562
},

packages/replay/test/fixtures/error.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import type { SeverityLevel } from '@sentry/browser';
21
import type { Event } from '@sentry/types';
32

43
export function Error(obj?: Event): any {
@@ -31,7 +30,7 @@ export function Error(obj?: Event): any {
3130
},
3231
],
3332
},
34-
level: 'error' as SeverityLevel,
33+
level: 'error',
3534
event_id: 'event_id',
3635
platform: 'javascript',
3736
timestamp,

packages/replay/test/mocks/mockSdk.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import type { BrowserOptions } from '@sentry/browser';
2-
import { init } from '@sentry/browser';
31
import type { Envelope, Transport } from '@sentry/types';
42

53
import type { Replay as ReplayIntegration } from '../../src';
64
import type { ReplayContainer } from '../../src/replay';
75
import type { ReplayConfiguration } from '../../src/types';
6+
import type { TestClientOptions } from '../utils/TestClient';
7+
import { getDefaultClientOptions, init } from '../utils/TestClient';
88

99
export interface MockSdkParams {
1010
replayOptions?: ReplayConfiguration;
11-
sentryOptions?: BrowserOptions;
11+
sentryOptions?: Partial<TestClientOptions>;
1212
autoStart?: boolean;
1313
}
1414

@@ -64,13 +64,13 @@ export async function mockSdk({ replayOptions, sentryOptions, autoStart = true }
6464
});
6565

6666
init({
67+
...getDefaultClientOptions(),
6768
dsn: 'https://[email protected]/1',
6869
autoSessionTracking: false,
6970
sendClientReports: false,
7071
transport: () => new MockTransport(),
7172
replaysSessionSampleRate: 1.0,
7273
replaysOnErrorSampleRate: 0.0,
73-
defaultIntegrations: false,
7474
...sentryOptions,
7575
integrations: [replayIntegration],
7676
});

packages/replay/test/unit/util/createReplayEnvelope.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ describe('Unit | util | createReplayEnvelope', () => {
2020
environment: 'production',
2121
sdk: {
2222
integrations: ['BrowserTracing', 'Replay'],
23-
name: 'sentry.javascript.browser',
23+
name: 'sentry.javascript.unknown',
2424
version: '7.25.0',
2525
},
2626
replay_type: 'error',
@@ -47,7 +47,7 @@ describe('Unit | util | createReplayEnvelope', () => {
4747
expect(envelope).toEqual([
4848
{
4949
event_id: REPLAY_ID,
50-
sdk: { name: 'sentry.javascript.browser', version: '7.25.0' },
50+
sdk: { name: 'sentry.javascript.unknown', version: '7.25.0' },
5151
sent_at: expect.any(String),
5252
},
5353
[
@@ -60,7 +60,7 @@ describe('Unit | util | createReplayEnvelope', () => {
6060
platform: 'javascript',
6161
replay_id: REPLAY_ID,
6262
replay_type: 'error',
63-
sdk: { integrations: ['BrowserTracing', 'Replay'], name: 'sentry.javascript.browser', version: '7.25.0' },
63+
sdk: { integrations: ['BrowserTracing', 'Replay'], name: 'sentry.javascript.unknown', version: '7.25.0' },
6464
segment_id: 3,
6565
tags: { errorSampleRate: 0, sessionSampleRate: 1 },
6666
timestamp: 1670837008.634,
@@ -80,7 +80,7 @@ describe('Unit | util | createReplayEnvelope', () => {
8080
expect(envelope).toEqual([
8181
{
8282
event_id: REPLAY_ID,
83-
sdk: { name: 'sentry.javascript.browser', version: '7.25.0' },
83+
sdk: { name: 'sentry.javascript.unknown', version: '7.25.0' },
8484
sent_at: expect.any(String),
8585
dsn: 'https://[email protected]:1234/123',
8686
},
@@ -93,7 +93,7 @@ describe('Unit | util | createReplayEnvelope', () => {
9393
event_id: REPLAY_ID,
9494
platform: 'javascript',
9595
replay_id: REPLAY_ID,
96-
sdk: { integrations: ['BrowserTracing', 'Replay'], name: 'sentry.javascript.browser', version: '7.25.0' },
96+
sdk: { integrations: ['BrowserTracing', 'Replay'], name: 'sentry.javascript.unknown', version: '7.25.0' },
9797
segment_id: 3,
9898
replay_type: 'error',
9999
tags: { errorSampleRate: 0, sessionSampleRate: 1 },

packages/replay/test/unit/util/getReplayEvent.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import { BrowserClient } from '@sentry/browser';
21
import type { Hub, Scope } from '@sentry/core';
32
import { getCurrentHub } from '@sentry/core';
43
import type { Client, ReplayEvent } from '@sentry/types';
54

65
import { REPLAY_EVENT_NAME } from '../../../src/constants';
76
import { prepareReplayEvent } from '../../../src/util/prepareReplayEvent';
8-
import { getDefaultBrowserClientOptions } from '../../utils/getDefaultBrowserClientOptions';
7+
import { getDefaultClientOptions, TestClient } from '../../utils/TestClient';
98

109
describe('Unit | util | getReplayEvent', () => {
1110
let hub: Hub;
@@ -14,7 +13,7 @@ describe('Unit | util | getReplayEvent', () => {
1413

1514
beforeEach(() => {
1615
hub = getCurrentHub();
17-
client = new BrowserClient(getDefaultBrowserClientOptions());
16+
client = new TestClient(getDefaultClientOptions());
1817
hub.bindClient(client);
1918

2019
client = hub.getClient()!;
@@ -53,7 +52,7 @@ describe('Unit | util | getReplayEvent', () => {
5352
event_id: 'replay-ID',
5453
environment: 'production',
5554
sdk: {
56-
name: 'sentry.javascript.browser',
55+
name: 'sentry.javascript.unknown',
5756
version: 'version:Test',
5857
},
5958
sdkProcessingMetadata: {},

packages/replay/test/unit/util/prepareReplayEvent.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import { BrowserClient } from '@sentry/browser';
21
import type { Hub, Scope } from '@sentry/core';
32
import { getCurrentHub } from '@sentry/core';
43
import type { Client, ReplayEvent } from '@sentry/types';
54

65
import { REPLAY_EVENT_NAME } from '../../../src/constants';
76
import { prepareReplayEvent } from '../../../src/util/prepareReplayEvent';
8-
import { getDefaultBrowserClientOptions } from '../../utils/getDefaultBrowserClientOptions';
7+
import { getDefaultClientOptions, TestClient } from '../../utils/TestClient';
98

109
describe('Unit | util | prepareReplayEvent', () => {
1110
let hub: Hub;
@@ -14,7 +13,7 @@ describe('Unit | util | prepareReplayEvent', () => {
1413

1514
beforeEach(() => {
1615
hub = getCurrentHub();
17-
client = new BrowserClient(getDefaultBrowserClientOptions());
16+
client = new TestClient(getDefaultClientOptions());
1817
hub.bindClient(client);
1918

2019
client = hub.getClient()!;
@@ -53,7 +52,7 @@ describe('Unit | util | prepareReplayEvent', () => {
5352
event_id: 'replay-ID',
5453
environment: 'production',
5554
sdk: {
56-
name: 'sentry.javascript.browser',
55+
name: 'sentry.javascript.unknown',
5756
version: 'version:Test',
5857
},
5958
sdkProcessingMetadata: {},
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { BaseClient, createTransport, initAndBind } from '@sentry/core';
2+
import type { BrowserClientReplayOptions, ClientOptions, Event, SeverityLevel } from '@sentry/types';
3+
import { resolvedSyncPromise } from '@sentry/utils';
4+
5+
export interface TestClientOptions extends ClientOptions, BrowserClientReplayOptions {}
6+
7+
export class TestClient extends BaseClient<TestClientOptions> {
8+
public constructor(options: TestClientOptions) {
9+
super(options);
10+
}
11+
12+
public eventFromException(exception: any): PromiseLike<Event> {
13+
return resolvedSyncPromise({
14+
exception: {
15+
values: [
16+
{
17+
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
18+
type: exception.name,
19+
value: exception.message,
20+
/* eslint-enable @typescript-eslint/no-unsafe-member-access */
21+
},
22+
],
23+
},
24+
});
25+
}
26+
27+
public eventFromMessage(message: string, level: SeverityLevel = 'info'): PromiseLike<Event> {
28+
return resolvedSyncPromise({ message, level });
29+
}
30+
}
31+
32+
export function init(options: TestClientOptions): void {
33+
initAndBind(TestClient, options);
34+
}
35+
36+
export function getDefaultClientOptions(options: Partial<ClientOptions> = {}): ClientOptions {
37+
return {
38+
integrations: [],
39+
dsn: 'https://username@domain/123',
40+
transport: () => createTransport({ recordDroppedEvent: () => undefined }, _ => resolvedSyncPromise({})),
41+
stackParser: () => [],
42+
...options,
43+
};
44+
}

packages/replay/test/utils/getDefaultBrowserClientOptions.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)