Skip to content

Commit 542ca40

Browse files
Merge pull request #33 from juliandescottes/fix-inermediary-timings
Fix intermediary timings
2 parents 07bb8f8 + 13febb4 commit 542ca40

4 files changed

Lines changed: 28 additions & 19 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ff-test-bidi-har-export",
3-
"version": "0.0.15",
3+
"version": "0.0.16",
44
"description": "Experimental helper to export HAR files from WebDriverBiDi network events",
55
"main": "index.js",
66
"scripts": {

src/har-recorder.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ class HarRecorder {
3636
this.networkEntries = [];
3737
this.pageTimings = [];
3838
this.topLevelContexts = [];
39+
40+
this._isInMicroseconds = undefined;
3941
}
4042

4143
recordEvent(event) {
@@ -322,9 +324,13 @@ class HarRecorder {
322324
// Firefox 131 or older returned timings in microseconds whereas Firefox 132
323325
// or newer returns timings in milliseconds, as expected in the spec.
324326
// https://bugzilla.mozilla.org/show_bug.cgi?id=1916685
325-
if (timing > Date.now() * 100) {
327+
if (this._isInMicroseconds === undefined) {
326328
// If timing is at least a 100 times greater than the current date, we are
327329
// dealing with microseconds.
330+
this._isInMicroseconds = timing > Date.now() * 100;
331+
}
332+
333+
if (this._isInMicroseconds) {
328334
return timing / 1000;
329335
}
330336

test/har-recorder.simple-har.test.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ test("HarRecorder generates simple har export", () => {
4545

4646
const isoEntryDate = harExport.log.entries[0].startedDateTime;
4747
expect(new Date(isoEntryDate) * 1).toBe(startTime + 50);
48+
49+
const totalTime = harExport.log.entries[0].time;
50+
expect(totalTime).toBe(650);
4851
});
4952

5053
test("HarRecorder generates simple har export with microseconds", () => {
@@ -74,9 +77,8 @@ test("HarRecorder generates simple har export with microseconds", () => {
7477
expect(harExport.log.entries.length).toBe(1);
7578

7679
const isoEntryDate = harExport.log.entries[0].startedDateTime;
80+
expect(new Date(isoEntryDate) * 1).toBe(startTime + 50);
7781

78-
// Note: the request start time happens 50 microseconds after startTime
79-
// which is going to be equal to startTime when converted to milliseconds.
80-
// So compare directly with startTime.
81-
expect(new Date(isoEntryDate) * 1).toBe(startTime);
82+
const totalTime = harExport.log.entries[0].time;
83+
expect(totalTime).toBe(650);
8284
});

test/resources/mock-events.js

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ function getMockEvents(startTime, options = {}) {
1111
useLegacyHeaderFormat = false,
1212
useMicroseconds = false,
1313
} = options;
14-
const highResStartTime = startTime * (useMicroseconds ? 1000 : 1);
14+
const timeMult = useMicroseconds ? 1000 : 1;
15+
const highResStartTime = startTime * timeMult;
1516
const requestId = (options.requestId || gRequestId++) + "";
1617

1718
if (useLegacyHeaderFormat) {
@@ -39,7 +40,7 @@ function getMockEvents(startTime, options = {}) {
3940
request: requestId,
4041
timings: {
4142
originTime: 0,
42-
requestTime: highResStartTime + 50,
43+
requestTime: highResStartTime + 50 * timeMult,
4344
redirectStart: 0,
4445
redirectEnd: 0,
4546
fetchStart: 0,
@@ -80,19 +81,19 @@ function getMockEvents(startTime, options = {}) {
8081
request: requestId,
8182
timings: {
8283
originTime: 0,
83-
requestTime: highResStartTime + 50,
84+
requestTime: highResStartTime + 50 * timeMult,
8485
redirectStart: 0,
8586
redirectEnd: 0,
86-
fetchStart: highResStartTime + 100,
87-
dnsStart: highResStartTime + 150,
88-
dnsEnd: highResStartTime + 200,
89-
connectStart: highResStartTime + 300,
90-
connectEnd: highResStartTime + 400,
91-
tlsStart: highResStartTime + 500,
92-
tlsEnd: highResStartTime + 600,
93-
requestStart: highResStartTime + 700,
94-
responseStart: highResStartTime + 800,
95-
responseEnd: highResStartTime + 900,
87+
fetchStart: highResStartTime + 100 * timeMult,
88+
dnsStart: highResStartTime + 150 * timeMult,
89+
dnsEnd: highResStartTime + 200 * timeMult,
90+
connectStart: highResStartTime + 300 * timeMult,
91+
connectEnd: highResStartTime + 400 * timeMult,
92+
tlsStart: highResStartTime + 500 * timeMult,
93+
tlsEnd: highResStartTime + 600 * timeMult,
94+
requestStart: highResStartTime + 700 * timeMult,
95+
responseStart: highResStartTime + 800 * timeMult,
96+
responseEnd: highResStartTime + 900 * timeMult,
9697
},
9798
url: options.url || "https://example.com/",
9899
rawHeaders:

0 commit comments

Comments
 (0)