Skip to content

test: combine duplicated undo/redo and settings dialog E2E tests with test.step#11835

Merged
christian-byrne merged 1 commit intomainfrom
batch-dispatch/cr-11556
May 4, 2026
Merged

test: combine duplicated undo/redo and settings dialog E2E tests with test.step#11835
christian-byrne merged 1 commit intomainfrom
batch-dispatch/cr-11556

Conversation

@christian-byrne
Copy link
Copy Markdown
Contributor

@christian-byrne christian-byrne commented May 2, 2026

Summary

Refactor E2E tests added in #11210 that repeated full prior-test bodies as setup, combining duplicate pairs into single tests with named test.step() blocks.

Changes

The redo step now reuses the post-undo state from its preceding step instead of re-creating and re-undoing the node, removing the duplicated setup the reviewer flagged.

Review Focus

  • Naming of combined tests and test.step() labels.
  • Note: per @AustinMroz's comment thread, location 2 in the issue refers to the Escape closes settings dialog test (which duplicated the Ctrl+, test body), not the Delete test (which has unique logic). Treated accordingly.

Fixes #11556

┆Issue is synchronized with this Notion page by Unito

… test.step

Per code review on #11210, several tests repeated the full body of a
prior test as setup before asserting additional behavior. Combine the
duplicate pairs into single tests with named test.step() blocks:

- Ctrl+Z undo + Ctrl+Shift+Z redo (keyboardShortcutActions)
- Ctrl+, opens + Escape closes settings dialog (keyboardShortcutActions)
- Edit > Undo + Edit > Redo (topbarMenuCommands)

Fixes #11556
@christian-byrne christian-byrne requested a review from a team May 2, 2026 06:50
@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label May 2, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 2, 2026

📝 Walkthrough

Walkthrough

Two E2E test files are refactored to eliminate duplicated setup logic by combining related tests into single tests using Playwright's test.step() blocks. The undo/redo keyboard shortcut test and topbar menu test are restructured to avoid repeating prior test bodies as setup preconditions.

Changes

Test Refactoring for Duplicate Setup Elimination

Layer / File(s) Summary
Keyboard Shortcut Undo/Redo Consolidation
browser_tests/tests/keyboardShortcutActions.spec.ts (lines 16–44)
The Undo and Redo tests are merged into a single test with two test.step blocks. The first step creates a node, advances frames, presses Ctrl+Z, and asserts the node count decreases. The second step presses Ctrl+Shift+Z and polls until the node count is restored.
Settings Dialog Test Simplification
browser_tests/tests/keyboardShortcutActions.spec.ts (lines 55–71)
The settings dialog test is rewritten to open via a single Ctrl+, sequence, assert visibility, then close by pressing Escape directly—removing the redundant Ctrl+, sequence before the Escape assertion.
Topbar Menu Undo/Redo Consolidation
browser_tests/tests/topbarMenuCommands.spec.ts (lines 25–53)
Two separate tests ("Edit > Undo…" and a redo test) are merged into a single test with test.step blocks. After injecting a node, the test uses expect.poll to verify node-count increase, triggers Undo and polls for the count to return, then triggers Redo and polls for restoration—eliminating duplication of setup logic.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 With step-by-step precision clear,
Duplicate test paths disappear,
Undo, redo, all in one flow,
Cleaner tests that brightly glow!

