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.
Files changed (35) hide show
  1. package/core/audits/byte-efficiency/offscreen-images.js +1 -1
  2. package/core/audits/critical-request-chains.d.ts +6 -6
  3. package/core/audits/critical-request-chains.js +15 -15
  4. package/core/audits/dobetterweb/doctype.js +4 -4
  5. package/core/audits/font-display.js +1 -1
  6. package/core/audits/network-requests.js +4 -4
  7. package/core/audits/redirects.js +2 -1
  8. package/core/audits/uses-rel-preconnect.js +5 -4
  9. package/core/computed/entity-classification.js +2 -1
  10. package/core/computed/resource-summary.js +2 -1
  11. package/core/gather/driver/network-monitor.js +2 -2
  12. package/core/gather/gatherers/dobetterweb/tags-blocking-first-paint.js +4 -4
  13. package/core/lib/bf-cache-strings.js +1 -1
  14. package/core/lib/dependency-graph/network-node.js +2 -2
  15. package/core/lib/dependency-graph/simulator/network-analyzer.js +8 -6
  16. package/core/lib/lighthouse-compatibility.d.ts +8 -0
  17. package/core/lib/lighthouse-compatibility.js +139 -0
  18. package/core/lib/navigation-error.js +3 -1
  19. package/core/lib/network-recorder.js +1 -1
  20. package/core/lib/network-request.d.ts +7 -7
  21. package/core/lib/network-request.js +26 -27
  22. package/dist/report/bundle.esm.js +138 -120
  23. package/dist/report/flow.js +18 -12
  24. package/dist/report/standalone.js +9 -3
  25. package/package.json +1 -1
  26. package/report/assets/styles.css +1 -1
  27. package/report/renderer/components.js +1 -1
  28. package/report/renderer/i18n-formatter.js +1 -1
  29. package/report/renderer/report-utils.d.ts +2 -2
  30. package/report/renderer/report-utils.js +7 -122
  31. package/report/test/renderer/report-utils-test.js +0 -170
  32. package/report/tsconfig.json +1 -0
  33. package/shared/localization/locales/en-US.json +3 -3
  34. package/shared/localization/locales/en-XL.json +3 -3
  35. 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 endTime between the observed Lighthouse endTime and Lightrider's derived endTime.
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.startTime = -1;
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.responseReceivedTime = -1;
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.startTime = data.timestamp * 1000;
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.endTime = data.timestamp * 1000;
273
+ this.networkEndTime = data.timestamp * 1000;
274
274
  if (data.encodedDataLength >= 0) {
275
275
  this.transferSize = data.encodedDataLength;
276
276
  }
277
277
 
278
- this._updateResponseReceivedTimeIfNecessary();
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.endTime = data.timestamp * 1000;
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._updateResponseReceivedTimeIfNecessary();
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.endTime = data.timestamp * 1000;
317
+ this.networkEndTime = data.timestamp * 1000;
318
318
 
319
- this._updateResponseReceivedTimeIfNecessary();
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.responseReceivedTime = timestamp * 1000;
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 startTime and responseReceivedTime from timing data for better accuracy.
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
- // TODO: This skips the "queuing time" before the netstack has taken over ... is this a mistake?
376
- this.startTime = timing.requestTime * 1000;
377
- const headersReceivedTime = this.startTime + timing.receiveHeadersEnd;
378
- if (!this.responseReceivedTime || this.responseReceivedTime < 0) {
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.responseReceivedTime = Math.min(this.responseReceivedTime, headersReceivedTime);
383
- this.responseReceivedTime = Math.max(this.responseReceivedTime, this.startTime);
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 endTime may be redefined again after onLoading is done.
386
- this.endTime = Math.max(this.endTime, this.responseReceivedTime);
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 responseReceivedTime to the endTime if endTime is earlier.
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
- _updateResponseReceivedTimeIfNecessary() {
394
- this.responseReceivedTime = Math.min(this.endTime, this.responseReceivedTime);
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.endTime - (this.startTime + totalMs),
489
+ endTimeDeltaMs: this.networkEndTime - (this.networkRequestTime + totalMs),
491
490
  TCPMs: TCPMs,
492
491
  requestMs: requestMs,
493
492
  responseMs: responseMs,