@chrome-devtools/integration-test-runner 1.20260419.0 → 1.20260426.0

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.
@@ -4592,6 +4592,9 @@
4592
4592
  "panels/application/CrashReportContextView.ts | unknownFrame": {
4593
4593
  "message": "Unknown Frame"
4594
4594
  },
4595
+ "panels/application/DeviceBoundSessionsTreeElement.ts | clear": {
4596
+ "message": "Clear"
4597
+ },
4595
4598
  "panels/application/DeviceBoundSessionsTreeElement.ts | deviceBoundSessions": {
4596
4599
  "message": "Device bound sessions"
4597
4600
  },
@@ -6332,6 +6335,9 @@
6332
6335
  "panels/application/WebMCPView.ts | pending": {
6333
6336
  "message": "In Progress"
6334
6337
  },
6338
+ "panels/application/WebMCPView.ts | runTool": {
6339
+ "message": "Run Tool"
6340
+ },
6335
6341
  "panels/application/WebMCPView.ts | status": {
6336
6342
  "message": "Status"
6337
6343
  },
@@ -11771,6 +11777,9 @@
11771
11777
  "panels/profiler/HeapProfileView.ts | recordMemoryAllocations": {
11772
11778
  "message": "Approximate memory allocations by sampling long operations with minimal overhead and get a breakdown by JavaScript execution stack"
11773
11779
  },
11780
+ "panels/profiler/HeapProfileView.ts | samplingHeapProfilerTimeline": {
11781
+ "message": "Sampling heap profiler timeline"
11782
+ },
11774
11783
  "panels/profiler/HeapProfileView.ts | samplingProfiles": {
11775
11784
  "message": "Sampling profiles"
11776
11785
  },
@@ -18038,6 +18047,9 @@
18038
18047
  "ui/legacy/components/utils/Linkifier.ts | unknown": {
18039
18048
  "message": "(unknown)"
18040
18049
  },
