diff --git a/src/browser/replay/recorder.js b/src/browser/replay/recorder.js index 20862d83..1d2c42ce 100644 --- a/src/browser/replay/recorder.js +++ b/src/browser/replay/recorder.js @@ -3,6 +3,7 @@ import { EventType } from '@rrweb/types'; import hrtime from '../../tracing/hrtime.js'; import logger from '../../logger.js'; +import defaults from './defaults.js'; /** @typedef {import('./recorder.js').BufferCursor} BufferCursor */ @@ -97,7 +98,11 @@ export default class Recorder { * @returns {number} Checkout interval in milliseconds */ checkoutEveryNms() { - return ((this.options.maxSeconds || 10) * 1000) / 2; + const maxSeconds = + this.options.maxSeconds > 0 + ? this.options.maxSeconds + : defaults.maxSeconds; + return (maxSeconds * 1000) / 2; } /** diff --git a/test/replay/unit/recorder.test.js b/test/replay/unit/recorder.test.js index 3e16fc95..9c5fc5f4 100644 --- a/test/replay/unit/recorder.test.js +++ b/test/replay/unit/recorder.test.js @@ -159,10 +159,10 @@ describe('Recorder', function () { expect(recorder.checkoutEveryNms()).to.equal(5000); }); - it('uses default of 10 seconds when maxSeconds not provided', function () { + it('uses default of 300 seconds when maxSeconds not provided', function () { const recorder = new Recorder({}, mockRecordFn); - expect(recorder.checkoutEveryNms()).to.equal(5000); + expect(recorder.checkoutEveryNms()).to.equal(150000); }); it('calculates correctly for different maxSeconds values', function () { @@ -170,6 +170,18 @@ describe('Recorder', function () { expect(recorder.checkoutEveryNms()).to.equal(10000); }); + + it('uses default when maxSeconds is 0', function () { + const recorder = new Recorder({ maxSeconds: 0 }, mockRecordFn); + + expect(recorder.checkoutEveryNms()).to.equal(150000); + }); + + it('uses default when maxSeconds is negative', function () { + const recorder = new Recorder({ maxSeconds: -5 }, mockRecordFn); + + expect(recorder.checkoutEveryNms()).to.equal(150000); + }); }); describe('_previousSlot', function () {