|
| 1 | +/* Any copyright is dedicated to the Public Domain. |
| 2 | + * http://creativecommons.org/publicdomain/zero/1.0/ */ |
| 3 | + |
| 4 | +const { HarRecorder } = require(".."); |
| 5 | +const { getMockEvents } = require("./resources/mock-events"); |
| 6 | + |
| 7 | +test("HarRecorder generates har export without data URLs", () => { |
| 8 | + const recorder = new HarRecorder({ browser: "browser", version: "version" }); |
| 9 | + |
| 10 | + recorder.startRecording(); |
| 11 | + |
| 12 | + const requestId = 33; |
| 13 | + const startTime = Date.now(); |
| 14 | + const { |
| 15 | + beforeRequestSentEvent, |
| 16 | + domContentLoadedEvent, |
| 17 | + loadEvent, |
| 18 | + responseCompletedEvent, |
| 19 | + } = getMockEvents(startTime, { requestId }); |
| 20 | + |
| 21 | + // Create 1 additional event for a data url, starting 10 ms before the "main" events. |
| 22 | + const dataUrlEvents = getMockEvents(startTime - 10); |
| 23 | + const dataUrl = "data:text/html,foo"; |
| 24 | + dataUrlEvents.beforeRequestSentEvent.params.request.url = dataUrl; |
| 25 | + dataUrlEvents.responseCompletedEvent.params.request.url = dataUrl; |
| 26 | + |
| 27 | + recorder.recordEvent(dataUrlEvents.beforeRequestSentEvent); |
| 28 | + recorder.recordEvent(dataUrlEvents.responseCompletedEvent); |
| 29 | + recorder.recordEvent(beforeRequestSentEvent); |
| 30 | + recorder.recordEvent(responseCompletedEvent); |
| 31 | + recorder.recordEvent(domContentLoadedEvent); |
| 32 | + recorder.recordEvent(loadEvent); |
| 33 | + |
| 34 | + const harExport = recorder.stopRecording(); |
| 35 | + |
| 36 | + expect(harExport).toBeDefined(); |
| 37 | + expect(harExport.log).toBeDefined(); |
| 38 | + |
| 39 | + // We should only have one page and one entry, data URL event should be |
| 40 | + // filtered out. |
| 41 | + expect(harExport.log.pages.length).toBe(1); |
| 42 | + expect(harExport.log.entries.length).toBe(1); |
| 43 | +}); |
0 commit comments