lighthouse 9.5.0-dev.20230129 → 9.5.0-dev.20230131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/audits/byte-efficiency/offscreen-images.js +1 -1
- package/core/audits/critical-request-chains.d.ts +6 -6
- package/core/audits/critical-request-chains.js +15 -15
- package/core/audits/dobetterweb/doctype.js +4 -4
- package/core/audits/font-display.js +1 -1
- package/core/audits/network-requests.js +4 -4
- package/core/audits/redirects.js +2 -1
- package/core/audits/uses-rel-preconnect.js +5 -4
- package/core/computed/entity-classification.js +2 -1
- package/core/computed/resource-summary.js +2 -1
- package/core/gather/driver/network-monitor.js +2 -2
- package/core/gather/gatherers/dobetterweb/tags-blocking-first-paint.js +4 -4
- package/core/lib/bf-cache-strings.js +1 -1
- package/core/lib/dependency-graph/network-node.js +2 -2
- package/core/lib/dependency-graph/simulator/network-analyzer.js +8 -6
- package/core/lib/lighthouse-compatibility.d.ts +8 -0
- package/core/lib/lighthouse-compatibility.js +139 -0
- package/core/lib/navigation-error.js +3 -1
- package/core/lib/network-recorder.js +1 -1
- package/core/lib/network-request.d.ts +7 -7
- package/core/lib/network-request.js +26 -27
- package/dist/report/bundle.esm.js +138 -120
- package/dist/report/flow.js +18 -12
- package/dist/report/standalone.js +9 -3
- package/package.json +1 -1
- package/report/assets/styles.css +1 -1
- package/report/renderer/components.js +1 -1
- package/report/renderer/i18n-formatter.js +1 -1
- package/report/renderer/report-utils.d.ts +2 -2
- package/report/renderer/report-utils.js +7 -122
- package/report/test/renderer/report-utils-test.js +0 -170
- package/report/tsconfig.json +1 -0
- package/shared/localization/locales/en-US.json +3 -3
- package/shared/localization/locales/en-XL.json +3 -3
- package/tsconfig.json +1 -0
|
@@ -80,7 +80,7 @@ const HEADER_PROTOCOL_IS_H2 = 'X-ProtocolIsH2';
|
|
|
80
80
|
|
|
81
81
|
/**
|
|
82
82
|
* @typedef LightriderStatistics
|
|
83
|
-
* The difference in
|
|
83
|
+
* The difference in networkEndTime between the observed Lighthouse networkEndTime and Lightrider's derived networkEndTime.
|
|
84
84
|
* @property {number} endTimeDeltaMs
|
|
85
85
|
* The time spent making a TCP connection (connect + SSL).
|
|
86
86
|
* @property {number} TCPMs
|
|
@@ -131,11 +131,11 @@ class NetworkRequest {
|
|
|
131
131
|
* When the network service is about to handle a request, ie. just before going to the
|
|
132
132
|
* HTTP cache or going to the network for DNS/connection setup, in milliseconds.
|
|
133
133
|
*/
|
|
134
|
-
this.
|
|
135
|
-
/** When the last byte of the response body is received, in milliseconds. */
|
|
136
|
-
this.endTime = -1;
|
|
134
|
+
this.networkRequestTime = -1;
|
|
137
135
|
/** When the last byte of the response headers is received, in milliseconds. */
|
|
138
|
-
this.
|
|
136
|
+
this.responseHeadersEndTime = -1;
|
|
137
|
+
/** When the last byte of the response body is received, in milliseconds. */
|
|
138
|
+
this.networkEndTime = -1;
|
|
139
139
|
|
|
140
140
|
// Go read the comment on _updateTransferSizeForLightrider.
|
|
141
141
|
this.transferSize = 0;
|
|
@@ -226,7 +226,7 @@ class NetworkRequest {
|
|
|
226
226
|
|
|
227
227
|
this.rendererStartTime = data.timestamp * 1000;
|
|
228
228
|
// Expected to be overriden with better value in `_recomputeTimesWithResourceTiming`.
|
|
229
|
-
this.
|
|
229
|
+
this.networkRequestTime = this.rendererStartTime;
|
|
230
230
|
|
|
231
231
|
this.requestMethod = data.request.method;
|
|
232
232
|
|
|
@@ -270,12 +270,12 @@ class NetworkRequest {
|
|
|
270
270
|
if (this.finished) return;
|
|
271
271
|
|
|
272
272
|
this.finished = true;
|
|
273
|
-
this.
|
|
273
|
+
this.networkEndTime = data.timestamp * 1000;
|
|
274
274
|
if (data.encodedDataLength >= 0) {
|
|
275
275
|
this.transferSize = data.encodedDataLength;
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
-
this.
|
|
278
|
+
this._updateResponseHeadersEndTimeIfNecessary();
|
|
279
279
|
this._updateTransferSizeForLightrider();
|
|
280
280
|
this._updateTimingsForLightrider();
|
|
281
281
|
}
|
|
@@ -288,13 +288,13 @@ class NetworkRequest {
|
|
|
288
288
|
if (this.finished) return;
|
|
289
289
|
|
|
290
290
|
this.finished = true;
|
|
291
|
-
this.
|
|
291
|
+
this.networkEndTime = data.timestamp * 1000;
|
|
292
292
|
|
|
293
293
|
this.failed = true;
|
|
294
294
|
this.resourceType = data.type && RESOURCE_TYPES[data.type];
|
|
295
295
|
this.localizedFailDescription = data.errorText;
|
|
296
296
|
|
|
297
|
-
this.
|
|
297
|
+
this._updateResponseHeadersEndTimeIfNecessary();
|
|
298
298
|
this._updateTransferSizeForLightrider();
|
|
299
299
|
this._updateTimingsForLightrider();
|
|
300
300
|
}
|
|
@@ -314,9 +314,9 @@ class NetworkRequest {
|
|
|
314
314
|
this._onResponse(data.redirectResponse, data.timestamp, data.type);
|
|
315
315
|
this.resourceType = undefined;
|
|
316
316
|
this.finished = true;
|
|
317
|
-
this.
|
|
317
|
+
this.networkEndTime = data.timestamp * 1000;
|
|
318
318
|
|
|
319
|
-
this.
|
|
319
|
+
this._updateResponseHeadersEndTimeIfNecessary();
|
|
320
320
|
}
|
|
321
321
|
|
|
322
322
|
/**
|
|
@@ -339,7 +339,7 @@ class NetworkRequest {
|
|
|
339
339
|
|
|
340
340
|
if (response.protocol) this.protocol = response.protocol;
|
|
341
341
|
|
|
342
|
-
this.
|
|
342
|
+
this.responseHeadersEndTime = timestamp * 1000;
|
|
343
343
|
|
|
344
344
|
this.transferSize = response.encodedDataLength;
|
|
345
345
|
if (typeof response.fromDiskCache === 'boolean') this.fromDiskCache = response.fromDiskCache;
|
|
@@ -370,28 +370,27 @@ class NetworkRequest {
|
|
|
370
370
|
// Don't recompute times if the data is invalid. RequestTime should always be a thread timestamp.
|
|
371
371
|
// If we don't have receiveHeadersEnd, we really don't have more accurate data.
|
|
372
372
|
if (timing.requestTime === 0 || timing.receiveHeadersEnd === -1) return;
|
|
373
|
-
// Take
|
|
373
|
+
// Take networkRequestTime and responseHeadersEndTime from timing data for better accuracy.
|
|
374
374
|
// Timing's requestTime is a baseline in seconds, rest of the numbers there are ticks in millis.
|
|
375
|
-
|
|
376
|
-
this.
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
this.responseReceivedTime = headersReceivedTime;
|
|
375
|
+
this.networkRequestTime = timing.requestTime * 1000;
|
|
376
|
+
const headersReceivedTime = this.networkRequestTime + timing.receiveHeadersEnd;
|
|
377
|
+
if (!this.responseHeadersEndTime || this.responseHeadersEndTime < 0) {
|
|
378
|
+
this.responseHeadersEndTime = headersReceivedTime;
|
|
380
379
|
}
|
|
381
380
|
|
|
382
|
-
this.
|
|
383
|
-
this.
|
|
381
|
+
this.responseHeadersEndTime = Math.min(this.responseHeadersEndTime, headersReceivedTime);
|
|
382
|
+
this.responseHeadersEndTime = Math.max(this.responseHeadersEndTime, this.networkRequestTime);
|
|
384
383
|
// We're only at responseReceived (_onResponse) at this point.
|
|
385
|
-
// This
|
|
386
|
-
this.
|
|
384
|
+
// This networkEndTime may be redefined again after onLoading is done.
|
|
385
|
+
this.networkEndTime = Math.max(this.networkEndTime, this.responseHeadersEndTime);
|
|
387
386
|
}
|
|
388
387
|
|
|
389
388
|
/**
|
|
390
|
-
* Update
|
|
389
|
+
* Update responseHeadersEndTime to the networkEndTime if networkEndTime is earlier.
|
|
391
390
|
* A response can't be received after the entire request finished.
|
|
392
391
|
*/
|
|
393
|
-
|
|
394
|
-
this.
|
|
392
|
+
_updateResponseHeadersEndTimeIfNecessary() {
|
|
393
|
+
this.responseHeadersEndTime = Math.min(this.networkEndTime, this.responseHeadersEndTime);
|
|
395
394
|
}
|
|
396
395
|
|
|
397
396
|
/**
|
|
@@ -487,7 +486,7 @@ class NetworkRequest {
|
|
|
487
486
|
}
|
|
488
487
|
|
|
489
488
|
this.lrStatistics = {
|
|
490
|
-
endTimeDeltaMs: this.
|
|
489
|
+
endTimeDeltaMs: this.networkEndTime - (this.networkRequestTime + totalMs),
|
|
491
490
|
TCPMs: TCPMs,
|
|
492
491
|
requestMs: requestMs,
|
|
493
492
|
responseMs: responseMs,
|