18050
+ "ui/legacy/Dialog.ts | close": {
18051
+ "message": "Close"
18052
+ },
18041
18053
  "ui/legacy/DockController.ts | close": {
18042
18054
  "message": "Close"
18043
18055
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chrome-devtools/integration-test-runner",
3
- "version": "1.20260419.0",
3
+ "version": "1.20260426.0",
4
4
  "description": "chrome-devtools-frontend built version",
5
5
  "repository": "https://github.com/iam-medvedev/chrome-devtools.git",
6
6
  "author": "Ilya Medvedev <ilya@medvedev.im>",
@@ -49,7 +49,7 @@
49
49
 
50
50
  // gen/front_end/third_party/web-vitals/package/dist/modules/lib/doubleRAF.js
51
51
  var doubleRAF = (cb) => {
52
- requestAnimationFrame(() => requestAnimationFrame(() => cb()));
52
+ requestAnimationFrame(() => requestAnimationFrame(cb));
53
53
  };
54
54
 
55
55
  // gen/front_end/third_party/web-vitals/package/dist/modules/lib/generateUniqueID.js
@@ -67,8 +67,7 @@
67
67
 
68
68
  // gen/front_end/third_party/web-vitals/package/dist/modules/lib/getActivationStart.js
69
69
  var getActivationStart = () => {
70
- const navEntry = getNavigationEntry();
71
- return navEntry?.activationStart ?? 0;
70
+ return getNavigationEntry()?.activationStart ?? 0;
72
71
  };
73
72
 
74
73
  // gen/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.js
@@ -134,7 +133,7 @@
134
133
  try {
135
134
  if (PerformanceObserver.supportedEntryTypes.includes(type)) {
136
135
  const po2 = new PerformanceObserver((list) => {
137
- Promise.resolve().then(() => {
136
+ queueMicrotask(() => {
138
137
  callback(list.getEntries());
139
138
  });
140
139
  });
@@ -179,7 +178,7 @@
179
178
  var getVisibilityWatcher = () => {
180
179
  if (firstHiddenTime < 0) {
181
180
  const activationStart = getActivationStart();
182
- const firstVisibilityStateHiddenTime = !document.prerendering ? globalThis.performance.getEntriesByType("visibility-state").filter((e) => e.name === "hidden" && e.startTime > activationStart)[0]?.startTime : void 0;
181
+ const firstVisibilityStateHiddenTime = !document.prerendering ? globalThis.performance.getEntriesByType("visibility-state").find((e) => e.name === "hidden" && e.startTime >= activationStart)?.startTime : void 0;
183
182
  firstHiddenTime = firstVisibilityStateHiddenTime ?? initHiddenTime();
184
183
  addEventListener("visibilitychange", onVisibilityUpdate, true);
185
184
  addEventListener("prerenderingchange", onVisibilityUpdate, true);
@@ -202,7 +201,7 @@
202
201
  // gen/front_end/third_party/web-vitals/package/dist/modules/lib/whenActivated.js
203
202
  var whenActivated = (callback) => {
204
203
  if (document.prerendering) {
205
- addEventListener("prerenderingchange", () => callback(), true);
204
+ addEventListener("prerenderingchange", callback, true);
206
205
  } else {
207
206
  callback();
208
207
  }
@@ -271,7 +270,7 @@
271
270
  layoutShiftManager._sessionValue = 0;
272
271
  metric = initMetric("CLS", 0);
273
272
  report = bindReporter(onReport, metric, CLSThresholds, opts.reportAllChanges);
274
- doubleRAF(() => report());
273
+ doubleRAF(report);
275
274
  });
276
275
  setTimeout(report);
277
276
  }
@@ -299,8 +298,6 @@
299
298
  if ("interactionCount" in performance || po)
300
299
  return;
301
300
  po = observe("event", updateEstimate, {
302
- type: "event",
303
- buffered: true,
304
301
  durationThreshold: 0
305
302
  });
306
303
  };
@@ -383,14 +380,20 @@
383
380
  // gen/front_end/third_party/web-vitals/package/dist/modules/lib/whenIdleOrHidden.js
384
381
  var whenIdleOrHidden = (cb) => {
385
382
  const rIC = globalThis.requestIdleCallback || setTimeout;
383
+ const cIC = globalThis.cancelIdleCallback || clearTimeout;
386
384
  if (document.visibilityState === "hidden") {
387
385
  cb();
388
386
  } else {
389
- cb = runOnce(cb);
390
- addEventListener("visibilitychange", cb, { once: true, capture: true });
391
- rIC(() => {
392
- cb();
393
- removeEventListener("visibilitychange", cb, { capture: true });
387
+ const wrappedCb = runOnce(cb);
388
+ let idleHandle = -1;
389
+ const onHidden = () => {
390
+ cIC(idleHandle);
391
+ wrappedCb();
392
+ };
393
+ addEventListener("visibilitychange", onHidden, { once: true, capture: true });
394
+ idleHandle = rIC(() => {
395
+ removeEventListener("visibilitychange", onHidden, { capture: true });
396
+ wrappedCb();
394
397
  });
395
398
  }
396
399
  };
@@ -556,16 +559,17 @@
556
559
  var getLoadState = (timestamp) => {
557
560
  if (document.readyState === "loading") {
558
561
  return "loading";
559
- } else {
560
- const navigationEntry = getNavigationEntry();
561
- if (navigationEntry) {
562
- if (timestamp < navigationEntry.domInteractive) {
563
- return "loading";
564
- } else if (navigationEntry.domContentLoadedEventStart === 0 || timestamp < navigationEntry.domContentLoadedEventStart) {
565
- return "dom-interactive";
566
- } else if (navigationEntry.domComplete === 0 || timestamp < navigationEntry.domComplete) {
567
- return "dom-content-loaded";
568
- }
562
+ }
563
+ const navigationEntry = getNavigationEntry();
564
+ if (navigationEntry) {
565
+ if (timestamp < navigationEntry.domInteractive) {
566
+ return "loading";
567
+ }
568
+ if (navigationEntry.domContentLoadedEventStart === 0 || timestamp < navigationEntry.domContentLoadedEventStart) {
569
+ return "dom-interactive";
570
+ }
571
+ if (navigationEntry.domComplete === 0 || timestamp < navigationEntry.domComplete) {
572
+ return "dom-content-loaded";
569
573
  }
570
574
  }
571
575
  return "complete";
@@ -636,12 +640,10 @@
636
640
  }
637
641
  }
638
642
  }
639
- const metricWithAttribution = Object.assign(metric, { attribution });
640
- return metricWithAttribution;
643
+ return Object.assign(metric, { attribution });
641
644
  };
642
645
  onCLS$1((metric) => {
643
- const metricWithAttribution = attributeCLS(metric);
644
- onReport(metricWithAttribution);
646
+ onReport(attributeCLS(metric));
645
647
  }, opts);
646
648
  };
647
649
 
@@ -672,13 +674,12 @@
672
674
  };
673
675
  var onFCP2 = (onReport, opts = {}) => {
674
676
  onFCP((metric) => {
675
- const metricWithAttribution = attributeFCP(metric);
676
- onReport(metricWithAttribution);
677
+ onReport(attributeFCP(metric));
677
678
  }, opts);
678
679
  };
679
680
 
680
681
  // gen/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js
681
- var MAX_PREVIOUS_FRAMES = 50;
682
+ var MAX_PENDING_FRAMES = 10;
682
683
  var onINP2 = (onReport, opts = {}) => {
683
684
  opts = Object.assign({}, opts);
684
685
  const interactionManager = initUnique(opts, InteractionManager);
@@ -712,6 +713,9 @@
712
713
  group.startTime = Math.min(entry.startTime, group.startTime);
713
714
  group.processingStart = Math.min(entry.processingStart, group.processingStart);
714
715
  group.processingEnd = Math.max(entry.processingEnd, group.processingEnd);
716
+ if (opts.includeProcessedEventEntries !== false) {
717
+ group.entries.push(entry);
718
+ }
715
719
  break;
716
720
  }
717
721
  }
@@ -721,12 +725,9 @@
721
725
  processingStart: entry.processingStart,
722
726
  processingEnd: entry.processingEnd,
723
727
  renderTime,
724
- // Entries are not needed in DevTools since we're only displaying the
725
- // summary information, and also emiting events as they come in. Stop
726
- // holding a reference to avoid memory issues.
727
- // See https://crbug.com/484342204
728
- // entries: [entry],
729
- entries: []
728
+ // processedEventEntries can be quite large, so only include them if
729
+ // the user explicitly requests them (default is to include).
730
+ entries: opts.includeProcessedEventEntries !== false ? [entry] : []
730
731
  };
