From 000ee292cee1733f6fbe23e0f751b576dfd813a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Zugmeyer?= Date: Tue, 24 Aug 2021 11:34:59 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20prevent=20recording=20to=20start?= =?UTF-8?q?=20when=20session=20renewed=20before=20onload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/rum/src/boot/recorderApi.spec.ts | 11 +++++++++++ packages/rum/src/boot/recorderApi.ts | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/rum/src/boot/recorderApi.spec.ts b/packages/rum/src/boot/recorderApi.spec.ts index 09929a595e..3d10270bef 100644 --- a/packages/rum/src/boot/recorderApi.spec.ts +++ b/packages/rum/src/boot/recorderApi.spec.ts @@ -208,6 +208,17 @@ describe('makeRecorderApi', () => { expect(startRecordingSpy).toHaveBeenCalledTimes(1) expect(stopRecordingSpy).toHaveBeenCalled() }) + + it('prevents session recording to start if the session is renewed before onload', () => { + setupBuilder.build() + const { triggerOnLoad } = mockDocumentReadyState() + rumInit(DEFAULT_INIT_CONFIGURATION) + recorderApi.start() + session.setLitePlan() + lifeCycle.notify(LifeCycleEventType.SESSION_RENEWED) + triggerOnLoad() + expect(startRecordingSpy).not.toHaveBeenCalled() + }) }) describe('from REPLAY to untracked', () => { diff --git a/packages/rum/src/boot/recorderApi.ts b/packages/rum/src/boot/recorderApi.ts index 361f74adb9..c45040a7c4 100644 --- a/packages/rum/src/boot/recorderApi.ts +++ b/packages/rum/src/boot/recorderApi.ts @@ -63,7 +63,7 @@ export function makeRecorderApi(startRecordingImpl: StartRecording): RecorderApi parentContexts: ParentContexts ) => { lifeCycle.subscribe(LifeCycleEventType.SESSION_RENEWED, () => { - if (state.status === RecorderStatus.Started) { + if (state.status === RecorderStatus.Starting || state.status === RecorderStatus.Started) { stopStrategy() state = { status: RecorderStatus.IntentToStart } }