From a9719e302e9449d49e31f4725ec8a05eacbd74bc Mon Sep 17 00:00:00 2001 From: Justin Halsall Date: Thu, 20 Aug 2020 09:05:25 +0200 Subject: [PATCH] Add regression tests and `pause(timeOffset)` test (#288) * increase timeout from 2 (default to 10 seconds * add regression tests for playing multiple times * add pause at tests --- test/replayer.test.ts | 46 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/test/replayer.test.ts b/test/replayer.test.ts index 85536a1e..43904421 100644 --- a/test/replayer.test.ts +++ b/test/replayer.test.ts @@ -15,6 +15,8 @@ interface ISuite extends Suite { } describe('replayer', function (this: ISuite) { + this.timeout(10_000); + before(async () => { this.browser = await launchPuppeteer(); @@ -85,4 +87,48 @@ describe('replayer', function (this: ISuite) { events.filter((e) => e.timestamp - events[0].timestamp >= 1500).length, ); }); + + it('can play a second time in the future', async () => { + const actionLength = await this.page.evaluate(` + const { Replayer } = rrweb; + const replayer = new Replayer(events); + replayer.play(500); + replayer.play(1500); + replayer['timer']['actions'].length; + `); + expect(actionLength).to.equal( + events.filter((e) => e.timestamp - events[0].timestamp >= 1500).length, + ); + }); + + it('can play a second time to the past', async () => { + const actionLength = await this.page.evaluate(` + const { Replayer } = rrweb; + const replayer = new Replayer(events); + replayer.play(1500); + replayer.play(500); + replayer['timer']['actions'].length; + `); + expect(actionLength).to.equal( + events.filter((e) => e.timestamp - events[0].timestamp >= 500).length, + ); + }); + + it('can pause at any time offset', async () => { + const actionLength = await this.page.evaluate(` + const { Replayer } = rrweb; + const replayer = new Replayer(events); + replayer.pause(2500); + replayer['timer']['actions'].length; + `); + const currentTime = await this.page.evaluate(` + replayer.getCurrentTime(); + `) + const currentState = await this.page.evaluate(` + replayer['service']['state']['value']; + `) + expect(actionLength).to.equal(0) + expect(currentTime).to.equal(2500); + expect(currentState).to.equal('paused'); + }); });