731
732
  pendingEntriesGroups.push(group);
732
733
  }
@@ -742,28 +743,25 @@
742
743
  }
743
744
  };
744
745
  const cleanupEntries = () => {
745
- const longestInteractionGroups = interactionManager._longestInteractionList.map((i) => {
746
+ const longestInteractionGroups = new Set(interactionManager._longestInteractionList.map((i) => {
746
747
  return entryToEntriesGroupMap.get(i.entries[0]);
748
+ }));
749
+ const minIndexToKeep = pendingEntriesGroups.length - MAX_PENDING_FRAMES;
750
+ pendingEntriesGroups = pendingEntriesGroups.filter((group, i) => {
751
+ return i >= minIndexToKeep || longestInteractionGroups.has(group);
747
752
  });
748
- const minIndex = pendingEntriesGroups.length - MAX_PREVIOUS_FRAMES;
749
- pendingEntriesGroups = pendingEntriesGroups.filter((group, index) => {
750
- if (index >= minIndex)
751
- return true;
752
- return longestInteractionGroups.includes(group);
753
- });
754
- const loafsToKeep = /* @__PURE__ */ new Set();
753
+ const intersectingLoAFs = /* @__PURE__ */ new Set();
755
754
  for (const group of pendingEntriesGroups) {
756
755
  const loafs = getIntersectingLoAFs(group.startTime, group.processingEnd);
757
756
  for (const loaf of loafs) {
758
- loafsToKeep.add(loaf);
757
+ intersectingLoAFs.add(loaf);
759
758
  }
760
759
  }
761
- const prevFrameIndexCutoff = pendingLoAFs.length - 1 - MAX_PREVIOUS_FRAMES;
762
- pendingLoAFs = pendingLoAFs.filter((loaf, index) => {
763
- if (loaf.startTime > latestProcessingEnd && index > prevFrameIndexCutoff) {
764
- return true;
765
- }
766
- return loafsToKeep.has(loaf);
760
+ pendingLoAFs = pendingLoAFs.filter((loaf) => {
761
+ return (
762
+ // Compare times first because it's faster.
763
+ loaf.startTime > latestProcessingEnd || intersectingLoAFs.has(loaf)
764
+ );
767
765
  });
768
766
  cleanupPending = false;
769
767
  };
@@ -884,13 +882,11 @@
884
882
  totalUnattributedDuration: void 0
885
883
  };
886
884
  attributeLoAFDetails(attribution);
887
- const metricWithAttribution = Object.assign(metric, { attribution });
888
- return metricWithAttribution;
885
+ return Object.assign(metric, { attribution });
889
886
  };
890
887
  observe("long-animation-frame", handleLoAFEntries);
891
888
  onINP$1((metric) => {
892
- const metricWithAttribution = attributeINP(metric);
893
- onReport(metricWithAttribution);
889
+ onReport(attributeINP(metric));
894
890
  }, opts);
895
891
  };
896
892
 
@@ -904,6 +900,8 @@
904
900
  if (node) {
905
901
  const customTarget = opts.generateTarget?.(node) ?? getSelector(node);
906
902
  lcpTargetMap.set(entry, customTarget);
903
+ } else if (entry.id) {
904
+ lcpTargetMap.set(entry, `#${entry.id}`);
907
905
  }
908
906
  };
