Skip to content

Commit

Permalink
test new remote configs
Browse files Browse the repository at this point in the history
  • Loading branch information
daibhin committed Jan 3, 2024
1 parent 7c4a09c commit d09f4e8
Showing 1 changed file with 44 additions and 16 deletions.
60 changes: 44 additions & 16 deletions src/__tests__/extensions/replay/sessionrecording.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,50 @@ describe('SessionRecording', () => {
})
})

describe('canvas', () => {
it('passes the remote config to rrweb', () => {
sessionRecording.startRecordingIfEnabled()

sessionRecording.afterDecideResponse(
makeDecideResponse({
sessionRecording: { endpoint: '/s/', recordCanvas: true, canvasFps: 6, canvasQuality: '0.2' },
})
)
expect(sessionRecording['_recordCanvas']).toStrictEqual(true)
expect(sessionRecording['_canvasFps']).toStrictEqual(6)
expect(sessionRecording['_canvasQuality']).toStrictEqual(0.2)

sessionRecording['_onScriptLoaded']()
expect(assignableWindow.rrwebRecord).toHaveBeenCalledWith(
expect.objectContaining({
recordCanvas: true,
sampling: { canvas: 6 },
dataURLOptions: {
type: 'image/webp',
quality: 0.2,
},
})
)
})

it('skips when any config variable is missing', () => {
sessionRecording.startRecordingIfEnabled()

sessionRecording.afterDecideResponse(
makeDecideResponse({
sessionRecording: { endpoint: '/s/', recordCanvas: null, canvasFps: null, canvasQuality: null },
})
)

sessionRecording['_onScriptLoaded']()

const mockParams = assignableWindow.rrwebRecord.mock.calls[0][0]
expect(mockParams).not.toHaveProperty('recordCanvas')
expect(mockParams).not.toHaveProperty('canvasFps')
expect(mockParams).not.toHaveProperty('canvasQuality')
})
})

it('calls rrweb.record with the right options', () => {
posthog.persistence?.register({ [CONSOLE_LOG_RECORDING_ENABLED_SERVER_SIDE]: false })
// access private method 🤯
Expand All @@ -407,22 +451,6 @@ describe('SessionRecording', () => {
})
})

it('calls includes canvas params if enabled', () => {
posthog.config.session_recording.recordCanvas = true
// access private method 🤯
sessionRecording['_onScriptLoaded']()
expect(assignableWindow.rrwebRecord).toHaveBeenCalledWith(
expect.objectContaining({
recordCanvas: true,
sampling: { canvas: 4 },
dataURLOptions: {
type: 'image/webp',
quality: 0.6,
},
})
)
})

it('records events emitted before and after starting recording', () => {
sessionRecording.startRecordingIfEnabled()
expect(loadScript).toHaveBeenCalled()
Expand Down

0 comments on commit d09f4e8

Please sign in to comment.