🚥 Pre-merge checks | ✅ 7
✅ Passed checks (7 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main refactoring: combining duplicated E2E tests and using test.step blocks.
Linked Issues check ✅ Passed All three coding objectives from issue #11556 are addressed: merging undo/redo in keyboardShortcutActions [1], merging settings dialog tests [2], and merging undo/redo in topbarMenuCommands [3].
Out of Scope Changes check ✅ Passed All changes in the two modified files align with the stated objective of combining duplicated tests using test.step blocks. No unrelated refactoring or scope creep detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
End-To-End Regression Coverage For Fixes ✅ Passed PR modifies test files under browser_tests/ directory, satisfying condition 2 with necessary end-to-end test coverage for refactoring changes.
Adr Compliance For Entity/Litegraph Changes ✅ Passed PR modifies only test files in browser_tests/tests/ directory, outside the scope of litegraph, ECS, or graph entity source code.
Description check ✅ Passed The PR description comprehensively follows the template with clear Summary, Changes, and Review Focus sections addressing all merge objectives.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch batch-dispatch/cr-11556

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 2, 2026

🎭 Playwright: ✅ 1462 passed, 0 failed · 1 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1443 / ❌ 0 / ⚠️ 1 / ⏭️ 5)
  • chromium-2x: View Report (✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • chromium-0.5x: View Report (✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • mobile-chrome: View Report (✅ 16 / ❌ 0 / ⚠️ 0 / ⏭️ 0)

@christian-byrne christian-byrne requested a review from AustinMroz May 2, 2026 06:52
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 2, 2026

📦 Bundle: 5.25 MB gzip 🔴 +34 B

Details

Summary

  • Raw size: 24.2 MB baseline 24.2 MB — ⚪ 0 B
  • Gzip: 5.25 MB baseline 5.25 MB — 🔴 +34 B
  • Brotli: 4.07 MB baseline 4.07 MB — 🟢 -221 B
  • Bundles: 258 current • 258 baseline • 118 added / 118 removed

Category Glance
Vendor & Third-Party ⚪ 0 B (9.94 MB) · Other ⚪ 0 B (8.84 MB) · Data & Services ⚪ 0 B (3.04 MB) · Graph Workspace ⚪ 0 B (1.24 MB) · Panels & Settings ⚪ 0 B (489 kB) · Utilities & Hooks ⚪ 0 B (365 kB) · + 5 more

App Entry Points — 22.6 kB (baseline 22.6 kB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-B0cnOkHl.js (new) 22.6 kB 🔴 +22.6 kB 🔴 +8 kB 🔴 +6.89 kB
assets/index-pW6he0Qt.js (removed) 22.6 kB 🟢 -22.6 kB 🟢 -8 kB 🟢 -6.89 kB

Status: 1 added / 1 removed

Graph Workspace — 1.24 MB (baseline 1.24 MB) • ⚪ 0 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-BsiqUI0j.js (new) 1.24 MB 🔴 +1.24 MB 🔴 +265 kB 🔴 +199 kB
assets/GraphView-Bz9Uft1E.js (removed) 1.24 MB 🟢 -1.24 MB 🟢 -265 kB 🟢 -199 kB

Status: 1 added / 1 removed

Views & Navigation — 81.8 kB (baseline 81.8 kB) • ⚪ 0 B

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-atqVDB6a.js (removed) 19.6 kB 🟢 -19.6 kB 🟢 -5.14 kB 🟢 -4.58 kB
assets/CloudSurveyView-TH7Ayi2L.js (new) 19.6 kB 🔴 +19.6 kB 🔴 +5.14 kB 🔴 +4.59 kB
assets/CloudLoginView-CDHOqxBB.js (new) 12.2 kB 🔴 +12.2 kB 🔴 +3.45 kB 🔴 +3.05 kB
assets/CloudLoginView-Eo0wvxDU.js (removed) 12.2 kB 🟢 -12.2 kB 🟢 -3.45 kB 🟢 -3.06 kB
assets/CloudSignupView-CrVzGloG.js (new) 9.97 kB 🔴 +9.97 kB 🔴 +2.95 kB 🔴 +2.59 kB
assets/CloudSignupView-PCZIWJ22.js (removed) 9.97 kB 🟢 -9.97 kB 🟢 -2.95 kB 🟢 -2.6 kB
assets/UserCheckView-D2_Kn6vp.js (new) 9.07 kB 🔴 +9.07 kB 🔴 +2.33 kB 🔴 +2.04 kB
assets/UserCheckView-DG0H3jrn.js (removed) 9.07 kB 🟢 -9.07 kB 🟢 -2.34 kB 🟢 -2.05 kB
assets/CloudLayoutView-BABTAp6O.js (new) 7.73 kB 🔴 +7.73 kB 🔴 +2.45 kB 🔴 +2.14 kB
assets/CloudLayoutView-DOC36_Sy.js (removed) 7.73 kB 🟢 -7.73 kB 🟢 -2.46 kB 🟢 -2.15 kB
assets/CloudForgotPasswordView-DnvFD064.js (new) 6.14 kB 🔴 +6.14 kB 🔴 +2.19 kB 🔴 +1.92 kB
assets/CloudForgotPasswordView-hoaKuCkL.js (removed) 6.14 kB 🟢 -6.14 kB 🟢 -2.19 kB 🟢 -1.95 kB
assets/CloudAuthTimeoutView-5Oy0MRd6.js (removed) 5.5 kB 🟢 -5.5 kB 🟢 -2.02 kB 🟢 -1.78 kB
assets/CloudAuthTimeoutView-Z7-DM-je.js (new) 5.5 kB 🔴 +5.5 kB 🔴 +2.02 kB 🔴 +1.76 kB
assets/CloudSubscriptionRedirectView-BX987tBm.js (removed) 5.28 kB 🟢 -5.28 kB 🟢 -2 kB 🟢 -1.77 kB
assets/CloudSubscriptionRedirectView-CHDWDSfR.js (new) 5.28 kB 🔴 +5.28 kB 🔴 +2 kB 🔴 +1.77 kB
assets/UserSelectView-BuxxZylx.js (new) 4.73 kB 🔴 +4.73 kB 🔴 +1.75 kB 🔴 +1.55 kB
assets/UserSelectView-D0hzOZ2f.js (removed) 4.73 kB 🟢 -4.73 kB 🟢 -1.76 kB 🟢 -1.55 kB

Status: 9 added / 9 removed / 2 unchanged

Panels & Settings — 489 kB (baseline 489 kB) • ⚪ 0 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/KeybindingPanel-B4YbluK0.js (removed) 46.7 kB 🟢 -46.7 kB 🟢 -9.62 kB 🟢 -8.54 kB
assets/KeybindingPanel-DbYwPxVl.js (new) 46.7 kB 🔴 +46.7 kB 🔴 +9.62 kB 🔴 +8.55 kB
assets/SecretsPanel-CWqDef9D.js (removed) 22.9 kB 🟢 -22.9 kB 🟢 -5.55 kB 🟢 -4.88 kB
assets/SecretsPanel-YOSbWjxY.js (new) 22.9 kB 🔴 +22.9 kB 🔴 +5.55 kB 🔴 +4.88 kB
assets/LegacyCreditsPanel-CulJHwJO.js (new) 21.7 kB 🔴 +21.7 kB 🔴 +5.91 kB 🔴 +5.2 kB
assets/LegacyCreditsPanel-DAZWEPxC.js (removed) 21.7 kB 🟢 -21.7 kB 🟢 -5.91 kB 🟢 -5.21 kB
assets/SubscriptionPanel-BU5OR9YU.js (removed) 19.9 kB 🟢 -19.9 kB 🟢 -5.09 kB 🟢 -4.46 kB
assets/SubscriptionPanel-pjIgc4uz.js (new) 19.9 kB 🔴 +19.9 kB 🔴 +5.08 kB 🔴 +4.46 kB
assets/AboutPanel-CPfro2Os.js (removed) 12 kB 🟢 -12 kB 🟢 -3.33 kB 🟢 -2.98 kB
assets/AboutPanel-CPwXGyWi.js (new) 12 kB 🔴 +12 kB 🔴 +3.33 kB 🔴 +2.99 kB
assets/ExtensionPanel-AtF_0cgQ.js (removed) 9.97 kB 🟢 -9.97 kB 🟢 -2.91 kB 🟢 -2.59 kB
assets/ExtensionPanel-CuowxPmN.js (new) 9.97 kB 🔴 +9.97 kB 🔴 +2.91 kB 🔴 +2.58 kB
assets/ServerConfigPanel-BPWlUR-Q.js (removed) 7.05 kB 🟢 -7.05 kB 🟢 -2.36 kB 🟢 -2.12 kB
assets/ServerConfigPanel-QPG7Fg_Y.js (new) 7.05 kB 🔴 +7.05 kB 🔴 +2.37 kB 🔴 +2.11 kB
assets/UserPanel-CJ-aMFKr.js (removed) 6.75 kB 🟢 -6.75 kB 🟢 -2.25 kB 🟢 -1.97 kB
assets/UserPanel-DB7NXdwx.js (new) 6.75 kB 🔴 +6.75 kB 🔴 +2.25 kB 🔴 +1.97 kB
assets/cloudRemoteConfig-B8uPCkU-.js (new) 2.05 kB 🔴 +2.05 kB 🔴 +992 B 🔴 +852 B
assets/cloudRemoteConfig-RsE7e4ef.js (removed) 2.05 kB 🟢 -2.05 kB 🟢 -991 B 🟢 -852 B
assets/refreshRemoteConfig-CpXB1Yuo.js (removed) 1.45 kB 🟢 -1.45 kB 🟢 -650 B 🟢 -550 B
assets/refreshRemoteConfig-DnxcE7pQ.js (new) 1.45 kB 🔴 +1.45 kB 🔴 +647 B 🔴 +555 B

Status: 10 added / 10 removed / 11 unchanged

User & Accounts — 17.5 kB (baseline 17.5 kB) • ⚪ 0 B

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-B4SURurv.js (removed) 3.57 kB 🟢 -3.57 kB 🟢 -1.26 kB 🟢 -1.07 kB
assets/auth-CVKpjCpB.js (new) 3.57 kB 🔴 +3.57 kB 🔴 +1.26 kB 🔴 +1.08 kB
assets/SignUpForm-BVrDW4nZ.js (removed) 3.19 kB 🟢 -3.19 kB 🟢 -1.29 kB 🟢 -1.15 kB
assets/SignUpForm-PfRejNMU.js (new) 3.19 kB 🔴 +3.19 kB 🔴 +1.29 kB 🔴 +1.15 kB
assets/UpdatePasswordContent-Cez4Z9ps.js (new) 2.9 kB 🔴 +2.9 kB 🔴 +1.3 kB 🔴 +1.17 kB
assets/UpdatePasswordContent-D6dPmba3.js (removed) 2.9 kB 🟢 -2.9 kB 🟢 -1.3 kB 🟢 -1.15 kB
assets/authStore-CkeNE1lX.js (removed) 1.19 kB 🟢 -1.19 kB 🟢 -570 B 🟢 -506 B
assets/authStore-lCzN95OZ.js (new) 1.19 kB 🔴 +1.19 kB 🔴 +571 B 🔴 +506 B
assets/auth-CDU1dcde.js (removed) 348 B 🟢 -348 B 🟢 -218 B 🟢 -189 B
assets/auth-DRadlNCj.js (new) 348 B 🔴 +348 B 🔴 +218 B 🔴 +206 B

Status: 5 added / 5 removed / 2 unchanged

Editors & Dialogs — 112 kB (baseline 112 kB) • ⚪ 0 B

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyHubPublishDialog-C1OL5DHc.js (removed) 85.8 kB 🟢 -85.8 kB 🟢 -18.6 kB 🟢 -15.9 kB
assets/ComfyHubPublishDialog-PZlzHslB.js (new) 85.8 kB 🔴 +85.8 kB 🔴 +18.6 kB 🔴 +15.8 kB
assets/useShareDialog-B3DSqqVu.js (new) 23.8 kB 🔴 +23.8 kB 🔴 +5.79 kB 🔴 +5.13 kB
assets/useShareDialog-D3stidAg.js (removed) 23.8 kB 🟢 -23.8 kB 🟢 -5.79 kB 🟢 -5.11 kB
assets/ComfyHubPublishDialog-CfVy6F1N.js (new) 1.35 kB 🔴 +1.35 kB 🔴 +632 B 🔴 +564 B
assets/ComfyHubPublishDialog-H5klHUw3.js (removed) 1.35 kB 🟢 -1.35 kB 🟢 -632 B 🟢 -556 B
assets/useSubscriptionDialog-8ybV0x0z.js (new) 1.17 kB 🔴 +1.17 kB 🔴 +563 B 🔴 +488 B
assets/useSubscriptionDialog-iGXyTzZ2.js (removed) 1.17 kB 🟢 -1.17 kB 🟢 -561 B 🟢 -488 B

Status: 4 added / 4 removed

UI Components — 62.9 kB (baseline 62.9 kB) • ⚪ 0 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-CP2H_Qo_.js (removed) 13.5 kB 🟢 -13.5 kB 🟢 -3.79 kB 🟢 -3.38 kB
assets/ComfyQueueButton-Y4khDebZ.js (new) 13.5 kB 🔴 +13.5 kB 🔴 +3.79 kB 🔴 +3.38 kB
assets/useTerminalTabs-CHfWKgM6.js (removed) 11 kB 🟢 -11 kB 🟢 -3.73 kB 🟢 -3.29 kB
assets/useTerminalTabs-DE7WasX7.js (new) 11 kB 🔴 +11 kB 🔴 +3.73 kB 🔴 +3.28 kB
assets/SubscribeButton-Dh5haAsJ.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.05 kB 🔴 +944 B
assets/SubscribeButton-TnUrCGFK.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.05 kB 🟢 -940 B
assets/cloudFeedbackTopbarButton-BiHDuGtJ.js (removed) 1.83 kB 🟢 -1.83 kB 🟢 -947 B 🟢 -828 B
assets/cloudFeedbackTopbarButton-D53ksQAi.js (new) 1.83 kB 🔴 +1.83 kB 🔴 +949 B 🔴 +828 B
assets/ComfyQueueButton-C6NH4uA1.js (new) 1.27 kB 🔴 +1.27 kB 🔴 +599 B 🔴 +530 B
assets/ComfyQueueButton-hN3JN0UE.js (removed) 1.27 kB 🟢 -1.27 kB 🟢 -597 B 🟢 -530 B

Status: 5 added / 5 removed / 9 unchanged

Data & Services — 3.04 MB (baseline 3.04 MB) • ⚪ 0 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-B0ZIjIx2.js (new) 1.98 MB 🔴 +1.98 MB 🔴 +455 kB 🔴 +345 kB
assets/dialogService-CzkU_er7.js (removed) 1.98 MB 🟢 -1.98 MB 🟢 -455 kB 🟢 -345 kB
assets/api-BUKf5TmR.js (removed) 887 kB 🟢 -887 kB 🟢 -212 kB 🟢 -167 kB
assets/api-y4VchJnp.js (new) 887 kB 🔴 +887 kB 🔴 +212 kB 🔴 +167 kB
assets/load3dService-DX1ZT0wo.js (new) 115 kB 🔴 +115 kB 🔴 +25 kB 🔴 +21.3 kB
assets/load3dService-Z5tgqK2C.js (removed) 115 kB 🟢 -115 kB 🟢 -25 kB 🟢 -21.3 kB
assets/workflowShareService-CmO_BbL7.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -4.89 kB 🟢 -4.33 kB
assets/workflowShareService-DmxPXFDf.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +4.89 kB 🔴 +4.33 kB
assets/keybindingService-DC_4UP1u.js (removed) 13.8 kB 🟢 -13.8 kB 🟢 -3.67 kB 🟢 -3.22 kB
assets/keybindingService-DVacBsVo.js (new) 13.8 kB 🔴 +13.8 kB 🔴 +3.67 kB 🔴 +3.22 kB
assets/releaseStore-CqcOIyfN.js (removed) 8.12 kB 🟢 -8.12 kB 🟢 -2.28 kB 🟢 -2 kB
assets/releaseStore-DPVRYTic.js (new) 8.12 kB 🔴 +8.12 kB 🔴 +2.28 kB 🔴 +2 kB
assets/userStore-BhywIVCU.js (new) 2.24 kB 🔴 +2.24 kB 🔴 +869 B 🔴 +761 B
assets/userStore-BNnXelI1.js (removed) 2.24 kB 🟢 -2.24 kB 🟢 -871 B 🟢 -762 B
assets/audioService-D7RjB1cW.js (removed) 1.8 kB 🟢 -1.8 kB 🟢 -879 B 🟢 -766 B
assets/audioService-DMPCKDFw.js (new) 1.8 kB 🔴 +1.8 kB 🔴 +878 B 🔴 +757 B
assets/releaseStore-BqXKxXlL.js (new) 1.19 kB 🔴 +1.19 kB 🔴 +565 B 🔴 +498 B
assets/releaseStore-Bu8BW4Cb.js (removed) 1.19 kB 🟢 -1.19 kB 🟢 -565 B 🟢 -498 B
assets/workflowDraftStore-CYiANqwJ.js (removed) 1.17 kB 🟢 -1.17 kB 🟢 -559 B 🟢 -494 B
assets/workflowDraftStore-s9iwGQwO.js (new) 1.17 kB 🔴 +1.17 kB 🔴 +562 B 🔴 +492 B
assets/dialogService-BQVihSZk.js (removed) 1.16 kB 🟢 -1.16 kB 🟢 -552 B 🟢 -490 B
assets/dialogService-Dh8O_P4Z.js (new) 1.16 kB 🔴 +1.16 kB 🔴 +554 B 🔴 +490 B
assets/settingStore-bZvDQhgM.js (new) 1.15 kB 🔴 +1.15 kB 🔴 +557 B 🔴 +488 B
assets/settingStore-C94xR4hF.js (removed) 1.15 kB 🟢 -1.15 kB 🟢 -556 B 🟢 -488 B
assets/assetsStore-BNtcO5zm.js (new) 1.15 kB 🔴 +1.15 kB 🔴 +558 B 🔴 +487 B
assets/assetsStore-CsYv0-9d.js (removed) 1.15 kB 🟢 -1.15 kB 🟢 -556 B 🟢 -490 B

Status: 13 added / 13 removed / 4 unchanged

Utilities & Hooks — 365 kB (baseline 365 kB) • ⚪ 0 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useConflictDetection-C4LVFg_f.js (new) 233 kB 🔴 +233 kB 🔴 +51.8 kB 🔴 +42.2 kB
assets/useConflictDetection-CAVTIoEn.js (removed) 233 kB 🟢 -233 kB 🟢 -51.8 kB 🟢 -42.2 kB
assets/useLoad3d-CU7a5Z8w.js (new) 22.3 kB 🔴 +22.3 kB 🔴 +5.09 kB 🔴 +4.51 kB
assets/useLoad3d-D-6zCInI.js (removed) 22.3 kB 🟢 -22.3 kB 🟢 -5.09 kB 🟢 -4.52 kB
assets/useLoad3dViewer-CA4NI9xv.js (removed) 20.8 kB 🟢 -20.8 kB 🟢 -4.91 kB 🟢 -4.3 kB
assets/useLoad3dViewer-CzAhlv6k.js (new) 20.8 kB 🔴 +20.8 kB 🔴 +4.91 kB 🔴 +4.3 kB
assets/useFeatureFlags-BohAeG7G.js (new) 5.95 kB 🔴 +5.95 kB 🔴 +1.79 kB 🔴 +1.52 kB
assets/useFeatureFlags-WF8eg7cz.js (removed) 5.95 kB 🟢 -5.95 kB 🟢 -1.8 kB 🟢 -1.52 kB
assets/useCopyToClipboard-BjEGmVCI.js (removed) 5.29 kB 🟢 -5.29 kB 🟢 -1.86 kB 🟢 -1.58 kB
assets/useCopyToClipboard-CF6i20Pi.js (new) 5.29 kB 🔴 +5.29 kB 🔴 +1.86 kB 🔴 +1.57 kB
assets/useWorkspaceUI-BbdkfG12.js (removed) 3.34 kB 🟢 -3.34 kB 🟢 -982 B 🟢 -811 B
assets/useWorkspaceUI-pnBHeciS.js (new) 3.34 kB 🔴 +3.34 kB 🔴 +980 B 🔴 +808 B
assets/subscriptionCheckoutUtil-BWuDZIgD.js (removed) 3.31 kB 🟢 -3.31 kB 🟢 -1.36 kB 🟢 -1.19 kB
assets/subscriptionCheckoutUtil-DUedQ8Bj.js (new) 3.31 kB 🔴 +3.31 kB 🔴 +1.36 kB 🔴 +1.19 kB
assets/assetPreviewUtil-BWTTJFqk.js (new) 2.27 kB 🔴 +2.27 kB 🔴 +959 B 🔴 +834 B
assets/assetPreviewUtil-CYi4CvBN.js (removed) 2.27 kB 🟢 -2.27 kB 🟢 -958 B 🟢 -838 B
assets/useUpstreamValue-BMYsVNiu.js (removed) 2.08 kB 🟢 -2.08 kB 🟢 -805 B 🟢 -714 B
assets/useUpstreamValue-CfNUlDde.js (new) 2.08 kB 🔴 +2.08 kB 🔴 +803 B 🔴 +709 B
assets/useLoad3d-B4tH8yHz.js (new) 1.33 kB 🔴 +1.33 kB 🔴 +624 B 🔴 +556 B
assets/useLoad3d-Kwk00RSS.js (removed) 1.33 kB 🟢 -1.33 kB 🟢 -623 B 🟢 -557 B
assets/useLoad3dViewer-C-YhbvOU.js (removed) 1.27 kB 🟢 -1.27 kB 🟢 -590 B 🟢 -529 B
assets/useLoad3dViewer-jV39iae0.js (new) 1.27 kB 🔴 +1.27 kB 🔴 +591 B 🔴 +525 B
assets/useCurrentUser-CTHJF_Eo.js (removed) 1.15 kB 🟢 -1.15 kB 🟢 -556 B 🟢 -489 B
assets/useCurrentUser-YpEV5sqU.js (new) 1.15 kB 🔴 +1.15 kB 🔴 +558 B 🔴 +488 B
assets/useWorkspaceSwitch-CPd46ALh.js (new) 747 B 🔴 +747 B 🔴 +384 B 🔴 +331 B
assets/useWorkspaceSwitch-DfgcuwLJ.js (removed) 747 B 🟢 -747 B 🟢 -382 B 🟢 -331 B

Status: 13 added / 13 removed / 18 unchanged

Vendor & Third-Party — 9.94 MB (baseline 9.94 MB) • ⚪ 0 B

External libraries and shared vendor chunks

Status: 16 unchanged

Other — 8.84 MB (baseline 8.84 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-ChEOH4Ad.js (removed) 76.6 kB 🟢 -76.6 kB 🟢 -19.8 kB 🟢 -16.9 kB
assets/core-DVdt1sYA.js (new) 76.6 kB 🔴 +76.6 kB 🔴 +19.9 kB 🔴 +16.9 kB
assets/groupNode-CO6oN1M1.js (removed) 74.9 kB 🟢 -74.9 kB 🟢 -18.7 kB 🟢 -16.5 kB
assets/groupNode-t2fL5dn_.js (new) 74.9 kB 🔴 +74.9 kB 🔴 +18.7 kB 🔴 +16.5 kB
assets/WidgetSelect-BZyuF4y5.js (removed) 67.2 kB 🟢 -67.2 kB 🟢 -14.6 kB 🟢 -12.6 kB
assets/WidgetSelect-CXhRY2Fk.js (new) 67.2 kB 🔴 +67.2 kB 🔴 +14.6 kB 🔴 +12.7 kB
assets/SubscriptionRequiredDialogContentWorkspace-DJ2WvdEu.js (removed) 48.8 kB 🟢 -48.8 kB 🟢 -9.53 kB 🟢 -8.19 kB
assets/SubscriptionRequiredDialogContentWorkspace-DU_xFy1-.js (new) 48.8 kB 🔴 +48.8 kB 🔴 +9.53 kB 🔴 +8.19 kB
assets/Load3DControls-5lWBe0lO.js (new) 46.1 kB 🔴 +46.1 kB 🔴 +7.51 kB 🔴 +6.54 kB
assets/Load3DControls-Bkkuuk65.js (removed) 46.1 kB 🟢 -46.1 kB 🟢 -7.51 kB 🟢 -6.54 kB
assets/WidgetPainter-D4ABzoIi.js (removed) 34 kB 🟢 -34 kB 🟢 -8.3 kB 🟢 -7.36 kB
assets/WidgetPainter-DES84kFI.js (new) 34 kB 🔴 +34 kB 🔴 +8.3 kB 🔴 +7.34 kB
assets/WorkspacePanelContent-CH05b72t.js (removed) 32.8 kB 🟢 -32.8 kB 🟢 -7.01 kB 🟢 -6.19 kB
assets/WorkspacePanelContent-urJdl-qO.js (new) 32.8 kB 🔴 +32.8 kB 🔴 +7.01 kB 🔴 +6.19 kB
assets/Load3dViewerContent-DyHXxCNB.js (new) 28 kB 🔴 +28 kB 🔴 +5.85 kB 🔴 +5.07 kB
assets/Load3dViewerContent-HBI0j6WW.js (removed) 28 kB 🟢 -28 kB 🟢 -5.85 kB 🟢 -5.07 kB
assets/SubscriptionRequiredDialogContent-CbjIbp3P.js (removed) 27.5 kB 🟢 -27.5 kB 🟢 -6.98 kB 🟢 -6.16 kB
assets/SubscriptionRequiredDialogContent-GjLDdlfG.js (new) 27.5 kB 🔴 +27.5 kB 🔴 +6.98 kB 🔴 +6.16 kB
assets/WidgetImageCrop-CZ7cyLds.js (new) 24.3 kB 🔴 +24.3 kB 🔴 +6.2 kB 🔴 +5.46 kB
assets/WidgetImageCrop-XtuopTqj.js (removed) 24.3 kB 🟢 -24.3 kB 🟢 -6.2 kB 🟢 -5.45 kB
assets/SubscriptionPanelContentWorkspace-DE7a82o_.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +5.17 kB 🔴 +4.57 kB
assets/SubscriptionPanelContentWorkspace-DQduurwR.js (removed) 22.2 kB 🟢 -22.2 kB 🟢 -5.17 kB 🟢 -4.55 kB
assets/SignInContent-CxQPe8sS.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +5.37 kB 🔴 +4.69 kB
assets/SignInContent-DW4Y3iJW.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -5.38 kB 🟢 -4.69 kB
assets/CurrentUserPopoverWorkspace-CxHx7UIP.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -4.92 kB 🟢 -4.39 kB
assets/CurrentUserPopoverWorkspace-DSoiemin.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +4.91 kB 🔴 +4.39 kB
assets/WidgetInputNumber-B6IqRz1I.js (new) 19.1 kB 🔴 +19.1 kB 🔴 +4.84 kB 🔴 +4.3 kB
assets/WidgetInputNumber-CLkHenpu.js (removed) 19.1 kB 🟢 -19.1 kB 🟢 -4.84 kB 🟢 -4.29 kB
assets/Load3D-3ESDDraf.js (removed) 18.5 kB 🟢 -18.5 kB 🟢 -4.39 kB 🟢 -3.84 kB
assets/Load3D-BlYVZAln.js (new) 18.5 kB 🔴 +18.5 kB 🔴 +4.4 kB 🔴 +3.83 kB
assets/WidgetRecordAudio-CjWB8bO6.js (new) 17.4 kB 🔴 +17.4 kB 🔴 +5.02 kB 🔴 +4.49 kB
assets/WidgetRecordAudio-p-BQAZcP.js (removed) 17.4 kB 🟢 -17.4 kB 🟢 -5.02 kB 🟢 -4.49 kB
assets/WidgetRange-BQEnMhrW.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +4.61 kB 🔴 +4.13 kB
assets/WidgetRange-DljPdG26.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -4.62 kB 🟢 -4.13 kB
assets/load3d-B4jHYMRX.js (new) 15.8 kB 🔴 +15.8 kB 🔴 +4.6 kB 🔴 +3.98 kB
assets/load3d-BywPwSHX.js (removed) 15.8 kB 🟢 -15.8 kB 🟢 -4.6 kB 🟢 -3.97 kB
assets/WaveAudioPlayer-Ds7QuCE7.js (new) 13.4 kB 🔴 +13.4 kB 🔴 +3.69 kB 🔴 +3.23 kB
assets/WaveAudioPlayer-Dyfa_IPI.js (removed) 13.4 kB 🟢 -13.4 kB 🟢 -3.69 kB 🟢 -3.23 kB
assets/WidgetCurve-cXJaYxgF.js (new) 12.2 kB 🔴 +12.2 kB 🔴 +3.93 kB 🔴 +3.56 kB
assets/WidgetCurve-DsSrVHKY.js (removed) 12.2 kB 🟢 -12.2 kB 🟢 -3.94 kB 🟢 -3.57 kB
assets/TeamWorkspacesDialogContent-DCsdPoMD.js (removed) 11.3 kB 🟢 -11.3 kB 🟢 -3.42 kB 🟢 -3.05 kB
assets/TeamWorkspacesDialogContent-DiKQxz8D.js (new) 11.3 kB 🔴 +11.3 kB 🔴 +3.42 kB 🔴 +3.04 kB
assets/nodeTemplates-BlnwPdql.js (new) 9.84 kB 🔴 +9.84 kB 🔴 +3.48 kB 🔴 +3.06 kB
assets/nodeTemplates-O4C4ZkNl.js (removed) 9.84 kB 🟢 -9.84 kB 🟢 -3.48 kB 🟢 -3.07 kB
assets/NightlySurveyController-C_pN2pGA.js (removed) 9.02 kB 🟢 -9.02 kB 🟢 -3.16 kB 🟢 -2.79 kB
assets/NightlySurveyController-CQmk29aO.js (new) 9.02 kB 🔴 +9.02 kB 🔴 +3.16 kB 🔴 +2.79 kB
assets/Load3DConfiguration-BwuGnEVT.js (removed) 8.03 kB 🟢 -8.03 kB 🟢 -2.37 kB 🟢 -2.06 kB
assets/Load3DConfiguration-VlWf1R6_.js (new) 8.03 kB 🔴 +8.03 kB 🔴 +2.37 kB 🔴 +2.07 kB
assets/InviteMemberDialogContent-Cc8IkNfB.js (removed) 7.94 kB 🟢 -7.94 kB 🟢 -2.53 kB 🟢 -2.21 kB
assets/InviteMemberDialogContent-D-tAm5AN.js (new) 7.94 kB 🔴 +7.94 kB 🔴 +2.53 kB 🔴 +2.21 kB
assets/onboardingCloudRoutes-BqALpF-G.js (new) 6.59 kB 🔴 +6.59 kB 🔴 +2.06 kB 🔴 +1.76 kB
assets/onboardingCloudRoutes-CG39DpxY.js (removed) 6.59 kB 🟢 -6.59 kB 🟢 -2.06 kB 🟢 -1.77 kB
assets/CreateWorkspaceDialogContent-6I_pcfTe.js (removed) 6.15 kB 🟢 -6.15 kB 🟢 -2.24 kB 🟢 -1.95 kB
assets/CreateWorkspaceDialogContent-B6hf7Wx5.js (new) 6.15 kB 🔴 +6.15 kB 🔴 +2.24 kB 🔴 +1.94 kB
assets/WidgetWithControl-Ctk0gQhz.js (removed) 6.05 kB 🟢 -6.05 kB 🟢 -2.42 kB 🟢 -2.15 kB
assets/WidgetWithControl-CzBY_c3Z.js (new) 6.05 kB 🔴 +6.05 kB 🔴 +2.42 kB 🔴 +2.17 kB
assets/FreeTierDialogContent-CTY0CP2D.js (removed) 6.01 kB 🟢 -6.01 kB 🟢 -2.14 kB 🟢 -1.9 kB
assets/FreeTierDialogContent-DEenBXrn.js (new) 6.01 kB 🔴 +6.01 kB 🔴 +2.14 kB 🔴 +1.88 kB
assets/EditWorkspaceDialogContent-DtxlH_-o.js (removed) 5.95 kB 🟢 -5.95 kB 🟢 -2.2 kB 🟢 -1.92 kB
assets/EditWorkspaceDialogContent-DZ7qlE4f.js (new) 5.95 kB 🔴 +5.95 kB 🔴 +2.2 kB 🔴 +1.93 kB
assets/WidgetTextarea-CQc9ni-G.js (new) 5.76 kB 🔴 +5.76 kB 🔴 +2.27 kB 🔴 +2.01 kB
assets/WidgetTextarea-DAZXNJvB.js (removed) 5.76 kB 🟢 -5.76 kB 🟢 -2.27 kB 🟢 -2.01 kB
assets/Preview3d-CffGJYjd.js (new) 5.73 kB 🔴 +5.73 kB 🔴 +1.93 kB 🔴 +1.69 kB
assets/Preview3d-DeSyWlio.js (removed) 5.73 kB 🟢 -5.73 kB 🟢 -1.93 kB 🟢 -1.68 kB
assets/ValueControlPopover-BBXE5X3Y.js (new) 5.53 kB 🔴 +5.53 kB 🔴 +2.02 kB 🔴 +1.81 kB
assets/ValueControlPopover-DLbHiMBz.js (removed) 5.53 kB 🟢 -5.53 kB 🟢 -2.02 kB 🟢 -1.81 kB
assets/CancelSubscriptionDialogContent-EM84OOsN.js (removed) 5.49 kB 🟢 -5.49 kB 🟢 -2.06 kB 🟢 -1.81 kB
assets/CancelSubscriptionDialogContent-Rp0UpadI.js (new) 5.49 kB 🔴 +5.49 kB 🔴 +2.06 kB 🔴 +1.81 kB
assets/DeleteWorkspaceDialogContent-nh6wXft_.js (removed) 4.85 kB 🟢 -4.85 kB 🟢 -1.88 kB 🟢 -1.63 kB
assets/DeleteWorkspaceDialogContent-suEt1IAE.js (new) 4.85 kB 🔴 +4.85 kB 🔴 +1.88 kB 🔴 +1.64 kB
assets/LeaveWorkspaceDialogContent-BKDSEMWt.js (removed) 4.68 kB 🟢 -4.68 kB 🟢 -1.83 kB 🟢 -1.59 kB
assets/LeaveWorkspaceDialogContent-z83FMPPU.js (new) 4.68 kB 🔴 +4.68 kB 🔴 +1.83 kB 🔴 +1.58 kB
assets/RemoveMemberDialogContent-CPJY7n96.js (new) 4.66 kB 🔴 +4.66 kB 🔴 +1.78 kB 🔴 +1.54 kB
assets/RemoveMemberDialogContent-CQeqzUB-.js (removed) 4.66 kB 🟢 -4.66 kB 🟢 -1.78 kB 🟢 -1.55 kB
assets/RevokeInviteDialogContent-C1M4EM8R.js (removed) 4.57 kB 🟢 -4.57 kB 🟢 -1.79 kB 🟢 -1.57 kB
assets/RevokeInviteDialogContent-DMt8ZLt_.js (new) 4.57 kB 🔴 +4.57 kB 🔴 +1.79 kB 🔴 +1.57 kB
assets/InviteMemberUpsellDialogContent-C3GYvSTD.js (removed) 4.47 kB 🟢 -4.47 kB 🟢 -1.65 kB 🟢 -1.46 kB
assets/InviteMemberUpsellDialogContent-DeWCThTj.js (new) 4.47 kB 🔴 +4.47 kB 🔴 +1.65 kB 🔴 +1.46 kB
assets/tierBenefits-Bg-7ddKM.js (removed) 4.45 kB 🟢 -4.45 kB 🟢 -1.57 kB 🟢 -1.36 kB
assets/tierBenefits-DG9kLIzA.js (new) 4.45 kB 🔴 +4.45 kB 🔴 +1.57 kB 🔴 +1.36 kB
assets/cloudSessionCookie-Bwe-4tvs.js (removed) 4.31 kB 🟢 -4.31 kB 🟢 -1.58 kB 🟢 -1.38 kB
assets/cloudSessionCookie-DdkOGeBK.js (new) 4.31 kB 🔴 +4.31 kB 🔴 +1.58 kB 🔴 +1.37 kB
assets/Media3DTop-C5hMxBMO.js (new) 4.04 kB 🔴 +4.04 kB 🔴 +1.72 kB 🔴 +1.52 kB
assets/Media3DTop-DXmvwfdO.js (removed) 4.04 kB 🟢 -4.04 kB 🟢 -1.71 kB 🟢 -1.51 kB
assets/saveMesh-Ccxk7eX8.js (removed) 4.03 kB 🟢 -4.03 kB 🟢 -1.76 kB 🟢 -1.56 kB
assets/saveMesh-CMue1DZJ.js (new) 4.03 kB 🔴 +4.03 kB 🔴 +1.77 kB 🔴 +1.56 kB
assets/GlobalToast-D6yA_MgL.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.26 kB 🔴 +1.08 kB
assets/GlobalToast-pOILDK9P.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.26 kB 🟢 -1.1 kB
assets/CloudRunButtonWrapper-BexBBusO.js (new) 2.23 kB 🔴 +2.23 kB 🔴 +1.02 kB 🔴 +909 B
assets/CloudRunButtonWrapper-CslB40Z5.js (removed) 2.23 kB 🟢 -2.23 kB 🟢 -1.02 kB 🟢 -906 B
assets/SubscribeToRun-BbiXOlAh.js (removed) 2.13 kB 🟢 -2.13 kB 🟢 -981 B 🟢 -863 B
assets/SubscribeToRun-CFUiCy9v.js (new) 2.13 kB 🔴 +2.13 kB 🔴 +982 B 🔴 +876 B
assets/MediaAudioTop-4p12Ps6f.js (removed) 2.08 kB 🟢 -2.08 kB 🟢 -1.01 kB 🟢 -864 B
assets/MediaAudioTop-DQ2pYAeA.js (new) 2.08 kB 🔴 +2.08 kB 🔴 +1.01 kB 🔴 +869 B
assets/cloudBadges-C-sb02J7.js (new) 1.96 kB 🔴 +1.96 kB 🔴 +980 B 🔴 +848 B
assets/cloudBadges-DfSaqG38.js (removed) 1.96 kB 🟢 -1.96 kB 🟢 -980 B 🟢 -851 B
assets/cloudSubscription-BkedxXe2.js (removed) 1.88 kB 🟢 -1.88 kB 🟢 -901 B 🟢 -779 B
assets/cloudSubscription-D6EEUv4r.js (new) 1.88 kB 🔴 +1.88 kB 🔴 +903 B 🔴 +779 B
assets/graphHasMissingNodes-B29iFhl_.js (new) 1.83 kB 🔴 +1.83 kB 🔴 +860 B 🔴 +760 B
assets/graphHasMissingNodes-W1LVo__i.js (removed) 1.83 kB 🟢 -1.83 kB 🟢 -861 B 🟢 -756 B
assets/Load3D-3uq2PE9S.js (new) 1.58 kB 🔴 +1.58 kB 🔴 +716 B 🔴 +632 B
assets/Load3D-CMtUKabd.js (removed) 1.58 kB 🟢 -1.58 kB 🟢 -715 B 🟢 -636 B
assets/previousFullPath-BInYU48z.js (removed) 1.53 kB 🟢 -1.53 kB 🟢 -692 B 🟢 -596 B
assets/previousFullPath-C5IV2kfd.js (new) 1.53 kB 🔴 +1.53 kB 🔴 +695 B 🔴 +598 B
assets/nightlyBadges-EJSj08qG.js (removed) 1.49 kB 🟢 -1.49 kB 🟢 -750 B 🟢 -694 B
assets/nightlyBadges-U912emDi.js (new) 1.49 kB 🔴 +1.49 kB 🔴 +747 B 🔴 +686 B
assets/Load3dViewerContent-CVD-EoP6.js (new) 1.46 kB 🔴 +1.46 kB 🔴 +667 B 🔴 +607 B
assets/Load3dViewerContent-DM7Vi88O.js (removed) 1.46 kB 🟢 -1.46 kB 🟢 -669 B 🟢 -603 B
assets/SubscriptionPanelContentWorkspace-08PjnN9E.js (removed) 1.35 kB 🟢 -1.35 kB 🟢 -619 B 🟢 -537 B
assets/SubscriptionPanelContentWorkspace-CTprl9wx.js (new) 1.35 kB 🔴 +1.35 kB 🔴 +621 B 🔴 +539 B
assets/WidgetLegacy-BGc-LNSs.js (new) 1.18 kB 🔴 +1.18 kB 🔴 +568 B 🔴 +495 B
assets/WidgetLegacy-CDB4eLBf.js (removed) 1.18 kB 🟢 -1.18 kB 🟢 -567 B 🟢 -495 B
assets/changeTracker-BngRGlV5.js (new) 1.15 kB 🔴 +1.15 kB 🔴 +558 B 🔴 +488 B
assets/changeTracker-JA4fy4Z8.js (removed) 1.15 kB 🟢 -1.15 kB 🟢 -557 B 🟢 -488 B

Status: 57 added / 57 removed / 78 unchanged

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 68.4 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 50.3 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 46.3 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 54.5 MB heap
large-graph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 60.4 MB heap
large-graph-pan: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.5 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.2 MB heap
minimap-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 61.2 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 56.6 MB heap
subgraph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.6 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 47.0 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 71.2 MB heap
vue-large-graph-idle: · 56.3 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 164.6 MB heap
vue-large-graph-pan: · 58.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 153.6 MB heap
workflow-execution: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.0 MB heap

⚠️ 2 regressions detected

Metric Baseline PR (median) Δ Sig
canvas-mouse-sweep: layout duration 3ms 4ms +18% ⚠️ z=2.1
workflow-execution: DOM nodes 157 181 +15% ⚠️ z=2.8
All metrics
Metric Baseline PR (median) Δ Sig
canvas-idle: avg frame time 17ms 17ms +0% z=-0.1
canvas-idle: p95 frame time 17ms 17ms -1%
canvas-idle: layout duration 0ms 0ms +0%
canvas-idle: style recalc duration 8ms 8ms +7% z=-2.8
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 8 9 +13% z=-3.8
canvas-idle: task duration 391ms 337ms -14% z=-1.9
canvas-idle: script duration 22ms 16ms -29% z=-4.3
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 68.2 MB 68.4 MB +0%
canvas-idle: DOM nodes 16 17 +6% z=-4.4
canvas-idle: event listeners 4 4 +0% z=-1.6
canvas-mouse-sweep: avg frame time 17ms 17ms +0% z=-0.4
canvas-mouse-sweep: p95 frame time 17ms 17ms -1%
canvas-mouse-sweep: layout duration 3ms 4ms +18% ⚠️ z=2.1
canvas-mouse-sweep: style recalc duration 39ms 39ms -1% z=-1.2
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 74 75 +1% z=-1.6
canvas-mouse-sweep: task duration 817ms 805ms -1% z=-1.0
canvas-mouse-sweep: script duration 141ms 126ms -11% z=-1.5
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 49.9 MB 50.3 MB +1%
canvas-mouse-sweep: DOM nodes -266 -263 -1% z=-125.8
canvas-mouse-sweep: event listeners -131 -129 -2% z=-33.0
canvas-zoom-sweep: avg frame time 17ms 17ms +0% z=0.5
canvas-zoom-sweep: p95 frame time 17ms 17ms -1%
canvas-zoom-sweep: layout duration 1ms 1ms -7% z=-0.4
canvas-zoom-sweep: style recalc duration 19ms 17ms -7% z=-1.2
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 31 32 +3% z=1.6
canvas-zoom-sweep: task duration 335ms 288ms -14% z=-1.7
canvas-zoom-sweep: script duration 25ms 18ms -26% z=-3.0
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 46.5 MB 46.3 MB -0%
canvas-zoom-sweep: DOM nodes 76 77 +1% z=-2.8
canvas-zoom-sweep: event listeners 19 19 +0% z=-0.9
dom-widget-clipping: avg frame time 17ms 17ms +0% z=0.1
dom-widget-clipping: p95 frame time 17ms 17ms +0%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 7ms 8ms +13% z=-2.2
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 10 11 +10% z=-4.2
dom-widget-clipping: task duration 350ms 318ms -9% z=-2.9
dom-widget-clipping: script duration 62ms 57ms -8% z=-3.4
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 54.8 MB 54.5 MB -1%
dom-widget-clipping: DOM nodes 16 18 +13% z=-2.9
dom-widget-clipping: event listeners 0 0 +0% variance too high
large-graph-idle: avg frame time 17ms 17ms +0% z=-0.2
large-graph-idle: p95 frame time 17ms 17ms -1%
large-graph-idle: layout duration 0ms 0ms +0%
large-graph-idle: style recalc duration 9ms 10ms +1% z=-2.6
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 9 10 +11% z=-5.1
large-graph-idle: task duration 637ms 527ms -17% z=-0.3
large-graph-idle: script duration 117ms 93ms -20% z=-0.9
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 65.4 MB 60.4 MB -8%
large-graph-idle: DOM nodes -262 -261 -0% z=-316.1
large-graph-idle: event listeners -127 -127 +0% z=-25.1
large-graph-pan: avg frame time 17ms 17ms +0% z=-0.8
large-graph-pan: p95 frame time 17ms 17ms +0%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 18ms 17ms -5% z=-0.4
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 68 68 +0% z=-2.4
large-graph-pan: task duration 1183ms 1055ms -11% z=-0.6
large-graph-pan: script duration 414ms 384ms -7% z=-1.2
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 51.3 MB 66.5 MB +30%
large-graph-pan: DOM nodes -265 -264 -0% z=-171.5
large-graph-pan: event listeners -127 -127 +0% z=-159.3
large-graph-zoom: avg frame time 17ms 17ms +0%
large-graph-zoom: p95 frame time 17ms 17ms -1%
large-graph-zoom: layout duration 8ms 7ms -12%
large-graph-zoom: style recalc duration 20ms 17ms -14%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 65 65 +0%
large-graph-zoom: task duration 1437ms 1299ms -10%
large-graph-zoom: script duration 533ms 494ms -7%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 66.9 MB 67.2 MB +0%
large-graph-zoom: DOM nodes -269 -267 -1%
large-graph-zoom: event listeners -123 -123 +0%
minimap-idle: avg frame time 17ms 17ms +0% z=0.1
minimap-idle: p95 frame time 17ms 17ms +0%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 9ms 9ms +4% z=-0.8
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 8 9 +13% z=-0.8
minimap-idle: task duration 607ms 520ms -14% z=-0.1
minimap-idle: script duration 110ms 89ms -19% z=-0.9
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 64.7 MB 61.2 MB -5%
minimap-idle: DOM nodes -265 -263 -1% z=-206.3
minimap-idle: event listeners -125 -127 +2% z=-199.3
subgraph-dom-widget-clipping: avg frame time 17ms 17ms +0% z=1.2
subgraph-dom-widget-clipping: p95 frame time 17ms 17ms +1%
subgraph-dom-widget-clipping: layout duration 0ms 0ms +0%
subgraph-dom-widget-clipping: style recalc duration 11ms 11ms -4% z=-2.1
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 46 47 +2% z=-1.6
subgraph-dom-widget-clipping: task duration 367ms 346ms -6% z=-1.7
subgraph-dom-widget-clipping: script duration 121ms 118ms -2% z=-1.6
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 54.9 MB 56.6 MB +3%
subgraph-dom-widget-clipping: DOM nodes 18 20 +11% z=-1.9
subgraph-dom-widget-clipping: event listeners 6 6 +0% z=-1.7
subgraph-idle: avg frame time 17ms 17ms +0% z=0.4
subgraph-idle: p95 frame time 17ms 17ms +1%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 8ms 8ms -3% z=-2.9
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 8 9 +13% z=-2.9
subgraph-idle: task duration 411ms 322ms -22% z=-1.5
subgraph-idle: script duration 21ms 14ms -34% z=-2.5
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 68.0 MB 67.6 MB -0%
subgraph-idle: DOM nodes 16 18 +13% z=-2.5
subgraph-idle: event listeners 4 4 +0% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms +0% z=0.4
subgraph-mouse-sweep: p95 frame time 17ms 17ms +0%
subgraph-mouse-sweep: layout duration 4ms 4ms -6% z=-1.5
subgraph-mouse-sweep: style recalc duration 38ms 35ms -6% z=-2.2
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 76 76 +0% z=-2.1
subgraph-mouse-sweep: task duration 746ms 673ms -10% z=-1.3
subgraph-mouse-sweep: script duration 99ms 89ms -10% z=-1.8
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 41.9 MB 47.0 MB +12%
subgraph-mouse-sweep: DOM nodes -265 -262 -1% z=-147.2
subgraph-mouse-sweep: event listeners -131 -129 -2% variance too high
viewport-pan-sweep: avg frame time 17ms 17ms +0%
viewport-pan-sweep: p95 frame time 17ms 17ms -1%
viewport-pan-sweep: layout duration 0ms 0ms +0%
viewport-pan-sweep: style recalc duration 53ms 50ms -5%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 249 250 +0%
viewport-pan-sweep: task duration 4082ms 3811ms -7%
viewport-pan-sweep: script duration 1331ms 1376ms +3%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 69.3 MB 71.2 MB +3%
viewport-pan-sweep: DOM nodes -265 -260 -2%
viewport-pan-sweep: event listeners -111 -111 +0%
vue-large-graph-idle: avg frame time 17ms 18ms +3%
vue-large-graph-idle: p95 frame time 17ms 17ms +0%
vue-large-graph-idle: layout duration 0ms 0ms +0%
vue-large-graph-idle: style recalc duration 0ms 0ms +0%
vue-large-graph-idle: layout count 0 0 +0%
vue-large-graph-idle: style recalc count 0 0 +0%
vue-large-graph-idle: task duration 12487ms 12096ms -3%
vue-large-graph-idle: script duration 646ms 623ms -4%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 163.1 MB 164.6 MB +1%
vue-large-graph-idle: DOM nodes -8331 -8331 +0%
vue-large-graph-idle: event listeners -16462 -16462 +0%
vue-large-graph-pan: avg frame time 18ms 17ms -3%
vue-large-graph-pan: p95 frame time 17ms 17ms +0%
vue-large-graph-pan: layout duration 0ms 0ms +0%
vue-large-graph-pan: style recalc duration 18ms 16ms -12%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 68 65 -4%
vue-large-graph-pan: task duration 14628ms 14093ms -4%
vue-large-graph-pan: script duration 923ms 861ms -7%
vue-large-graph-pan: TBT 42ms 0ms -100%
vue-large-graph-pan: heap used 146.8 MB 153.6 MB +5%
vue-large-graph-pan: DOM nodes -8331 -8331 +0%
vue-large-graph-pan: event listeners -16488 -16462 -0%
workflow-execution: avg frame time 17ms 17ms +0% z=0.6
workflow-execution: p95 frame time 17ms 17ms -0%
workflow-execution: layout duration 1ms 1ms +0% z=-0.7
workflow-execution: style recalc duration 23ms 23ms -1% z=-0.6
workflow-execution: layout count 5 5 +0% z=0.1
workflow-execution: style recalc count 16 21 +31% z=1.5
workflow-execution: task duration 130ms 124ms -5% z=0.1
workflow-execution: script duration 26ms 27ms +1% z=-0.8
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 53.6 MB 53.0 MB -1%
workflow-execution: DOM nodes 157 181 +15% ⚠️ z=2.8
workflow-execution: event listeners 69 69 +0% z=3.9
Historical variance (last 15 runs)
Metric μ σ CV
canvas-idle: avg frame time 17ms 0ms 0.0%
canvas-idle: layout duration 0ms 0ms 0.0%
canvas-idle: style recalc duration 11ms 1ms 8.2%
canvas-idle: layout count 0 0 0.0%
canvas-idle: style recalc count 11 1 5.0%
canvas-idle: task duration 395ms 31ms 7.9%
canvas-idle: script duration 25ms 2ms 8.8%
canvas-idle: TBT 0ms 0ms 0.0%
canvas-idle: DOM nodes 23 1 5.6%
canvas-idle: event listeners 12 5 40.9%
canvas-mouse-sweep: avg frame time 17ms 0ms 0.0%
canvas-mouse-sweep: layout duration 4ms 0ms 5.4%
canvas-mouse-sweep: style recalc duration 43ms 3ms 7.4%
canvas-mouse-sweep: layout count 12 0 0.0%
canvas-mouse-sweep: style recalc count 79 2 3.0%
canvas-mouse-sweep: task duration 865ms 58ms 6.7%
canvas-mouse-sweep: script duration 136ms 6ms 4.8%
canvas-mouse-sweep: TBT 0ms 0ms 0.0%
canvas-mouse-sweep: DOM nodes 62 3 4.2%
canvas-mouse-sweep: event listeners 8 4 49.4%
canvas-zoom-sweep: avg frame time 17ms 0ms 0.0%
canvas-zoom-sweep: layout duration 1ms 0ms 7.0%
canvas-zoom-sweep: style recalc duration 19ms 2ms 8.0%
canvas-zoom-sweep: layout count 6 0 0.0%
canvas-zoom-sweep: style recalc count 31 0 1.5%
canvas-zoom-sweep: task duration 327ms 23ms 7.1%
canvas-zoom-sweep: script duration 27ms 3ms 11.1%
canvas-zoom-sweep: TBT 0ms 0ms 0.0%
canvas-zoom-sweep: DOM nodes 79 1 1.0%
canvas-zoom-sweep: event listeners 24 5 21.8%
dom-widget-clipping: avg frame time 17ms 0ms 0.0%
dom-widget-clipping: layout duration 0ms 0ms 0.0%
dom-widget-clipping: style recalc duration 10ms 1ms 8.0%
dom-widget-clipping: layout count 0 0 0.0%
dom-widget-clipping: style recalc count 13 0 3.8%
dom-widget-clipping: task duration 365ms 16ms 4.5%
dom-widget-clipping: script duration 68ms 3ms 4.8%
dom-widget-clipping: TBT 0ms 0ms 0.0%
dom-widget-clipping: DOM nodes 22 1 6.4%
dom-widget-clipping: event listeners 8 6 81.2%
large-graph-idle: avg frame time 17ms 0ms 0.0%
large-graph-idle: layout duration 0ms 0ms 0.0%
large-graph-idle: style recalc duration 12ms 1ms 8.6%
large-graph-idle: layout count 0 0 0.0%
large-graph-idle: style recalc count 12 0 2.7%
large-graph-idle: task duration 542ms 54ms 10.0%
large-graph-idle: script duration 102ms 11ms 10.3%
large-graph-idle: TBT 0ms 0ms 0.0%
large-graph-idle: DOM nodes 25 1 3.7%
large-graph-idle: event listeners 26 6 23.2%
large-graph-pan: avg frame time 17ms 0ms 0.0%
large-graph-pan: layout duration 0ms 0ms 0.0%
large-graph-pan: style recalc duration 17ms 1ms 4.6%
large-graph-pan: layout count 0 0 0.0%
large-graph-pan: style recalc count 70 1 0.9%
large-graph-pan: task duration 1082ms 43ms 4.0%
large-graph-pan: script duration 408ms 20ms 4.8%
large-graph-pan: TBT 0ms 0ms 0.0%
large-graph-pan: DOM nodes 19 2 8.7%
large-graph-pan: event listeners 5 1 16.8%
minimap-idle: avg frame time 17ms 0ms 0.0%
minimap-idle: layout duration 0ms 0ms 0.0%
minimap-idle: style recalc duration 10ms 1ms 8.6%
minimap-idle: layout count 0 0 0.0%
minimap-idle: style recalc count 10 1 7.1%
minimap-idle: task duration 527ms 47ms 9.0%
minimap-idle: script duration 98ms 10ms 10.1%
minimap-idle: TBT 0ms 0ms 0.0%
minimap-idle: DOM nodes 19 1 7.1%
minimap-idle: event listeners 5 1 14.4%
subgraph-dom-widget-clipping: avg frame time 17ms 0ms 0.0%
subgraph-dom-widget-clipping: layout duration 0ms 0ms 0.0%
subgraph-dom-widget-clipping: style recalc duration 13ms 1ms 7.4%
subgraph-dom-widget-clipping: layout count 0 0 0.0%
subgraph-dom-widget-clipping: style recalc count 48 1 1.2%
subgraph-dom-widget-clipping: task duration 378ms 18ms 4.9%
subgraph-dom-widget-clipping: script duration 128ms 6ms 4.9%
subgraph-dom-widget-clipping: TBT 0ms 0ms 0.0%
subgraph-dom-widget-clipping: DOM nodes 22 1 5.0%
subgraph-dom-widget-clipping: event listeners 16 6 36.0%
subgraph-idle: avg frame time 17ms 0ms 0.0%
subgraph-idle: layout duration 0ms 0ms 0.0%
subgraph-idle: style recalc duration 10ms 1ms 7.5%
subgraph-idle: layout count 0 0 0.0%
subgraph-idle: style recalc count 11 1 6.0%
subgraph-idle: task duration 370ms 31ms 8.5%
subgraph-idle: script duration 20ms 3ms 13.2%
subgraph-idle: TBT 0ms 0ms 0.0%
subgraph-idle: DOM nodes 22 1 6.9%
subgraph-idle: event listeners 10 7 64.5%
subgraph-mouse-sweep: avg frame time 17ms 0ms 0.0%
subgraph-mouse-sweep: layout duration 5ms 0ms 6.8%
subgraph-mouse-sweep: style recalc duration 42ms 3ms 7.8%
subgraph-mouse-sweep: layout count 16 0 0.0%
subgraph-mouse-sweep: style recalc count 80 2 2.4%
subgraph-mouse-sweep: task duration 766ms 69ms 9.0%
subgraph-mouse-sweep: script duration 101ms 7ms 6.5%
subgraph-mouse-sweep: TBT 0ms 0ms 0.0%
subgraph-mouse-sweep: DOM nodes 67 2 3.3%
subgraph-mouse-sweep: event listeners 8 4 52.6%
workflow-execution: avg frame time 17ms 0ms 0.0%
workflow-execution: layout duration 2ms 0ms 9.4%
workflow-execution: style recalc duration 24ms 2ms 9.1%
workflow-execution: layout count 5 1 11.0%
workflow-execution: style recalc count 18 2 11.5%
workflow-execution: task duration 123ms 11ms 8.8%
workflow-execution: script duration 29ms 3ms 10.2%
workflow-execution: TBT 0ms 0ms 0.0%
workflow-execution: DOM nodes 161 7 4.4%
workflow-execution: event listeners 52 4 8.4%
Trend (last 15 commits on main)
Metric Trend Dir Latest
canvas-idle: avg frame time ▆▃▆▁▆▃▆█▆▆▄▃▃▄▃ ➡️ 17ms
canvas-idle: p95 frame time ➡️ NaNms
canvas-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: style recalc duration ▇▇▆▆▃█▄▃▄▃▇▄▁▆▇ ➡️ 11ms
canvas-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
canvas-idle: style recalc count █▃▅▂▅▆▃▁▂▁▂▅▆▅▆ ➡️ 12
canvas-idle: task duration ▃▃▃▆▂▃▃▅▆▂█▃▁▃▃ ➡️ 391ms
canvas-idle: script duration ▄▃▅▇▂▅▃▆▇▅█▄▁▅▆ ➡️ 27ms
canvas-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: heap used ➡️ NaN MB
canvas-idle: DOM nodes █▇▆▅▃▇▃▁▂▂▅▆▆▆▇ ➡️ 24
canvas-idle: event listeners ▅█▅▄▁▅▁▁▁▄▅▅▁▅▄ 📉 11
canvas-mouse-sweep: avg frame time ▆█▆▃▁▃▁▆▆▁▃▆▆▃▃ ➡️ 17ms
canvas-mouse-sweep: p95 frame time ➡️ NaNms
canvas-mouse-sweep: layout duration ▁▃▂▄▁▂▁▃▆▂█▇▆▄▃ ➡️ 4ms
canvas-mouse-sweep: style recalc duration ▄▄▂▄▁▂▃▃▅▄█▆▂▄▄ ➡️ 43ms
canvas-mouse-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 12
canvas-mouse-sweep: style recalc count █▅▄▃▂▂▁▄▄▅▆▅▂▇▄ ➡️ 79
canvas-mouse-sweep: task duration █▆▄▂▂▃▂▄▄▅█▆▁▆▄ ➡️ 868ms
canvas-mouse-sweep: script duration ▄▅▄▆▄▆▆▆▅▅█▆▁▅▆ ➡️ 139ms
canvas-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-mouse-sweep: heap used ➡️ NaN MB
canvas-mouse-sweep: DOM nodes █▅▃▃▁▂▂▃▂▄▆▅▃▅▅ ➡️ 64
canvas-mouse-sweep: event listeners █▁▁▁▁▁▇▁▁▁██▇▁█ 📈 13
canvas-zoom-sweep: avg frame time ▅▅█▄▅▁▁▁▅▁▁▅▄▅▁ ➡️ 17ms
canvas-zoom-sweep: p95 frame time ➡️ NaNms
canvas-zoom-sweep: layout duration ▆▅▅▄▁▁█▅▃▅▇▆▁▂▆ ➡️ 1ms
canvas-zoom-sweep: style recalc duration ▆▅▄▆▅▃█▆▇▅▇▄▁▃▅ ➡️ 20ms
canvas-zoom-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 6
canvas-zoom-sweep: style recalc count ▁▁▃▄▆▃▆█▄▄▆▁▆▁▆ ➡️ 32
canvas-zoom-sweep: task duration ▄▂▁▇▂▂▄▅▆▃█▄▁▁▅ ➡️ 338ms
canvas-zoom-sweep: script duration ▃▃▂▇▂▂▅▇▆▅█▄▁▂▆ ➡️ 30ms
canvas-zoom-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-zoom-sweep: heap used ➡️ NaN MB
canvas-zoom-sweep: DOM nodes ▄▃▁▅█▁▃▆▄▅▅▃▃▄▃ ➡️ 79
canvas-zoom-sweep: event listeners ▁▁▂▅█▂▁▅▁▅▅▄▁▅▁ ➡️ 19
dom-widget-clipping: avg frame time ▂▄▅▅▂▄█▇▅▇▇▅▅▁▇ ➡️ 17ms
dom-widget-clipping: p95 frame time ➡️ NaNms
dom-widget-clipping: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: style recalc duration ▆▆▂▆▄▃██▄▁▆▇▆▃▅ ➡️ 10ms
dom-widget-clipping: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
dom-widget-clipping: style recalc count ▇█▅█▅▄█▇▇▁▇▄▇▂▅ ➡️ 13
dom-widget-clipping: task duration ▃▃▁▅▄▃▅▆▅▂▇█▁▅▅ ➡️ 371ms
dom-widget-clipping: script duration ▅▄▄▆▆▅▇▇▆▃█▇▁▇▇ ➡️ 71ms
dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: heap used ➡️ NaN MB
dom-widget-clipping: DOM nodes ▇▇▄▇▅▄█▇▅▁▅▄▇▃▄ ➡️ 21
dom-widget-clipping: event listeners ▅▅▅▅▁▅██▁▁▁▁█▁▁ 📉 2
large-graph-idle: avg frame time ▅▅▅▅▅▂▁▂▄▅▄▂▂▅█ ➡️ 17ms
large-graph-idle: p95 frame time ➡️ NaNms
large-graph-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: style recalc duration ▅▅▅▆▄▅▃▄▅▅▆█▁▄▆ ➡️ 13ms
large-graph-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-idle: style recalc count █▆█▃▃▁▃▆▃▆▆▃▆██ ➡️ 12
large-graph-idle: task duration ▂▃▂▆▂▃▃▇▅▃██▁▂▅ ➡️ 569ms
large-graph-idle: script duration ▄▅▄▆▄▅▅▇▆▅█▆▁▃▆ ➡️ 110ms
large-graph-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: heap used ➡️ NaN MB
large-graph-idle: DOM nodes ▆█▅▂▅▃▁▂▃▅▅▆▂▆▅ ➡️ 25
large-graph-idle: event listeners ███▇██▄▁▄▇▇█▂█▇ ➡️ 29
large-graph-pan: avg frame time ▆▃▃▆█▃▁█▆▆▆▆█▁▆ ➡️ 17ms
large-graph-pan: p95 frame time ➡️ NaNms
large-graph-pan: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: style recalc duration ▃▂▄▄▁▅▂▂▁▄▄█▃▁▂ ➡️ 17ms
large-graph-pan: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-pan: style recalc count ▆▃█▂▃▂▂▂▁▇▅▃█▆▃ ➡️ 69
large-graph-pan: task duration ▄▃▄▆▄▄▄▆▄▄█▆▁▂▅ ➡️ 1100ms
large-graph-pan: script duration ▅▄▅▆▆▅▄▆▄▅█▄▁▄▅ ➡️ 413ms
large-graph-pan: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: heap used ➡️ NaN MB
large-graph-pan: DOM nodes ▅▃▆▂▄▁▃▁▁▅▁▂█▅▂ ➡️ 18
large-graph-pan: event listeners █▆█▁▁▆▁▁▃▆▁▃██▃ ➡️ 5
minimap-idle: avg frame time ▃▆▆▃█▁█▆▆▃▃▆█▆█ ➡️ 17ms
minimap-idle: p95 frame time ➡️ NaNms
minimap-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: style recalc duration ▄█▁█▅▅█▅▅▃▅▁▁▄▆ ➡️ 10ms
minimap-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
minimap-idle: style recalc count ▃▅▂▄█▃▆▁▂▅▂▁▅▆▃ ➡️ 9
minimap-idle: task duration ▃▄▁▅▁▃▄▅▇▃█▅▁▁▅ ➡️ 547ms
minimap-idle: script duration ▄▆▃▇▃▅▆▆▇▅█▅▁▃▆ ➡️ 106ms
minimap-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: heap used ➡️ NaN MB
minimap-idle: DOM nodes ▃▅▂▄█▃▆▁▂▅▂▁▅▆▃ ➡️ 19
minimap-idle: event listeners ▃▃▆▁▁▁▃▁▁▆▁▃█▆▁ ➡️ 4
subgraph-dom-widget-clipping: avg frame time ▅▄▄▄▄▄█▄▄▄▃▁▆▃▃ ➡️ 17ms
subgraph-dom-widget-clipping: p95 frame time ➡️ NaNms
subgraph-dom-widget-clipping: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: style recalc duration ▂▄▃▅▅▃▂▅▇▃▄█▁▄▆ ➡️ 14ms
subgraph-dom-widget-clipping: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-dom-widget-clipping: style recalc count ▇█▆▃▆▃▁▆█▇▃▆▇█▅ ➡️ 48
subgraph-dom-widget-clipping: task duration ▂▃▃▆▅▅▂▅█▂▆█▁▂▇ ➡️ 398ms
subgraph-dom-widget-clipping: script duration ▃▃▃▄▅▅▂▄█▂▅▇▁▂▅ ➡️ 131ms
subgraph-dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: heap used ➡️ NaN MB
subgraph-dom-widget-clipping: DOM nodes ▅▇▅▂▅▂▁▅▅▅▁▇▅█▄ ➡️ 22
subgraph-dom-widget-clipping: event listeners ▅▅▅▂▅▁▅██▁▁█▅█▅ 📈 16
subgraph-idle: avg frame time ▆▆█▁▆▃▆▆▆▃▆▁▃▆█ ➡️ 17ms
subgraph-idle: p95 frame time ➡️ NaNms
subgraph-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: style recalc duration ▁▇▃▆▂▄▂▃▃▆▆▄▃▇█ ➡️ 12ms
subgraph-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-idle: style recalc count ▃▆▃▃▂▅▁▂▁▆▃▃██▇ ➡️ 12
subgraph-idle: task duration ▁▃▁▇▁▁▃▆▅▂█▅▁▁▄ ➡️ 378ms
subgraph-idle: script duration ▁▃▂▇▁▂▃▇▆▂█▅▂▁▅ ➡️ 22ms
subgraph-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: heap used ➡️ NaN MB
subgraph-idle: DOM nodes ▃▅▃▂▁▄▁▂▁▅▃▂▇█▇ ➡️ 24
subgraph-idle: event listeners ▁▅▁▁▁▁▁▁▁▅▄▁███ 📈 21
subgraph-mouse-sweep: avg frame time ▅▄▁▃▃▄▆▄▆▃▃█▁▃▃ ➡️ 17ms
subgraph-mouse-sweep: p95 frame time ➡️ NaNms
subgraph-mouse-sweep: layout duration ▁▄▄▄▃▃▅▅▅▂█▇▂▃▆ ➡️ 5ms
subgraph-mouse-sweep: style recalc duration ▃▂▄▅▂▃▄▅█▃█▆▁▂▅ ➡️ 43ms
subgraph-mouse-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 16
subgraph-mouse-sweep: style recalc count ▅▂▅▅▁▄▃▅█▅▆▄▂▄▅ ➡️ 81
subgraph-mouse-sweep: task duration ▃▂▄▅▂▄▄▅▇▄█▆▁▃▅ ➡️ 785ms
subgraph-mouse-sweep: script duration ▄▅▄▇▅▅▆▇▆▅██▁▄▆ ➡️ 105ms
subgraph-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-mouse-sweep: heap used ➡️ NaN MB
subgraph-mouse-sweep: DOM nodes ▅▁▄▅▁▄▃▃█▅▅▄▂▅▃ ➡️ 66
subgraph-mouse-sweep: event listeners ▇▁▂▇▁▂▂▂█▇▂▂▇▇▂ 📈 5
workflow-execution: avg frame time ▆▆▆▄▆▆▃▄▁▄█▆▅▄▆ ➡️ 17ms
workflow-execution: p95 frame time ➡️ NaNms
workflow-execution: layout duration ▁▆▁▃▂▄▃▂▃▃▅█▄▂▅ ➡️ 2ms
workflow-execution: style recalc duration ▃▇▅▇▁▅▆▇█▁██▂▄▆ ➡️ 25ms
workflow-execution: layout count ▁█▂▃▂▃▃▁▃▃▄▃▂▃▂ ➡️ 5
workflow-execution: style recalc count ▃█▅▇▁▄▅▆▅▅▅▅▄▄▂ ➡️ 15
workflow-execution: task duration ▂▅▄▅▁▄▆▆▆▁▇█▁▃▃ ➡️ 120ms
workflow-execution: script duration ▄▃▄▄▃▅▄▅▆▂▇█▁▃▄ ➡️ 29ms
workflow-execution: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
workflow-execution: heap used ➡️ NaN MB
workflow-execution: DOM nodes ▂█▃▆▁▄▃▅▃█▃▃▄▃▁ ➡️ 152
workflow-execution: event listeners ▅███▁▅███▁██▅█▅ ➡️ 49
Raw data
{
  "timestamp": "2026-05-02T07:04:56.620Z",
  "gitSha": "966bef05e3b59185a73ecede42afb977dadc056e",
  "branch": "batch-dispatch/cr-11556",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2024.6809999999869,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 7.441999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 336.74899999999997,
      "heapDeltaBytes": 23038328,
      "heapUsedBytes": 71709932,
      "domNodes": 17,
      "jsHeapTotalBytes": 14680064,
      "scriptDurationMs": 16.442999999999998,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 2058.1869999999753,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.318000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 380.36899999999997,
      "heapDeltaBytes": -4692376,
      "heapUsedBytes": 43639852,
      "domNodes": -264,
      "jsHeapTotalBytes": 14807040,
      "scriptDurationMs": 15.696999999999996,
      "eventListeners": -131,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-idle",
      "durationMs": 2003.227000000038,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.325,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 329.938,
      "heapDeltaBytes": 23077236,
      "heapUsedBytes": 71751608,
      "domNodes": 20,
      "jsHeapTotalBytes": 14680064,
      "scriptDurationMs": 15.119999999999997,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1922.8559999999106,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 43.241,
      "layouts": 12,
      "layoutDurationMs": 4.031,
      "taskDurationMs": 805.141,
      "heapDeltaBytes": 18660284,
      "heapUsedBytes": 68056760,
      "domNodes": 57,
      "jsHeapTotalBytes": 15728640,
      "scriptDurationMs": 127.191,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 2001.8089999999802,
      "styleRecalcs": 78,
      "styleRecalcDurationMs": 38.908,
      "layouts": 12,
      "layoutDurationMs": 3.098,
      "taskDurationMs": 954.134,
      "heapDeltaBytes": -590780,
      "heapUsedBytes": 48049228,
      "domNodes": -263,
      "jsHeapTotalBytes": 16379904,
      "scriptDurationMs": 125.03500000000001,
      "eventListeners": -131,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1799.036000000001,
      "styleRecalcs": 73,
      "styleRecalcDurationMs": 34.985,
      "layouts": 12,
      "layoutDurationMs": 6.074,
      "taskDurationMs": 786.249,
      "heapDeltaBytes": 4065756,
      "heapUsedBytes": 52762176,
      "domNodes": -264,
      "jsHeapTotalBytes": 15593472,
      "scriptDurationMs": 126.06200000000001,
      "eventListeners": -129,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1726.2779999999793,
      "styleRecalcs": 34,
      "styleRecalcDurationMs": 17.637,
      "layouts": 6,
      "layoutDurationMs": 0.6899999999999998,
      "taskDurationMs": 292.902,
      "heapDeltaBytes": 548652,
      "heapUsedBytes": 49472768,
      "domNodes": 81,
      "jsHeapTotalBytes": 14680064,
      "scriptDurationMs": 24.230999999999998,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1721.0890000000063,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 17.334,
      "layouts": 6,
      "layoutDurationMs": 0.6250000000000001,
      "taskDurationMs": 286.613,
      "heapDeltaBytes": 158684,
      "heapUsedBytes": 48497280,
      "domNodes": 77,
      "jsHeapTotalBytes": 14942208,
      "scriptDurationMs": 18.071000000000005,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1717.486000000008,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 15.238,
      "layouts": 6,
      "layoutDurationMs": 0.5239999999999999,
      "taskDurationMs": 287.98400000000004,
      "heapDeltaBytes": 213364,
      "heapUsedBytes": 48529548,
      "domNodes": 75,
      "jsHeapTotalBytes": 15204352,
      "scriptDurationMs": 17.560000000000002,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 505.34400000003643,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.324000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 315.604,
      "heapDeltaBytes": 8448688,
      "heapUsedBytes": 57109068,
      "domNodes": 16,
      "jsHeapTotalBytes": 16252928,
      "scriptDurationMs": 56.659000000000006,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.669999999999998,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 538.84800000003,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 8.708,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 333.87999999999994,
      "heapDeltaBytes": 8833540,
      "heapUsedBytes": 57445572,
      "domNodes": 18,
      "jsHeapTotalBytes": 15204352,
      "scriptDurationMs": 60.800000000000004,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 527.1020000000135,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 8.095,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 317.547,
      "heapDeltaBytes": 8531008,
      "heapUsedBytes": 57139328,
      "domNodes": 18,
      "jsHeapTotalBytes": 15990784,
      "scriptDurationMs": 55.54099999999999,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2021.4930000000777,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 10.176,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 521.9769999999999,
      "heapDeltaBytes": 2660348,
      "heapUsedBytes": 59858008,
      "domNodes": -261,
      "jsHeapTotalBytes": 5795840,
      "scriptDurationMs": 93.226,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2018.891999999937,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.011000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 526.954,
      "heapDeltaBytes": 9828640,
      "heapUsedBytes": 67729436,
      "domNodes": -257,
      "jsHeapTotalBytes": 4018176,
      "scriptDurationMs": 96.85199999999999,
      "eventListeners": -129,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2039.4770000000335,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.513999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 533.2750000000001,
      "heapDeltaBytes": 5328712,
      "heapUsedBytes": 63303496,
      "domNodes": -261,
      "jsHeapTotalBytes": 815104,
      "scriptDurationMs": 91.896,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2115.44600000002,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 16.741999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1055.04,
      "heapDeltaBytes": 25425236,
      "heapUsedBytes": 84866456,
      "domNodes": -266,
      "jsHeapTotalBytes": 5738496,
      "scriptDurationMs": 384.432,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2137.6430000000255,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 17.213,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1046.767,
      "heapDeltaBytes": 10491980,
      "heapUsedBytes": 69739820,
      "domNodes": -263,
      "jsHeapTotalBytes": 5738496,
      "scriptDurationMs": 379.718,
      "eventListeners": -157,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2160.4939999999715,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 16.949,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1135.829,
      "heapDeltaBytes": 7267204,
      "heapUsedBytes": 66822096,
      "domNodes": -264,
      "jsHeapTotalBytes": 495616,
      "scriptDurationMs": 445.78200000000004,
      "eventListeners": -125,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3147.99000000005,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 15.92,
      "layouts": 60,
      "layoutDurationMs": 6.752,
      "taskDurationMs": 1299.215,
      "heapDeltaBytes": 10243648,
      "heapUsedBytes": 71033348,
      "domNodes": -268,
      "jsHeapTotalBytes": 1339392,
      "scriptDurationMs": 494.39900000000006,
      "eventListeners": -125,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3133.8950000000523,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 17.150999999999996,
      "layouts": 60,
      "layoutDurationMs": 6.985999999999999,
      "taskDurationMs": 1327.003,
      "heapDeltaBytes": 9345664,
      "heapUsedBytes": 70465632,
      "domNodes": -266,
      "jsHeapTotalBytes": 5271552,
      "scriptDurationMs": 514.7810000000001,
      "eventListeners": -123,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3117.6479999999174,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 17.567999999999998,
      "layouts": 60,
      "layoutDurationMs": 7.0889999999999995,
      "taskDurationMs": 1296.792,
      "heapDeltaBytes": 8652084,
      "heapUsedBytes": 69468956,
      "domNodes": -267,
      "jsHeapTotalBytes": 815104,
      "scriptDurationMs": 475.58,
      "eventListeners": -123,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2038.895000000025,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.890000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 520.4839999999999,
      "heapDeltaBytes": 3728648,
      "heapUsedBytes": 63618920,
      "domNodes": -265,
      "jsHeapTotalBytes": 28672,
      "scriptDurationMs": 89.171,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "minimap-idle",
      "durationMs": 2020.5120000000534,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.293999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 501.81600000000003,
      "heapDeltaBytes": 4395300,
      "heapUsedBytes": 64201988,
      "domNodes": -263,
      "jsHeapTotalBytes": 552960,
      "scriptDurationMs": 85.632,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "minimap-idle",
      "durationMs": 2037.4379999998382,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.881,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 536.332,
      "heapDeltaBytes": 13643252,
      "heapUsedBytes": 74085348,
      "domNodes": -259,
      "jsHeapTotalBytes": 290816,
      "scriptDurationMs": 94.02300000000001,
      "eventListeners": -125,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 531.8070000000716,
      "styleRecalcs": 45,
      "styleRecalcDurationMs": 9.717,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 343.29299999999995,
      "heapDeltaBytes": 9091668,
      "heapUsedBytes": 57726164,
      "domNodes": 16,
      "jsHeapTotalBytes": 16515072,
      "scriptDurationMs": 118.362,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.669999999999998,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 590.1000000000067,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 10.743999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 357.34900000000005,
      "heapDeltaBytes": 9634812,
      "heapUsedBytes": 59310956,
      "domNodes": 20,
      "jsHeapTotalBytes": 15728640,
      "scriptDurationMs": 118.726,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.669999999999998,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 548.4169999999722,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 10.756,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 346.20799999999997,
      "heapDeltaBytes": 9467564,
      "heapUsedBytes": 59297232,
      "domNodes": 20,
      "jsHeapTotalBytes": 14942208,
      "scriptDurationMs": 117.95499999999998,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1993.6620000000858,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 7.883999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 321.98099999999994,
      "heapDeltaBytes": 22402392,
      "heapUsedBytes": 70931936,
      "domNodes": 18,
      "jsHeapTotalBytes": 15204352,
      "scriptDurationMs": 13.682000000000002,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2022.560999999996,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.855000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 321.78499999999997,
      "heapDeltaBytes": 22578344,
      "heapUsedBytes": 71211444,
      "domNodes": 19,
      "jsHeapTotalBytes": 14680064,
      "scriptDurationMs": 13.847999999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2003.518999999983,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.152,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 326.27700000000004,
      "heapDeltaBytes": 22247204,
      "heapUsedBytes": 70645468,
      "domNodes": 18,
      "jsHeapTotalBytes": 15204352,
      "scriptDurationMs": 13.01,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1691.7770000000019,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 35.153999999999996,
      "layouts": 16,
      "layoutDurationMs": 4.208,
      "taskDurationMs": 673.377,
      "heapDeltaBytes": 395744,
      "heapUsedBytes": 49246048,
      "domNodes": -262,
      "jsHeapTotalBytes": 14282752,
      "scriptDurationMs": 89.199,
      "eventListeners": -129,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1718.727000000058,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 37.93000000000001,
      "layouts": 16,
      "layoutDurationMs": 4.358,
      "taskDurationMs": 669.027,
      "heapDeltaBytes": -6921656,
      "heapUsedBytes": 59082848,
      "domNodes": 63,
      "jsHeapTotalBytes": 20279296,
      "scriptDurationMs": 89.02499999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1699.1780000000745,
      "styleRecalcs": 74,
      "styleRecalcDurationMs": 35.13099999999999,
      "layouts": 16,
      "layoutDurationMs": 3.9259999999999997,
      "taskDurationMs": 682.699,
      "heapDeltaBytes": -4451432,
      "heapUsedBytes": 43769344,
      "domNodes": -263,
      "jsHeapTotalBytes": 15331328,
      "scriptDurationMs": 87.373,
      "eventListeners": -131,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8114.44199999994,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 49.98100000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3604.548,
      "heapDeltaBytes": 15833528,
      "heapUsedBytes": 73473164,
      "domNodes": -260,
      "jsHeapTotalBytes": 2592768,
      "scriptDurationMs": 1238.9730000000002,
      "eventListeners": -111,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8203.015999999934,
      "styleRecalcs": 251,
      "styleRecalcDurationMs": 50.885,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3811.037,
      "heapDeltaBytes": 18184220,
      "heapUsedBytes": 74876224,
      "domNodes": -256,
      "jsHeapTotalBytes": 10194944,
      "scriptDurationMs": 1375.723,
      "eventListeners": -111,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8178.107000000182,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 50.107000000000006,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3813.8010000000004,
      "heapDeltaBytes": 17607588,
      "heapUsedBytes": 74707444,
      "domNodes": -263,
      "jsHeapTotalBytes": 5476352,
      "scriptDurationMs": 1383.8650000000002,
      "eventListeners": -111,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12131.541999999969,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12095.675,
      "heapDeltaBytes": -30915344,
      "heapUsedBytes": 172626240,
      "domNodes": -3333,
      "jsHeapTotalBytes": -7540736,
      "scriptDurationMs": 628.212,
      "eventListeners": -16462,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12264.58100000002,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12244.601,
      "heapDeltaBytes": -17774104,
      "heapUsedBytes": 185538968,
      "domNodes": -8335,
      "jsHeapTotalBytes": -18812928,
      "scriptDurationMs": 622.833,
      "eventListeners": -16462,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 11773.058999999876,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11763.272,
      "heapDeltaBytes": -32446168,
      "heapUsedBytes": 171274924,
      "domNodes": -8331,
      "jsHeapTotalBytes": 23654400,
      "scriptDurationMs": 586.069,
      "eventListeners": -16462,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 13777.950000000033,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 15.369999999999994,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 13756.634,
      "heapDeltaBytes": -48752448,
      "heapUsedBytes": 161102460,
      "domNodes": -8331,
      "jsHeapTotalBytes": 13692928,
      "scriptDurationMs": 858.555,
      "eventListeners": -16460,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14273.235,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 15.849000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14243.609,
      "heapDeltaBytes": -32295572,
      "heapUsedBytes": 176030212,
      "domNodes": -8335,
      "jsHeapTotalBytes": -1073152,
      "scriptDurationMs": 903.1740000000001,
      "eventListeners": -16488,
      "totalBlockingTimeMs": 31,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14111.302999999907,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 15.54899999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14092.702,
      "heapDeltaBytes": -35150380,
      "heapUsedBytes": 160429524,
      "domNodes": -8331,
      "jsHeapTotalBytes": 14479360,
      "scriptDurationMs": 861.0859999999999,
      "eventListeners": -16462,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "workflow-execution",
      "durationMs": 477.1859999999606,
      "styleRecalcs": 23,
      "styleRecalcDurationMs": 25.230000000000004,
      "layouts": 5,
      "layoutDurationMs": 1.7100000000000002,
      "taskDurationMs": 134.71999999999997,
      "heapDeltaBytes": 5478024,
      "heapUsedBytes": 55561240,
      "domNodes": 192,
      "jsHeapTotalBytes": 524288,
      "scriptDurationMs": 26.722999999999995,
      "eventListeners": 69,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "workflow-execution",
      "durationMs": 482.5660000000198,
      "styleRecalcs": 21,
      "styleRecalcDurationMs": 22.411,
      "layouts": 4,
      "layoutDurationMs": 1.3650000000000002,
      "taskDurationMs": 123.59800000000001,
      "heapDeltaBytes": 5244160,
      "heapUsedBytes": 55310800,
      "domNodes": 181,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 27.684,
      "eventListeners": 69,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "workflow-execution",
      "durationMs": 467.9960000000847,
      "styleRecalcs": 20,
      "styleRecalcDurationMs": 22.968,
      "layouts": 5,
      "layoutDurationMs": 1.4500000000000002,
      "taskDurationMs": 115.872,
      "heapDeltaBytes": 5114076,
      "heapUsedBytes": 56326940,
      "domNodes": 177,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 21.884,
      "eventListeners": 69,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999727
    }
  ]
}

@codecov
Copy link
Copy Markdown

codecov Bot commented May 2, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@             Coverage Diff             @@
##             main   #11835       +/-   ##
===========================================
- Coverage   71.66%   55.42%   -16.24%     
===========================================
  Files        1491     1382      -109     
  Lines       86124    70572    -15552     
  Branches    23274    19662     -3612     
===========================================
- Hits        61718    39117    -22601     
- Misses      23536    30928     +7392     
+ Partials      870      527      -343     
Flag Coverage Δ
e2e ?
unit 55.42% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 993 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@christian-byrne christian-byrne requested review from jaeone94 and removed request for jaeone94 May 3, 2026 06:39
Copy link
Copy Markdown
Collaborator

@jaeone94 jaeone94 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not find any major blockers in this PR, and all E2E tests are passing.

@jaeone94 jaeone94 assigned christian-byrne and unassigned jaeone94 May 3, 2026
@christian-byrne christian-byrne merged commit 61a444e into main May 4, 2026
58 checks passed
@christian-byrne christian-byrne deleted the batch-dispatch/cr-11556 branch May 4, 2026 19:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test: refactor E2E keyboard/topbar tests to use test.step and avoid duplicated setup logic

2 participants