909
907
  const attributeLCP = (metric) => {
@@ -914,11 +912,19 @@
914
912
  elementRenderDelay: metric.value
915
913
  };
916
914
  if (metric.entries.length) {
915
+ const lcpEntry = metric.entries.at(-1);
916
+ const lcpResourceEntry = lcpEntry.url && performance.getEntriesByType("resource").find((e) => e.name === lcpEntry.url);
917
+ attribution.target = lcpTargetMap.get(lcpEntry);
918
+ attribution.lcpEntry = lcpEntry;
919
+ if (lcpEntry.url) {
920
+ attribution.url = lcpEntry.url;
921
+ }
922
+ if (lcpResourceEntry) {
923
+ attribution.lcpResourceEntry = lcpResourceEntry;
924
+ }
917
925
  const navigationEntry = getNavigationEntry();
918
926
  if (navigationEntry) {
919
927
  const activationStart = navigationEntry.activationStart || 0;
920
- const lcpEntry = metric.entries.at(-1);
921
- const lcpResourceEntry = lcpEntry.url && performance.getEntriesByType("resource").filter((e) => e.name === lcpEntry.url)[0];
922
928
  const ttfb = Math.max(0, navigationEntry.responseStart - activationStart);
923
929
  const lcpRequestStart = Math.max(
924
930
  ttfb,
@@ -931,28 +937,19 @@
931
937
  Math.max(lcpRequestStart, lcpResourceEntry ? lcpResourceEntry.responseEnd - activationStart : 0)
932
938
  );
933
939
  attribution = {
934
- target: lcpTargetMap.get(lcpEntry),
940
+ ...attribution,
935
941
  timeToFirstByte: ttfb,
936
942
  resourceLoadDelay: lcpRequestStart - ttfb,
937
943
  resourceLoadDuration: lcpResponseEnd - lcpRequestStart,
938
944
  elementRenderDelay: metric.value - lcpResponseEnd,
939
- navigationEntry,
940
- lcpEntry
945
+ navigationEntry
941
946
  };
942
- if (lcpEntry.url) {
943
- attribution.url = lcpEntry.url;
944
- }
945
- if (lcpResourceEntry) {
946
- attribution.lcpResourceEntry = lcpResourceEntry;
947
- }
948
947
  }
949
948
  }
950
- const metricWithAttribution = Object.assign(metric, { attribution });
951
- return metricWithAttribution;
949
+ return Object.assign(metric, { attribution });
952
950
  };
953
951
  onLCP$1((metric) => {
954
- const metricWithAttribution = attributeLCP(metric);
955
- onReport(metricWithAttribution);
952
+ onReport(attributeLCP(metric));
956
953
  }, opts);
957
954
  };
958
955
 
@@ -992,8 +989,7 @@
992
989
  };
993
990
  var onTTFB2 = (onReport, opts = {}) => {
994
991
  onTTFB((metric) => {
995
- const metricWithAttribution = attributeTTFB(metric);
996
- onReport(metricWithAttribution);
992
+ onReport(attributeTTFB(metric));
997
993
  }, opts);
998
994
  };
999
995
 
@@ -1242,6 +1238,7 @@
1242
1238
  }, {
1243
1239
  reportAllChanges: true,
1244
1240
  durationThreshold: 0,
1241
+ includeProcessedEventEntries: false,
1245
1242
  onEachInteraction,
1246
1243
  generateTarget(el) {
1247
1244
  if (el) {