@paulirish/trace_engine 0.0.42 → 0.0.43
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/.tmp/tsbuildinfo/tsconfig.tsbuildinfo +1 -1
- package/locales/en-US.json +0 -12
- package/locales/en-XL.json +0 -12
- package/models/cpu_profile/CPUProfileDataModel.js +2 -2
- package/models/cpu_profile/CPUProfileDataModel.js.map +1 -1
- package/models/trace/LanternComputationData.js +1 -1
- package/models/trace/LanternComputationData.js.map +1 -1
- package/models/trace/extras/TraceTree.d.ts +15 -2
- package/models/trace/extras/TraceTree.js +2 -2
- package/models/trace/extras/TraceTree.js.map +1 -1
- package/models/trace/extras/extras.d.ts +0 -1
- package/models/trace/extras/extras.js +0 -1
- package/models/trace/handlers/MetaHandler.js +3 -3
- package/models/trace/handlers/MetaHandler.js.map +1 -1
- package/models/trace/handlers/PageLoadMetricsHandler.js.map +1 -1
- package/models/trace/handlers/RendererHandler.d.ts +1 -1
- package/models/trace/handlers/RendererHandler.js +1 -1
- package/models/trace/handlers/RendererHandler.js.map +1 -1
- package/models/trace/handlers/ScreenshotsHandler.js +1 -1
- package/models/trace/handlers/ScreenshotsHandler.js.map +1 -1
- package/models/trace/helpers/SamplesIntegrator.d.ts +1 -1
- package/models/trace/helpers/SamplesIntegrator.js +2 -2
- package/models/trace/helpers/SamplesIntegrator.js.map +1 -1
- package/models/trace/helpers/Trace.d.ts +1 -1
- package/models/trace/helpers/Trace.js +1 -1
- package/models/trace/helpers/Trace.js.map +1 -1
- package/models/trace/helpers/TreeHelpers.js +1 -1
- package/models/trace/helpers/TreeHelpers.js.map +1 -1
- package/models/trace/insights/CLSCulprits.d.ts +2 -0
- package/models/trace/insights/CLSCulprits.js +41 -8
- package/models/trace/insights/CLSCulprits.js.map +1 -1
- package/models/trace/insights/DocumentLatency.d.ts +2 -12
- package/models/trace/insights/DocumentLatency.js +23 -14
- package/models/trace/insights/DocumentLatency.js.map +1 -1
- package/models/trace/insights/LCPDiscovery.d.ts +2 -14
- package/models/trace/insights/LCPDiscovery.js +8 -16
- package/models/trace/insights/LCPDiscovery.js.map +1 -1
- package/models/trace/insights/types.d.ts +4 -0
- package/models/trace/insights/types.js.map +1 -1
- package/models/trace/lantern/graph/BaseNode.d.ts +1 -1
- package/models/trace/lantern/graph/BaseNode.js +1 -1
- package/models/trace/lantern/graph/BaseNode.js.map +1 -1
- package/models/trace/lantern/metrics/FirstContentfulPaint.d.ts +1 -1
- package/models/trace/lantern/metrics/FirstContentfulPaint.js.map +1 -1
- package/models/trace/lantern/simulation/ConnectionPool.js +1 -1
- package/models/trace/lantern/simulation/ConnectionPool.js.map +1 -1
- package/models/trace/lantern/simulation/Simulator.d.ts +2 -2
- package/models/trace/lantern/simulation/Simulator.js +3 -3
- package/models/trace/lantern/simulation/Simulator.js.map +1 -1
- package/models/trace/lantern/types/Lantern.d.ts +2 -2
- package/models/trace/lantern/types/Lantern.js.map +1 -1
- package/models/trace/root-causes/LayoutShift.d.ts +1 -1
- package/models/trace/root-causes/LayoutShift.js +4 -4
- package/models/trace/root-causes/LayoutShift.js.map +1 -1
- package/models/trace/types/TraceEvents.d.ts +2 -2
- package/models/trace/types/TraceEvents.js.map +1 -1
- package/package.json +1 -1
- package/core/platform/PromiseUtilities.d.ts +0 -10
- package/core/platform/PromiseUtilities.js +0 -18
- package/core/platform/PromiseUtilities.js.map +0 -1
- package/core/platform/SetUtilities.d.ts +0 -2
- package/core/platform/SetUtilities.js +0 -23
- package/core/platform/SetUtilities.js.map +0 -1
- package/models/trace/EntriesFilter.d.ts +0 -72
- package/models/trace/EntriesFilter.js +0 -296
- package/models/trace/EntriesFilter.js.map +0 -1
- package/models/trace/LegacyTracingModel.js.map +0 -1
- package/models/trace/extras/URLForEntry.d.ts +0 -13
- package/models/trace/extras/URLForEntry.js +0 -44
- package/models/trace/extras/URLForEntry.js.map +0 -1
- package/models/trace/handlers/EnhancedTracesHandler.d.ts +0 -48
- package/models/trace/handlers/EnhancedTracesHandler.js +0 -165
- package/models/trace/handlers/EnhancedTracesHandler.js.map +0 -1
- package/models/trace/insights/CumulativeLayoutShift.d.ts +0 -34
- package/models/trace/insights/CumulativeLayoutShift.js +0 -209
- package/models/trace/insights/CumulativeLayoutShift.js.map +0 -1
- package/models/trace/insights/InsightRunners.d.ts +0 -6
- package/models/trace/insights/InsightRunners.js +0 -10
- package/models/trace/insights/InsightRunners.js.map +0 -1
- package/models/trace/insights/LargestContentfulPaint.d.ts +0 -25
- package/models/trace/insights/LargestContentfulPaint.js +0 -93
- package/models/trace/insights/LargestContentfulPaint.js.map +0 -1
- package/models/trace/lantern/BaseNode.d.ts +0 -91
- package/models/trace/lantern/BaseNode.js +0 -268
- package/models/trace/lantern/BaseNode.js.map +0 -1
- package/models/trace/lantern/CPUNode.d.ts +0 -24
- package/models/trace/lantern/CPUNode.js +0 -64
- package/models/trace/lantern/CPUNode.js.map +0 -1
- package/models/trace/lantern/LanternError.d.ts +0 -3
- package/models/trace/lantern/LanternError.js +0 -7
- package/models/trace/lantern/LanternError.js.map +0 -1
- package/models/trace/lantern/MetricsModule.d.ts +0 -11
- package/models/trace/lantern/MetricsModule.js +0 -14
- package/models/trace/lantern/MetricsModule.js.map +0 -1
- package/models/trace/lantern/NetworkNode.d.ts +0 -22
- package/models/trace/lantern/NetworkNode.js +0 -83
- package/models/trace/lantern/NetworkNode.js.map +0 -1
- package/models/trace/lantern/PageDependencyGraph.d.ts +0 -43
- package/models/trace/lantern/PageDependencyGraph.js +0 -509
- package/models/trace/lantern/PageDependencyGraph.js.map +0 -1
- package/models/trace/lantern/SimulationModule.d.ts +0 -17
- package/models/trace/lantern/SimulationModule.js +0 -13
- package/models/trace/lantern/SimulationModule.js.map +0 -1
- package/models/trace/lantern/simulation/NetworkAnalyzer.d.ts +0 -112
- package/models/trace/lantern/simulation/NetworkAnalyzer.js +0 -486
- package/models/trace/lantern/simulation/NetworkAnalyzer.js.map +0 -1
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// Copyright 2024 The Chromium Authors. All rights reserved.
|
|
2
|
-
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
-
// found in the LICENSE file.
|
|
4
|
-
// TODO(crbug.com/348449529): refactor to proper devtools module
|
|
5
|
-
import { FirstContentfulPaint } from './metrics/FirstContentfulPaint.js';
|
|
6
|
-
import { Interactive } from './metrics/Interactive.js';
|
|
7
|
-
import { LargestContentfulPaint } from './metrics/LargestContentfulPaint.js';
|
|
8
|
-
import { MaxPotentialFID } from './metrics/MaxPotentialFID.js';
|
|
9
|
-
import { Metric } from './metrics/Metric.js';
|
|
10
|
-
import { SpeedIndex } from './metrics/SpeedIndex.js';
|
|
11
|
-
import { TotalBlockingTime } from './metrics/TotalBlockingTime.js';
|
|
12
|
-
export { FirstContentfulPaint, Interactive, LargestContentfulPaint, MaxPotentialFID, Metric, SpeedIndex, TotalBlockingTime, };
|
|
13
|
-
export * as TBTUtils from './metrics/TBTUtils.js';
|
|
14
|
-
//# sourceMappingURL=MetricsModule.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsModule.js","sourceRoot":"","sources":["../../../../../../../front_end/models/trace/lantern/MetricsModule.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B,gEAAgE;AAEhE,OAAO,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAC,sBAAsB,EAAC,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAc,MAAM,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AAKjE,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,sBAAsB,EACtB,eAAe,EAEf,MAAM,EACN,UAAU,EACV,iBAAiB,GAClB,CAAC;AAEF,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAC","sourcesContent":["// Copyright 2024 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n// TODO(crbug.com/348449529): refactor to proper devtools module\n\nimport {FirstContentfulPaint} from './metrics/FirstContentfulPaint.js';\nimport {Interactive} from './metrics/Interactive.js';\nimport {LargestContentfulPaint} from './metrics/LargestContentfulPaint.js';\nimport {MaxPotentialFID} from './metrics/MaxPotentialFID.js';\nimport {type Extras, Metric} from './metrics/Metric.js';\nimport {SpeedIndex} from './metrics/SpeedIndex.js';\nimport {TotalBlockingTime} from './metrics/TotalBlockingTime.js';\nimport type * as Lantern from './types/lantern.js';\n\nexport type Result<T = Lantern.AnyNetworkObject> = Lantern.Metrics.Result<T>;\n\nexport {\n FirstContentfulPaint,\n Interactive,\n LargestContentfulPaint,\n MaxPotentialFID,\n Extras,\n Metric,\n SpeedIndex,\n TotalBlockingTime,\n};\n\nexport * as TBTUtils from './metrics/TBTUtils.js';\n"]}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { BaseNode } from './BaseNode.js';
|
|
2
|
-
import type * as Lantern from './types/lantern.js';
|
|
3
|
-
declare class NetworkNode<T = Lantern.AnyNetworkObject> extends BaseNode<T> {
|
|
4
|
-
_request: Lantern.NetworkRequest<T>;
|
|
5
|
-
constructor(networkRequest: Lantern.NetworkRequest<T>);
|
|
6
|
-
get type(): 'network';
|
|
7
|
-
get startTime(): number;
|
|
8
|
-
get endTime(): number;
|
|
9
|
-
get rawRequest(): Readonly<T>;
|
|
10
|
-
get request(): Lantern.NetworkRequest<T>;
|
|
11
|
-
get initiatorType(): string;
|
|
12
|
-
get fromDiskCache(): boolean;
|
|
13
|
-
get isNonNetworkProtocol(): boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Returns whether this network request can be downloaded without a TCP connection.
|
|
16
|
-
* During simulation we treat data coming in over a network connection separately from on-device data.
|
|
17
|
-
*/
|
|
18
|
-
get isConnectionless(): boolean;
|
|
19
|
-
hasRenderBlockingPriority(): boolean;
|
|
20
|
-
cloneWithoutRelationships(): NetworkNode<T>;
|
|
21
|
-
}
|
|
22
|
-
export { NetworkNode };
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
// Copyright 2024 The Chromium Authors. All rights reserved.
|
|
2
|
-
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
-
// found in the LICENSE file.
|
|
4
|
-
import { BaseNode } from './BaseNode.js';
|
|
5
|
-
const NON_NETWORK_SCHEMES = [
|
|
6
|
-
'blob', // @see https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
|
|
7
|
-
'data', // @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
|
|
8
|
-
'intent', // @see https://developer.chrome.com/docs/multidevice/android/intents/
|
|
9
|
-
'file', // @see https://en.wikipedia.org/wiki/File_URI_scheme
|
|
10
|
-
'filesystem', // @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystem
|
|
11
|
-
'chrome-extension',
|
|
12
|
-
];
|
|
13
|
-
/**
|
|
14
|
-
* Note: the `protocol` field from CDP can be 'h2', 'http', (not 'https'!) or it'll be url's scheme.
|
|
15
|
-
* https://source.chromium.org/chromium/chromium/src/+/main:content/browser/devtools/protocol/network_handler.cc;l=598-611;drc=56d4a9a9deb30be73adcee8737c73bcb2a5ab64f
|
|
16
|
-
* However, a `new URL(href).protocol` has a colon suffix.
|
|
17
|
-
* https://url.spec.whatwg.org/#dom-url-protocol
|
|
18
|
-
* A URL's `scheme` is specced as the `protocol` sans-colon, but isn't exposed on a URL object.
|
|
19
|
-
* This method can take all 3 of these string types as a parameter.
|
|
20
|
-
*
|
|
21
|
-
* @param protocol Either a networkRequest's `protocol` per CDP or a `new URL(href).protocol`
|
|
22
|
-
*/
|
|
23
|
-
function isNonNetworkProtocol(protocol) {
|
|
24
|
-
// Strip off any colon
|
|
25
|
-
const urlScheme = protocol.includes(':') ? protocol.slice(0, protocol.indexOf(':')) : protocol;
|
|
26
|
-
return NON_NETWORK_SCHEMES.includes(urlScheme);
|
|
27
|
-
}
|
|
28
|
-
class NetworkNode extends BaseNode {
|
|
29
|
-
_request;
|
|
30
|
-
constructor(networkRequest) {
|
|
31
|
-
super(networkRequest.requestId);
|
|
32
|
-
this._request = networkRequest;
|
|
33
|
-
}
|
|
34
|
-
get type() {
|
|
35
|
-
return BaseNode.types.NETWORK;
|
|
36
|
-
}
|
|
37
|
-
get startTime() {
|
|
38
|
-
return this._request.rendererStartTime * 1000;
|
|
39
|
-
}
|
|
40
|
-
get endTime() {
|
|
41
|
-
return this._request.networkEndTime * 1000;
|
|
42
|
-
}
|
|
43
|
-
get rawRequest() {
|
|
44
|
-
return this._request.rawRequest;
|
|
45
|
-
}
|
|
46
|
-
get request() {
|
|
47
|
-
return this._request;
|
|
48
|
-
}
|
|
49
|
-
get initiatorType() {
|
|
50
|
-
return this._request.initiator && this._request.initiator.type;
|
|
51
|
-
}
|
|
52
|
-
get fromDiskCache() {
|
|
53
|
-
return Boolean(this._request.fromDiskCache);
|
|
54
|
-
}
|
|
55
|
-
get isNonNetworkProtocol() {
|
|
56
|
-
// The 'protocol' field in devtools a string more like a `scheme`
|
|
57
|
-
return isNonNetworkProtocol(this.request.protocol) ||
|
|
58
|
-
// But `protocol` can fail to be populated if the request fails, so fallback to scheme.
|
|
59
|
-
isNonNetworkProtocol(this.request.parsedURL.scheme);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Returns whether this network request can be downloaded without a TCP connection.
|
|
63
|
-
* During simulation we treat data coming in over a network connection separately from on-device data.
|
|
64
|
-
*/
|
|
65
|
-
get isConnectionless() {
|
|
66
|
-
return this.fromDiskCache || this.isNonNetworkProtocol;
|
|
67
|
-
}
|
|
68
|
-
hasRenderBlockingPriority() {
|
|
69
|
-
const priority = this._request.priority;
|
|
70
|
-
const isScript = this._request.resourceType === 'Script';
|
|
71
|
-
const isDocument = this._request.resourceType === 'Document';
|
|
72
|
-
const isBlockingScript = priority === 'High' && isScript;
|
|
73
|
-
const isBlockingHtmlImport = priority === 'High' && isDocument;
|
|
74
|
-
return priority === 'VeryHigh' || isBlockingScript || isBlockingHtmlImport;
|
|
75
|
-
}
|
|
76
|
-
cloneWithoutRelationships() {
|
|
77
|
-
const node = new NetworkNode(this._request);
|
|
78
|
-
node.setIsMainDocument(this._isMainDocument);
|
|
79
|
-
return node;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
export { NetworkNode };
|
|
83
|
-
//# sourceMappingURL=NetworkNode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkNode.js","sourceRoot":"","sources":["../../../../../../../front_end/models/trace/lantern/NetworkNode.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport {BaseNode} from './BaseNode.js';\nimport type * as Lantern from './types/lantern.js';\n\nconst NON_NETWORK_SCHEMES = [\n 'blob', // @see https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n 'data', // @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n 'intent', // @see https://developer.chrome.com/docs/multidevice/android/intents/\n 'file', // @see https://en.wikipedia.org/wiki/File_URI_scheme\n 'filesystem', // @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystem\n 'chrome-extension',\n];\n\n/**\n * Note: the `protocol` field from CDP can be 'h2', 'http', (not 'https'!) or it'll be url's scheme.\n * https://source.chromium.org/chromium/chromium/src/+/main:content/browser/devtools/protocol/network_handler.cc;l=598-611;drc=56d4a9a9deb30be73adcee8737c73bcb2a5ab64f\n * However, a `new URL(href).protocol` has a colon suffix.\n * https://url.spec.whatwg.org/#dom-url-protocol\n * A URL's `scheme` is specced as the `protocol` sans-colon, but isn't exposed on a URL object.\n * This method can take all 3 of these string types as a parameter.\n *\n * @param protocol Either a networkRequest's `protocol` per CDP or a `new URL(href).protocol`\n */\nfunction isNonNetworkProtocol(protocol: string): boolean {\n // Strip off any colon\n const urlScheme = protocol.includes(':') ? protocol.slice(0, protocol.indexOf(':')) : protocol;\n return NON_NETWORK_SCHEMES.includes(urlScheme);\n}\n\nclass NetworkNode<T = Lantern.AnyNetworkObject> extends BaseNode<T> {\n _request: Lantern.NetworkRequest<T>;\n\n constructor(networkRequest: Lantern.NetworkRequest<T>) {\n super(networkRequest.requestId);\n this._request = networkRequest;\n }\n\n override get type(): 'network' {\n return BaseNode.types.NETWORK;\n }\n\n override get startTime(): number {\n return this._request.rendererStartTime * 1000;\n }\n\n override get endTime(): number {\n return this._request.networkEndTime * 1000;\n }\n\n get rawRequest(): Readonly<T> {\n return this._request.rawRequest as Required<T>;\n }\n\n get request(): Lantern.NetworkRequest<T> {\n return this._request;\n }\n\n get initiatorType(): string {\n return this._request.initiator && this._request.initiator.type;\n }\n\n get fromDiskCache(): boolean {\n return Boolean(this._request.fromDiskCache);\n }\n\n get isNonNetworkProtocol(): boolean {\n // The 'protocol' field in devtools a string more like a `scheme`\n return isNonNetworkProtocol(this.request.protocol) ||\n // But `protocol` can fail to be populated if the request fails, so fallback to scheme.\n isNonNetworkProtocol(this.request.parsedURL.scheme);\n }\n\n /**\n * Returns whether this network request can be downloaded without a TCP connection.\n * During simulation we treat data coming in over a network connection separately from on-device data.\n */\n get isConnectionless(): boolean {\n return this.fromDiskCache || this.isNonNetworkProtocol;\n }\n\n hasRenderBlockingPriority(): boolean {\n const priority = this._request.priority;\n const isScript = this._request.resourceType === 'Script';\n const isDocument = this._request.resourceType === 'Document';\n const isBlockingScript = priority === 'High' && isScript;\n const isBlockingHtmlImport = priority === 'High' && isDocument;\n return priority === 'VeryHigh' || isBlockingScript || isBlockingHtmlImport;\n }\n\n override cloneWithoutRelationships(): NetworkNode<T> {\n const node = new NetworkNode(this._request);\n node.setIsMainDocument(this._isMainDocument);\n return node;\n }\n}\n\nexport {NetworkNode};\n"]}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { type Node } from './BaseNode.js';
|
|
2
|
-
import { CPUNode } from './CPUNode.js';
|
|
3
|
-
import { NetworkNode } from './NetworkNode.js';
|
|
4
|
-
import type * as Lantern from './types/lantern.js';
|
|
5
|
-
interface NetworkNodeOutput {
|
|
6
|
-
nodes: Array<NetworkNode>;
|
|
7
|
-
idToNodeMap: Map<string, NetworkNode>;
|
|
8
|
-
urlToNodeMap: Map<string, Array<NetworkNode>>;
|
|
9
|
-
frameIdToNodeMap: Map<string, NetworkNode | null>;
|
|
10
|
-
}
|
|
11
|
-
declare class PageDependencyGraph {
|
|
12
|
-
static getNetworkInitiators(request: Lantern.NetworkRequest): string[];
|
|
13
|
-
static getNetworkNodeOutput(networkRequests: Lantern.NetworkRequest[]): NetworkNodeOutput;
|
|
14
|
-
static isScheduleableTask(evt: Lantern.TraceEvent): boolean;
|
|
15
|
-
/**
|
|
16
|
-
* There should *always* be at least one top level event, having 0 typically means something is
|
|
17
|
-
* drastically wrong with the trace and we should just give up early and loudly.
|
|
18
|
-
*/
|
|
19
|
-
static assertHasToplevelEvents(events: Lantern.TraceEvent[]): void;
|
|
20
|
-
static getCPUNodes(mainThreadEvents: Lantern.TraceEvent[]): CPUNode[];
|
|
21
|
-
static linkNetworkNodes(rootNode: NetworkNode, networkNodeOutput: NetworkNodeOutput): void;
|
|
22
|
-
static linkCPUNodes(rootNode: Node, networkNodeOutput: NetworkNodeOutput, cpuNodes: CPUNode[]): void;
|
|
23
|
-
/**
|
|
24
|
-
* Removes the given node from the graph, but retains all paths between its dependencies and
|
|
25
|
-
* dependents.
|
|
26
|
-
*/
|
|
27
|
-
static _pruneNode(node: Node): void;
|
|
28
|
-
/**
|
|
29
|
-
* TODO: remove when CDT backend in Lighthouse is gone. Until then, this is a useful debugging tool
|
|
30
|
-
* to find delta between using CDP or the trace to create the network requests.
|
|
31
|
-
*
|
|
32
|
-
* When a test fails using the trace backend, I enabled this debug method and copied the network
|
|
33
|
-
* requests when CDP was used, then when trace is used, and diff'd them. This method helped
|
|
34
|
-
* remove non-logical differences from the comparison (order of properties, slight rounding
|
|
35
|
-
* discrepancies, removing object cycles, etc).
|
|
36
|
-
*
|
|
37
|
-
* When using for a unit test, make sure to do `.only` so you are getting what you expect.
|
|
38
|
-
*/
|
|
39
|
-
static _debugNormalizeRequests(lanternRequests: Lantern.NetworkRequest[]): void;
|
|
40
|
-
static createGraph(mainThreadEvents: Lantern.TraceEvent[], networkRequests: Lantern.NetworkRequest[], url: Lantern.Simulation.URL): Node;
|
|
41
|
-
static printGraph(rootNode: Node, widthInCharacters?: number): void;
|
|
42
|
-
}
|
|
43
|
-
export { PageDependencyGraph };
|