diff --git a/packages/replay/__mocks__/@sentry/browser/index.ts b/packages/replay/__mocks__/@sentry/browser/index.ts deleted file mode 100644 index a1c943d15a1b..000000000000 --- a/packages/replay/__mocks__/@sentry/browser/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -const captureEvent = jest.fn(); -const getCurrentHub = jest.fn(() => ({ - captureEvent, - getClient: jest.fn(() => ({ - getDsn: jest.fn(), - })), -})); - -const addGlobalEventProcessor = jest.fn(); -const configureScope = jest.fn(); - -export { getCurrentHub, addGlobalEventProcessor, configureScope }; diff --git a/packages/replay/test/mocks/mockRrweb.ts b/packages/replay/test/mocks/mockRrweb.ts index 5b5b890686be..6e4b49aad8fb 100644 --- a/packages/replay/test/mocks/mockRrweb.ts +++ b/packages/replay/test/mocks/mockRrweb.ts @@ -1,3 +1,5 @@ +import type { record as rrwebRecord } from 'rrweb'; + import { RecordingEvent } from '../../src/types'; type RecordAdditionalProperties = { @@ -12,7 +14,7 @@ type RecordAdditionalProperties = { _emitter: (event: RecordingEvent, ...args: any[]) => void; }; -export type RecordMock = jest.MockedFunction & RecordAdditionalProperties; +export type RecordMock = jest.MockedFunction & RecordAdditionalProperties; function createCheckoutPayload(isCheckout: boolean = true) { return { @@ -22,8 +24,7 @@ function createCheckoutPayload(isCheckout: boolean = true) { }; } -jest.mock('rrweb', () => { - const ActualRrweb = jest.requireActual('rrweb'); +export function mockRrweb(): { record: RecordMock } { const mockRecordFn: jest.Mock & Partial = jest.fn(({ emit }) => { mockRecordFn._emitter = emit; @@ -40,17 +41,16 @@ jest.mock('rrweb', () => { mockRecordFn._emitter(createCheckoutPayload(isCheckout), isCheckout); }); - return { - ...ActualRrweb, - record: mockRecordFn, - }; -}); + jest.mock('rrweb', () => { + const ActualRrweb = jest.requireActual('rrweb'); -// XXX: Intended to be after `mock('rrweb')` -import * as rrweb from 'rrweb'; + return { + ...ActualRrweb, + record: mockRecordFn, + }; + }); -export function mockRrweb(): { record: RecordMock } { return { - record: rrweb.record as RecordMock, + record: mockRecordFn as RecordMock, }; } diff --git a/packages/replay/test/mocks/mockSdk.ts b/packages/replay/test/mocks/mockSdk.ts index 8c561cb1d0d7..cb92d1d47a50 100644 --- a/packages/replay/test/mocks/mockSdk.ts +++ b/packages/replay/test/mocks/mockSdk.ts @@ -1,6 +1,4 @@ -jest.unmock('@sentry/browser'); - -import { BrowserOptions, init } from '@sentry/browser'; +import type { BrowserOptions } from '@sentry/browser'; import { Envelope, Transport } from '@sentry/types'; import { Replay as ReplayClass } from '../../src'; @@ -49,6 +47,8 @@ export async function mockSdk({ transport: () => new MockTransport(), }, }: MockSdkParams = {}): Promise<{ replay: ReplayClass }> { + const { init } = jest.requireActual('@sentry/browser'); + const { Replay } = await import('../../src'); const replay = new Replay(replayOptions); diff --git a/packages/replay/test/unit/session/Session.test.ts b/packages/replay/test/unit/session/Session.test.ts index c10a14809856..046d0d87ba8c 100644 --- a/packages/replay/test/unit/session/Session.test.ts +++ b/packages/replay/test/unit/session/Session.test.ts @@ -1,5 +1,16 @@ jest.mock('./../../../src/session/saveSession'); +jest.mock('@sentry/browser', () => { + return { + getCurrentHub: jest.fn(() => { + return { + captureEvent: jest.fn(), + getClient: jest.fn(() => ({ getDsn: jest.fn() })), + }; + }), + }; +}); + import * as Sentry from '@sentry/browser'; import { saveSession } from '../../../src/session/saveSession';