Skip to content

test: add E2E coverage for credit balance and top-up conversions - #11953

Open
christian-byrne wants to merge 6 commits into
mainfrom
glary/credits-e2e-tests
Open

test: add E2E coverage for credit balance and top-up conversions#11953
christian-byrne wants to merge 6 commits into
mainfrom
glary/credits-e2e-tests

Conversation

@christian-byrne

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

Copy link
Copy Markdown
Contributor

Summary

Refreshes the billing E2E coverage on current main, retaining only the missing top-up conversion journeys after the billing fixture and UI refactors.

Changes

  • What: Rebuilt the branch on current main instead of carrying the obsolete stacked subscription fixture. Extends the established TopUpCreditsDialog page object and legacy dialog spec to verify the default $50 → 10,550 conversion, the $10 → 2,110 preset, and bidirectional $55 ↔ 11,605 stepper updates.
  • Workspace integration: Extends the existing @cloud team-owner deep-link E2E. Its cloud boot enables team workspaces, activates a team workspace, mocks workspace billing, renders TopUpCreditsDialogContentWorkspace, and exercises the real credit stepper and $50 ↔ 11,605 conversion through the shared selectors.
  • Root cause: The original PR was based on glary/subscription-e2e-tests; its custom fixture, subscription cases, profile balance case, and selectors have since landed or been superseded by current billing-facade tests. That left a conflicting 900-line diff whose only valuable uncovered behavior was the top-up conversion controls.
  • Breaking: None.

Review Focus

  • The top-up-get-amount test id exists on both active dialog implementations.
  • Legacy conversion assertions remain in the established dialog page object/spec.
  • Workspace coverage uses the existing team-owner cloud boot, which guarantees type === 'workspace'; it is not merely a cloud tag running legacy billing.

Test Plan

  • pnpm typecheck — passed (commit hook)
  • pnpm typecheck:browser — passed
  • focused oxfmt, oxlint, and ESLint — passed
  • pnpm exec vitest run src/components/dialog/content/TopUpCreditsDialogContentLegacy.test.ts src/platform/workspace/components/TopUpCreditsDialogContentWorkspace.test.ts — 20 passed
  • Playwright discovery for topUpCreditsDialog.spec.ts and topUpDeepLink.spec.ts — 11 tests found, including the cloud workspace conversion case
  • Direct local execution of the deep-link E2E requires a running ComfyUI backend; without it, the app boot chain cannot reach the URL loader. CI provides the normal backend fixture.

@coderabbitai

coderabbitai Bot commented May 5, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 4179cb22-6c85-4581-b1c5-3d28ff223ca5

📥 Commits

Reviewing files that changed from the base of the PR and between db147c0 and 7690a80.

📒 Files selected for processing (5)
  • browser_tests/fixtures/components/TopUpCreditsDialog.ts
  • browser_tests/tests/dialogs/topUpCreditsDialog.spec.ts
  • browser_tests/tests/dialogs/topUpDeepLink.spec.ts
  • src/components/dialog/content/TopUpCreditsDialogContentLegacy.vue
  • src/platform/workspace/components/TopUpCreditsDialogContentWorkspace.vue

📝 Walkthrough

Walkthrough

The top-up dialogs now expose stable locators for credit amounts and increment controls. Browser tests verify initial values, preset conversion, and bidirectional updates for dollar and credit amounts in standard and deep-link flows.

Changes

Top-up amount synchronization

Layer / File(s) Summary
Dialog amount locators
src/components/dialog/content/TopUpCreditsDialogContentLegacy.vue, src/platform/workspace/components/TopUpCreditsDialogContentWorkspace.vue, browser_tests/fixtures/components/TopUpCreditsDialog.ts
The dialogs expose a stable credits amount identifier. The browser fixture initializes locators for both amount inputs and increment buttons.
Amount synchronization coverage
browser_tests/tests/dialogs/topUpCreditsDialog.spec.ts, browser_tests/tests/dialogs/topUpDeepLink.spec.ts
Browser tests verify initial values, preset conversion, dollar increments, credit increments, and converted values in the deep-link flow.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: dante01yoon


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
End-To-End Regression Coverage For Fixes ❓ Inconclusive The changed files and PR description are available, but the PR title and commit subjects are not provided, so the required bug-fix signal cannot be verified. Provide the PR title and commit subjects to determine whether the bug-fix language condition applies.
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: adding E2E coverage for credit balance and top-up conversions.
Description check ✅ Passed The description covers the summary, changes, review focus, breaking status, test plan, and applicable workspace details.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Adr Compliance For Entity/Litegraph Changes ✅ Passed The changed files are browser test fixtures/specs and two top-up dialog components; none are under src/lib/litegraph/, src/ecs/, or graph entity files.
✨ 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 glary/credits-e2e-tests

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

@glary-bot

glary-bot Bot commented May 5, 2026

Copy link
Copy Markdown

No action needed — this PR intentionally targets glary/subscription-e2e-tests (the open infra PR) rather than main so the spec can stack on the SubscriptionHelper and balance/status mocks introduced there. CodeRabbit will run a full review automatically once the base switches to main after the parent PR merges.

@codecov

codecov Bot commented May 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@            Coverage Diff             @@
##             main   #11953      +/-   ##
==========================================
- Coverage   79.36%   78.77%   -0.60%     
==========================================
  Files        1804     1803       -1     
  Lines      118450   109115    -9335     
  Branches    35723    33408    -2315     
==========================================
- Hits        94009    85953    -8056     
+ Misses      23858    22675    -1183     
+ Partials      583      487      -96     
Flag Coverage Δ
unit 71.68% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...dialog/content/TopUpCreditsDialogContentLegacy.vue 78.00% <ø> (-0.22%) ⬇️
.../components/TopUpCreditsDialogContentWorkspace.vue 61.70% <ø> (+4.23%) ⬆️

... and 222 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.

@github-actions

github-actions Bot commented May 5, 2026

Copy link
Copy Markdown

📦 Bundle Size

⏳ Size data collection in progress…

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 68.0 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 49.0 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 46.5 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 54.7 MB heap
large-graph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.6 MB heap
large-graph-pan: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 55.4 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.3 MB heap
minimap-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.0 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 54.8 MB heap
subgraph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 68.0 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 44.0 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 68.9 MB heap
vue-large-graph-idle: · 58.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 164.5 MB heap
vue-large-graph-pan: · 58.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 156.7 MB heap
workflow-execution: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 52.4 MB heap

No baseline found — showing absolute values.

Metric Value
canvas-idle: avg frame time 17ms
canvas-idle: p95 frame time 17ms
canvas-idle: layout duration 0ms
canvas-idle: style recalc duration 9ms
canvas-idle: layout count 0
canvas-idle: style recalc count 9
canvas-idle: task duration 356ms
canvas-idle: script duration 18ms
canvas-idle: TBT 0ms
canvas-idle: heap used 68.0 MB
canvas-idle: DOM nodes 18
canvas-idle: event listeners 4
canvas-mouse-sweep: avg frame time 17ms
canvas-mouse-sweep: p95 frame time 17ms
canvas-mouse-sweep: layout duration 4ms
canvas-mouse-sweep: style recalc duration 36ms
canvas-mouse-sweep: layout count 12
canvas-mouse-sweep: style recalc count 73
canvas-mouse-sweep: task duration 796ms
canvas-mouse-sweep: script duration 130ms
canvas-mouse-sweep: TBT 0ms
canvas-mouse-sweep: heap used 49.0 MB
canvas-mouse-sweep: DOM nodes -263
canvas-mouse-sweep: event listeners -129
canvas-zoom-sweep: avg frame time 17ms
canvas-zoom-sweep: p95 frame time 17ms
canvas-zoom-sweep: layout duration 1ms
canvas-zoom-sweep: style recalc duration 17ms
canvas-zoom-sweep: layout count 6
canvas-zoom-sweep: style recalc count 31
canvas-zoom-sweep: task duration 296ms
canvas-zoom-sweep: script duration 19ms
canvas-zoom-sweep: TBT 0ms
canvas-zoom-sweep: heap used 46.5 MB
canvas-zoom-sweep: DOM nodes 77
canvas-zoom-sweep: event listeners 19
dom-widget-clipping: avg frame time 17ms
dom-widget-clipping: p95 frame time 17ms
dom-widget-clipping: layout duration 0ms
dom-widget-clipping: style recalc duration 9ms
dom-widget-clipping: layout count 0
dom-widget-clipping: style recalc count 11
dom-widget-clipping: task duration 334ms
dom-widget-clipping: script duration 60ms
dom-widget-clipping: TBT 0ms
dom-widget-clipping: heap used 54.7 MB
dom-widget-clipping: DOM nodes 18
dom-widget-clipping: event listeners 0
large-graph-idle: avg frame time 17ms
large-graph-idle: p95 frame time 17ms
large-graph-idle: layout duration 0ms
large-graph-idle: style recalc duration 8ms
large-graph-idle: layout count 0
large-graph-idle: style recalc count 8
large-graph-idle: task duration 538ms
large-graph-idle: script duration 94ms
large-graph-idle: TBT 0ms
large-graph-idle: heap used 63.6 MB
large-graph-idle: DOM nodes -264
large-graph-idle: event listeners -127
large-graph-pan: avg frame time 17ms
large-graph-pan: p95 frame time 17ms
large-graph-pan: layout duration 0ms
large-graph-pan: style recalc duration 18ms
large-graph-pan: layout count 0
large-graph-pan: style recalc count 69
large-graph-pan: task duration 1088ms
large-graph-pan: script duration 405ms
large-graph-pan: TBT 0ms
large-graph-pan: heap used 55.4 MB
large-graph-pan: DOM nodes -265
large-graph-pan: event listeners -127
large-graph-zoom: avg frame time 17ms
large-graph-zoom: p95 frame time 17ms
large-graph-zoom: layout duration 8ms
large-graph-zoom: style recalc duration 18ms
large-graph-zoom: layout count 60
large-graph-zoom: style recalc count 65
large-graph-zoom: task duration 1350ms
large-graph-zoom: script duration 500ms
large-graph-zoom: TBT 0ms
large-graph-zoom: heap used 66.3 MB
large-graph-zoom: DOM nodes -268
large-graph-zoom: event listeners -123
minimap-idle: avg frame time 17ms
minimap-idle: p95 frame time 17ms
minimap-idle: layout duration 0ms
minimap-idle: style recalc duration 7ms
minimap-idle: layout count 0
minimap-idle: style recalc count 8
minimap-idle: task duration 550ms
minimap-idle: script duration 93ms
minimap-idle: TBT 0ms
minimap-idle: heap used 64.0 MB
minimap-idle: DOM nodes -266
minimap-idle: event listeners -127
subgraph-dom-widget-clipping: avg frame time 17ms
subgraph-dom-widget-clipping: p95 frame time 17ms
subgraph-dom-widget-clipping: layout duration 0ms
subgraph-dom-widget-clipping: style recalc duration 10ms
subgraph-dom-widget-clipping: layout count 0
subgraph-dom-widget-clipping: style recalc count 46
subgraph-dom-widget-clipping: task duration 343ms
subgraph-dom-widget-clipping: script duration 117ms
subgraph-dom-widget-clipping: TBT 0ms
subgraph-dom-widget-clipping: heap used 54.8 MB
subgraph-dom-widget-clipping: DOM nodes 18
subgraph-dom-widget-clipping: event listeners 6
subgraph-idle: avg frame time 17ms
subgraph-idle: p95 frame time 17ms
subgraph-idle: layout duration 0ms
subgraph-idle: style recalc duration 8ms
subgraph-idle: layout count 0
subgraph-idle: style recalc count 9
subgraph-idle: task duration 337ms
subgraph-idle: script duration 14ms
subgraph-idle: TBT 0ms
subgraph-idle: heap used 68.0 MB
subgraph-idle: DOM nodes 18
subgraph-idle: event listeners 4
subgraph-mouse-sweep: avg frame time 17ms
subgraph-mouse-sweep: p95 frame time 17ms
subgraph-mouse-sweep: layout duration 5ms
subgraph-mouse-sweep: style recalc duration 39ms
subgraph-mouse-sweep: layout count 16
subgraph-mouse-sweep: style recalc count 76
subgraph-mouse-sweep: task duration 726ms
subgraph-mouse-sweep: script duration 95ms
subgraph-mouse-sweep: TBT 0ms
subgraph-mouse-sweep: heap used 44.0 MB
subgraph-mouse-sweep: DOM nodes -262
subgraph-mouse-sweep: event listeners -131
viewport-pan-sweep: avg frame time 17ms
viewport-pan-sweep: p95 frame time 17ms
viewport-pan-sweep: layout duration 0ms
viewport-pan-sweep: style recalc duration 53ms
viewport-pan-sweep: layout count 0
viewport-pan-sweep: style recalc count 250
viewport-pan-sweep: task duration 3618ms
viewport-pan-sweep: script duration 1279ms
viewport-pan-sweep: TBT 0ms
viewport-pan-sweep: heap used 68.9 MB
viewport-pan-sweep: DOM nodes -262
viewport-pan-sweep: event listeners -111
vue-large-graph-idle: avg frame time 17ms
vue-large-graph-idle: p95 frame time 17ms
vue-large-graph-idle: layout duration 0ms
vue-large-graph-idle: style recalc duration 0ms
vue-large-graph-idle: layout count 0
vue-large-graph-idle: style recalc count 0
vue-large-graph-idle: task duration 11999ms
vue-large-graph-idle: script duration 605ms
vue-large-graph-idle: TBT 0ms
vue-large-graph-idle: heap used 164.5 MB
vue-large-graph-idle: DOM nodes -8331
vue-large-graph-idle: event listeners -16462
vue-large-graph-pan: avg frame time 17ms
vue-large-graph-pan: p95 frame time 17ms
vue-large-graph-pan: layout duration 0ms
vue-large-graph-pan: style recalc duration 17ms
vue-large-graph-pan: layout count 0
vue-large-graph-pan: style recalc count 67
vue-large-graph-pan: task duration 14353ms
vue-large-graph-pan: script duration 911ms
vue-large-graph-pan: TBT 0ms
vue-large-graph-pan: heap used 156.7 MB
vue-large-graph-pan: DOM nodes -8331
vue-large-graph-pan: event listeners -16462
workflow-execution: avg frame time 17ms
workflow-execution: p95 frame time 17ms
workflow-execution: layout duration 1ms
workflow-execution: style recalc duration 21ms
workflow-execution: layout count 5
workflow-execution: style recalc count 16
workflow-execution: task duration 126ms
workflow-execution: script duration 24ms
workflow-execution: TBT 0ms
workflow-execution: heap used 52.4 MB
workflow-execution: DOM nodes 154
workflow-execution: event listeners 69
Raw data
{
  "timestamp": "2026-05-11T19:48:15.120Z",
  "gitSha": "0bc46cd4d1d9a951f1c7a2ffe9126dbe4db3b089",
  "branch": "glary/credits-e2e-tests",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2001.8329999999764,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.099999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 334.106,
      "heapDeltaBytes": 22820172,
      "heapUsedBytes": 71346056,
      "domNodes": 16,
      "jsHeapTotalBytes": 14942208,
      "scriptDurationMs": 14.921,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 2015.704000000028,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 10.850999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 365.818,
      "heapDeltaBytes": 1697636,
      "heapUsedBytes": 67120132,
      "domNodes": 24,
      "jsHeapTotalBytes": 20279296,
      "scriptDurationMs": 17.931,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-idle",
      "durationMs": 2018.2510000000775,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.03,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 356.41900000000004,
      "heapDeltaBytes": 22756212,
      "heapUsedBytes": 71550036,
      "domNodes": 18,
      "jsHeapTotalBytes": 14680064,
      "scriptDurationMs": 17.536,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1928.3929999999998,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 40.901,
      "layouts": 12,
      "layoutDurationMs": 3.6430000000000002,
      "taskDurationMs": 925.826,
      "heapDeltaBytes": -16933184,
      "heapUsedBytes": 51379124,
      "domNodes": -261,
      "jsHeapTotalBytes": 18833408,
      "scriptDurationMs": 140.124,
      "eventListeners": -129,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1813.8790000000427,
      "styleRecalcs": 73,
      "styleRecalcDurationMs": 36.26,
      "layouts": 12,
      "layoutDurationMs": 3.536,
      "taskDurationMs": 781.745,
      "heapDeltaBytes": -802556,
      "heapUsedBytes": 47795920,
      "domNodes": -263,
      "jsHeapTotalBytes": 16642048,
      "scriptDurationMs": 126.18000000000002,
      "eventListeners": -131,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1833.7679999999636,
      "styleRecalcs": 72,
      "styleRecalcDurationMs": 35.607,
      "layouts": 12,
      "layoutDurationMs": 3.3629999999999995,
      "taskDurationMs": 795.679,
      "heapDeltaBytes": 7268808,
      "heapUsedBytes": 55540272,
      "domNodes": -266,
      "jsHeapTotalBytes": 15855616,
      "scriptDurationMs": 129.835,
      "eventListeners": -129,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1737.1519999999805,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 16.597,
      "layouts": 6,
      "layoutDurationMs": 0.6240000000000002,
      "taskDurationMs": 291.09999999999997,
      "heapDeltaBytes": 195620,
      "heapUsedBytes": 48798600,
      "domNodes": 77,
      "jsHeapTotalBytes": 14680064,
      "scriptDurationMs": 18.666,
      "eventListeners": 21,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1750.2740000000472,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 17.46,
      "layouts": 6,
      "layoutDurationMs": 0.559,
      "taskDurationMs": 296.15099999999995,
      "heapDeltaBytes": 160472,
      "heapUsedBytes": 48513756,
      "domNodes": 75,
      "jsHeapTotalBytes": 15466496,
      "scriptDurationMs": 18.578,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1753.8769999999886,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 17.714000000000002,
      "layouts": 6,
      "layoutDurationMs": 0.5969999999999999,
      "taskDurationMs": 313.358,
      "heapDeltaBytes": 185748,
      "heapUsedBytes": 48847980,
      "domNodes": 77,
      "jsHeapTotalBytes": 15204352,
      "scriptDurationMs": 22.614,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 528.5609999999963,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 8.114,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 325.4170000000001,
      "heapDeltaBytes": 8707964,
      "heapUsedBytes": 57363704,
      "domNodes": 18,
      "jsHeapTotalBytes": 15466496,
      "scriptDurationMs": 58.611999999999995,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.669999999999998,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 561.2759999999639,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 9.234,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 334.048,
      "heapDeltaBytes": 9046092,
      "heapUsedBytes": 57427192,
      "domNodes": 19,
      "jsHeapTotalBytes": 15990784,
      "scriptDurationMs": 59.513999999999996,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.669999999999998,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 571.1909999999989,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 9.101999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 350.369,
      "heapDeltaBytes": 8784660,
      "heapUsedBytes": 57340044,
      "domNodes": 18,
      "jsHeapTotalBytes": 15728640,
      "scriptDurationMs": 59.617999999999995,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2018.417999999997,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.9830000000000005,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 538.4849999999999,
      "heapDeltaBytes": 3415336,
      "heapUsedBytes": 61670664,
      "domNodes": -264,
      "jsHeapTotalBytes": 290816,
      "scriptDurationMs": 94.25900000000001,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2025.9949999999662,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.655,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 537.539,
      "heapDeltaBytes": 8618032,
      "heapUsedBytes": 66729808,
      "domNodes": -261,
      "jsHeapTotalBytes": 552960,
      "scriptDurationMs": 90.763,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2023.5290000000532,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.049000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 556.392,
      "heapDeltaBytes": 12769320,
      "heapUsedBytes": 71003096,
      "domNodes": -264,
      "jsHeapTotalBytes": 290816,
      "scriptDurationMs": 104.46500000000002,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2126.1790000000074,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 18.184,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1088.385,
      "heapDeltaBytes": 3764012,
      "heapUsedBytes": 61572568,
      "domNodes": -261,
      "jsHeapTotalBytes": 1282048,
      "scriptDurationMs": 405.10699999999997,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2135.791999999981,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 18.456999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1053.242,
      "heapDeltaBytes": -1082124,
      "heapUsedBytes": 58047728,
      "domNodes": -265,
      "jsHeapTotalBytes": 757760,
      "scriptDurationMs": 395.159,
      "eventListeners": -125,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2129.2339999999967,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 17.964,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1125.064,
      "heapDeltaBytes": -5548008,
      "heapUsedBytes": 53582040,
      "domNodes": -265,
      "jsHeapTotalBytes": 6057984,
      "scriptDurationMs": 404.78,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3113.291000000004,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 19.479,
      "layouts": 60,
      "layoutDurationMs": 7.268,
      "taskDurationMs": 1295.63,
      "heapDeltaBytes": 8585756,
      "heapUsedBytes": 69213372,
      "domNodes": -266,
      "jsHeapTotalBytes": 4485120,
      "scriptDurationMs": 486.60900000000004,
      "eventListeners": -125,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3135.6819999999743,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 17.987000000000002,
      "layouts": 60,
      "layoutDurationMs": 7.536000000000001,
      "taskDurationMs": 1349.9950000000001,
      "heapDeltaBytes": 8473652,
      "heapUsedBytes": 69512244,
      "domNodes": -268,
      "jsHeapTotalBytes": 4485120,
      "scriptDurationMs": 507.8830000000001,
      "eventListeners": -123,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3113.697000000002,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 17.717999999999996,
      "layouts": 60,
      "layoutDurationMs": 7.773,
      "taskDurationMs": 1359.4409999999998,
      "heapDeltaBytes": 14657744,
      "heapUsedBytes": 75674960,
      "domNodes": -270,
      "jsHeapTotalBytes": -233472,
      "scriptDurationMs": 500.29099999999994,
      "eventListeners": -123,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2016.795000000002,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 6.835000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 554.0369999999999,
      "heapDeltaBytes": 7808588,
      "heapUsedBytes": 68002740,
      "domNodes": -266,
      "jsHeapTotalBytes": 552960,
      "scriptDurationMs": 93.263,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2055.5609999999547,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.453999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 525.908,
      "heapDeltaBytes": 7175392,
      "heapUsedBytes": 67092992,
      "domNodes": -262,
      "jsHeapTotalBytes": 552960,
      "scriptDurationMs": 90.869,
      "eventListeners": -127,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2038.08099999992,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.986,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 550.294,
      "heapDeltaBytes": 2504516,
      "heapUsedBytes": 62691284,
      "domNodes": -267,
      "jsHeapTotalBytes": 5271552,
      "scriptDurationMs": 102.138,
      "eventListeners": -125,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 545.7289999999944,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 10.405999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 343.42,
      "heapDeltaBytes": 8859896,
      "heapUsedBytes": 57508548,
      "domNodes": 18,
      "jsHeapTotalBytes": 15990784,
      "scriptDurationMs": 117.381,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.669999999999998,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 523.0169999999816,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 9.899000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 338.32700000000006,
      "heapDeltaBytes": 9111900,
      "heapUsedBytes": 57962124,
      "domNodes": 18,
      "jsHeapTotalBytes": 15728640,
      "scriptDurationMs": 114.803,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 578.6269999999831,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 10.994,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 357.993,
      "heapDeltaBytes": 9110588,
      "heapUsedBytes": 57500032,
      "domNodes": 17,
      "jsHeapTotalBytes": 15466496,
      "scriptDurationMs": 123.583,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2002.6699999999948,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.042,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 331.20200000000006,
      "heapDeltaBytes": 22992056,
      "heapUsedBytes": 72526180,
      "domNodes": 18,
      "jsHeapTotalBytes": 14942208,
      "scriptDurationMs": 13.684000000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2005.9679999999958,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.408999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 336.951,
      "heapDeltaBytes": 22514756,
      "heapUsedBytes": 70910612,
      "domNodes": 18,
      "jsHeapTotalBytes": 14680064,
      "scriptDurationMs": 12.875999999999998,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2001.8529999999828,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.225,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 343.572,
      "heapDeltaBytes": 22496172,
      "heapUsedBytes": 71260292,
      "domNodes": 16,
      "jsHeapTotalBytes": 14680064,
      "scriptDurationMs": 14.838000000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1721.681999999987,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 36.648,
      "layouts": 16,
      "layoutDurationMs": 4.53,
      "taskDurationMs": 707.389,
      "heapDeltaBytes": -2264780,
      "heapUsedBytes": 46104056,
      "domNodes": -262,
      "jsHeapTotalBytes": 15069184,
      "scriptDurationMs": 92.82300000000001,
      "eventListeners": -131,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1740.63799999999,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 38.63399999999999,
      "layouts": 16,
      "layoutDurationMs": 4.712000000000001,
      "taskDurationMs": 725.586,
      "heapDeltaBytes": 1395512,
      "heapUsedBytes": 49917072,
      "domNodes": -262,
      "jsHeapTotalBytes": 15069184,
      "scriptDurationMs": 95.27,
      "eventListeners": -129,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1716.4060000000063,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 38.84799999999999,
      "layouts": 16,
      "layoutDurationMs": 4.372,
      "taskDurationMs": 729.0020000000001,
      "heapDeltaBytes": -3018196,
      "heapUsedBytes": 45583456,
      "domNodes": -264,
      "jsHeapTotalBytes": 15331328,
      "scriptDurationMs": 96.53,
      "eventListeners": -131,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8131.4800000000105,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 52.606,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3618.153,
      "heapDeltaBytes": 18145928,
      "heapUsedBytes": 75860396,
      "domNodes": -262,
      "jsHeapTotalBytes": 1544192,
      "scriptDurationMs": 1279.587,
      "eventListeners": -111,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8166.646000000014,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 50.94899999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3609.842,
      "heapDeltaBytes": 9757568,
      "heapUsedBytes": 67971596,
      "domNodes": -262,
      "jsHeapTotalBytes": 7311360,
      "scriptDurationMs": 1261.3229999999999,
      "eventListeners": -111,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8150.855999999976,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 53.440000000000005,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3798.583,
      "heapDeltaBytes": 15338424,
      "heapUsedBytes": 72260196,
      "domNodes": -261,
      "jsHeapTotalBytes": 3117056,
      "scriptDurationMs": 1279.186,
      "eventListeners": -111,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12007.932999999979,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11999.129,
      "heapDeltaBytes": -31244444,
      "heapUsedBytes": 172428200,
      "domNodes": -8331,
      "jsHeapTotalBytes": -8065024,
      "scriptDurationMs": 604.7510000000001,
      "eventListeners": -16462,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 11854.294000000038,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11843.876000000002,
      "heapDeltaBytes": -38238380,
      "heapUsedBytes": 172694252,
      "domNodes": -8331,
      "jsHeapTotalBytes": 26800128,
      "scriptDurationMs": 603.301,
      "eventListeners": -16462,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12394.363999999996,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12384.088,
      "heapDeltaBytes": -38794596,
      "heapUsedBytes": 172475052,
      "domNodes": -8331,
      "jsHeapTotalBytes": 26800128,
      "scriptDurationMs": 632.465,
      "eventListeners": -16462,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666763,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14286.037000000022,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 16.574000000000034,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14265.036000000002,
      "heapDeltaBytes": -31258600,
      "heapUsedBytes": 164270552,
      "domNodes": -8331,
      "jsHeapTotalBytes": 2158592,
      "scriptDurationMs": 911.331,
      "eventListeners": -16456,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.779999999999927,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14380.37600000007,
      "styleRecalcs": 67,
      "styleRecalcDurationMs": 16.490000000000006,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14353.278000000002,
      "heapDeltaBytes": -25118156,
      "heapUsedBytes": 170271900,
      "domNodes": -8331,
      "jsHeapTotalBytes": 26013696,
      "scriptDurationMs": 910.695,
      "eventListeners": -16462,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.80000000000291
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14684.503999999946,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 18.27200000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14662.335,
      "heapDeltaBytes": -59255952,
      "heapUsedBytes": 153491376,
      "domNodes": -8331,
      "jsHeapTotalBytes": 585728,
      "scriptDurationMs": 980.627,
      "eventListeners": -16490,
      "totalBlockingTimeMs": 6,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "workflow-execution",
      "durationMs": 464.41899999996394,
      "styleRecalcs": 16,
      "styleRecalcDurationMs": 21.437,
      "layouts": 5,
      "layoutDurationMs": 1.552,
      "taskDurationMs": 126.49199999999999,
      "heapDeltaBytes": 5404544,
      "heapUsedBytes": 55432716,
      "domNodes": 167,
      "jsHeapTotalBytes": 524288,
      "scriptDurationMs": 28.075000000000003,
      "eventListeners": 69,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "workflow-execution",
      "durationMs": 462.14199999997163,
      "styleRecalcs": 16,
      "styleRecalcDurationMs": 21.131,
      "layouts": 5,
      "layoutDurationMs": 1.204,
      "taskDurationMs": 125.67900000000002,
      "heapDeltaBytes": -15039128,
      "heapUsedBytes": 52515332,
      "domNodes": 154,
      "jsHeapTotalBytes": 4288512,
      "scriptDurationMs": 23.901,
      "eventListeners": 69,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "workflow-execution",
      "durationMs": 450.40800000003856,
      "styleRecalcs": 16,
      "styleRecalcDurationMs": 21.453,
      "layouts": 5,
      "layoutDurationMs": 1.284,
      "taskDurationMs": 111.88500000000002,
      "heapDeltaBytes": 5024548,
      "heapUsedBytes": 54921680,
      "domNodes": 154,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 22.968999999999998,
      "eventListeners": 69,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.799999999999727
    }
  ]
}

🎭 Playwright: ✅ 1790 passed, 0 failed · 2 flaky

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

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 08/07/2026, 12:33:58 AM UTC

Links

📦 Bundle: 8.25 MB gzip 🟢 -78 B

Details

Summary

  • Raw size: 34.7 MB baseline 34.7 MB — 🔴 +76 B
  • Gzip: 8.25 MB baseline 8.25 MB — 🟢 -78 B
  • Brotli: 5.71 MB baseline 5.71 MB — 🟢 -395 B
  • Bundles: 427 current • 427 baseline • 140 added / 140 removed

Category Glance
Data & Services 🔴 +76 B (3.48 MB) · Vendor & Third-Party ⚪ 0 B (15.7 MB) · Other ⚪ 0 B (12.8 MB) · Graph Workspace ⚪ 0 B (1.35 MB) · Panels & Settings ⚪ 0 B (540 kB) · Utilities & Hooks ⚪ 0 B (386 kB) · + 5 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-B8711qft.js (removed) 3.64 kB 🟢 -3.64 kB 🟢 -1.82 kB 🟢 -1.58 kB
assets/index-DlbteJ3n.js (new) 3.64 kB 🔴 +3.64 kB 🔴 +1.82 kB 🔴 +1.57 kB

Status: 1 added / 1 removed

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

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-C4W1K5aO.js (new) 1.35 MB 🔴 +1.35 MB 🔴 +294 kB 🔴 +221 kB
assets/GraphView-DZq5dw9H.js (removed) 1.35 MB 🟢 -1.35 MB 🟢 -294 kB 🟢 -221 kB

Status: 1 added / 1 removed / 1 unchanged

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-C6U1-LqG.js (new) 24.9 kB 🔴 +24.9 kB 🔴 +6.22 kB 🔴 +5.51 kB
assets/CloudSurveyView-DPFvO7uS.js (removed) 24.9 kB 🟢 -24.9 kB 🟢 -6.22 kB 🟢 -5.51 kB
assets/CloudLayoutView-DBa9VJSK.js (new) 21.8 kB 🔴 +21.8 kB 🔴 +6.56 kB 🔴 +5.73 kB
assets/CloudLayoutView-etwte6-x.js (removed) 21.8 kB 🟢 -21.8 kB 🟢 -6.56 kB 🟢 -5.73 kB
assets/UserCheckView-C9Z44G7N.js (removed) 8.75 kB 🟢 -8.75 kB 🟢 -2.19 kB 🟢 -1.9 kB
assets/UserCheckView-CXY2303m.js (new) 8.75 kB 🔴 +8.75 kB 🔴 +2.19 kB 🔴 +1.9 kB
assets/CloudLoginView-CTiNYM98.js (removed) 8.74 kB 🟢 -8.74 kB 🟢 -2.55 kB 🟢 -2.26 kB
assets/CloudLoginView-DKhqFvwk.js (new) 8.74 kB 🔴 +8.74 kB 🔴 +2.55 kB 🔴 +2.25 kB
assets/useCloudAuthPage-72020HCJ.js (new) 7.08 kB 🔴 +7.08 kB 🔴 +2.51 kB 🔴 +2.2 kB
assets/useCloudAuthPage-C43qr82R.js (removed) 7.08 kB 🟢 -7.08 kB 🟢 -2.52 kB 🟢 -2.2 kB
assets/CloudSignupView-BldDBk16.js (removed) 6.56 kB 🟢 -6.56 kB 🟢 -2.17 kB 🟢 -1.91 kB
assets/CloudSignupView-hbcpHYPF.js (new) 6.56 kB 🔴 +6.56 kB 🔴 +2.17 kB 🔴 +1.9 kB
assets/WidgetTextPreview-BHasFWU8.js (removed) 6.07 kB 🟢 -6.07 kB 🟢 -2.13 kB 🟢 -1.89 kB
assets/WidgetTextPreview-DgcPFTXy.js (new) 6.07 kB 🔴 +6.07 kB 🔴 +2.13 kB 🔴 +1.89 kB
assets/CloudSubscriptionRedirectView-C7aFjSh_.js (removed) 6.01 kB 🟢 -6.01 kB 🟢 -2.24 kB 🟢 -1.94 kB
assets/CloudSubscriptionRedirectView-CCumcS35.js (new) 6.01 kB 🔴 +6.01 kB 🔴 +2.24 kB 🔴 +1.94 kB
assets/UserSelectView-CVsquSSJ.js (new) 5.49 kB 🔴 +5.49 kB 🔴 +1.95 kB 🔴 +1.72 kB
assets/UserSelectView-DFgnSz4k.js (removed) 5.49 kB 🟢 -5.49 kB 🟢 -1.95 kB 🟢 -1.71 kB
assets/CloudForgotPasswordView-CI8A7G92.js (removed) 4.97 kB 🟢 -4.97 kB 🟢 -1.72 kB 🟢 -1.49 kB
assets/CloudForgotPasswordView-Dc2eaIy6.js (new) 4.97 kB 🔴 +4.97 kB 🔴 +1.72 kB 🔴 +1.49 kB
assets/CloudAuthTimeoutView-B87-TKXA.js (new) 4.43 kB 🔴 +4.43 kB 🔴 +1.54 kB 🔴 +1.33 kB
assets/CloudAuthTimeoutView-G0uTt2Q6.js (removed) 4.43 kB 🟢 -4.43 kB 🟢 -1.54 kB 🟢 -1.35 kB
assets/OAuthLayoutView-BI2pwcx1.js (new) 1.31 kB 🔴 +1.31 kB 🔴 +698 B 🔴 +597 B
assets/OAuthLayoutView-CPDID13I.js (removed) 1.31 kB 🟢 -1.31 kB 🟢 -697 B 🟢 -597 B
assets/WidgetTextPreview-BiZARAkp.js (removed) 131 B 🟢 -131 B 🟢 -100 B 🟢 -90 B
assets/WidgetTextPreview-DuWIxdJ1.js (new) 131 B 🔴 +131 B 🔴 +100 B 🔴 +90 B

Status: 13 added / 13 removed / 4 unchanged

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/KeybindingPanel-B2jbJu0O.js (new) 49.4 kB 🔴 +49.4 kB 🔴 +9.94 kB 🔴 +8.81 kB
assets/KeybindingPanel-BdxuznoO.js (removed) 49.4 kB 🟢 -49.4 kB 🟢 -9.94 kB 🟢 -8.8 kB
assets/SecretsPanel-CDBjdX-L.js (removed) 33.7 kB 🟢 -33.7 kB 🟢 -7.86 kB 🟢 -6.89 kB
assets/SecretsPanel-Dw8e8VU2.js (new) 33.7 kB 🔴 +33.7 kB 🔴 +7.86 kB 🔴 +6.9 kB
assets/CreditsPanel-bU8C-5Rj.js (new) 15.9 kB 🔴 +15.9 kB 🔴 +4.63 kB 🔴 +4.07 kB
assets/CreditsPanel-Dt1ARc1K.js (removed) 15.9 kB 🟢 -15.9 kB 🟢 -4.63 kB 🟢 -4.07 kB
assets/AboutPanel-B_MmN8Vj.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +3.02 kB 🔴 +2.71 kB
assets/AboutPanel-BDI8p-6b.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -3.02 kB 🟢 -2.72 kB
assets/ExtensionPanel-BgW5mPV-.js (new) 9.19 kB 🔴 +9.19 kB 🔴 +2.51 kB 🔴 +2.22 kB
assets/ExtensionPanel-CHy3PImo.js (removed) 9.19 kB 🟢 -9.19 kB 🟢 -2.51 kB 🟢 -2.23 kB
assets/ServerConfigPanel-BrmrqZKK.js (removed) 6.09 kB 🟢 -6.09 kB 🟢 -1.94 kB 🟢 -1.72 kB
assets/ServerConfigPanel-D3JpOB4C.js (new) 6.09 kB 🔴 +6.09 kB 🔴 +1.93 kB 🔴 +1.72 kB
assets/UserPanel-C-HBAjCU.js (removed) 5.73 kB 🟢 -5.73 kB 🟢 -1.78 kB 🟢 -1.54 kB
assets/UserPanel-CwDiqqtz.js (new) 5.73 kB 🔴 +5.73 kB 🔴 +1.78 kB 🔴 +1.54 kB
assets/refreshRemoteConfig-3xNS98wW.js (new) 3.58 kB 🔴 +3.58 kB 🔴 +1.36 kB 🔴 +1.2 kB
assets/refreshRemoteConfig-C8V2wC5v.js (removed) 3.58 kB 🟢 -3.58 kB 🟢 -1.36 kB 🟢 -1.2 kB
assets/cloudRemoteConfig-CYm6dPSM.js (removed) 951 B 🟢 -951 B 🟢 -515 B 🟢 -422 B
assets/cloudRemoteConfig-DuX0zU0J.js (new) 951 B 🔴 +951 B 🔴 +516 B 🔴 +422 B
assets/refreshRemoteConfig-b_IjkgMm.js (removed) 110 B 🟢 -110 B 🟢 -89 B 🟢 -85 B
assets/refreshRemoteConfig-B7fBHrhl.js (new) 110 B 🔴 +110 B 🔴 +89 B 🔴 +86 B

Status: 10 added / 10 removed / 16 unchanged

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/SignUpForm-B5Fp5QFi.js (removed) 12.8 kB 🟢 -12.8 kB 🟢 -4.32 kB 🟢 -3.76 kB
assets/SignUpForm-Be2S42Wy.js (new) 12.8 kB 🔴 +12.8 kB 🔴 +4.31 kB 🔴 +3.76 kB
assets/auth-CQs9wfTy.js (removed) 3.65 kB 🟢 -3.65 kB 🟢 -1.27 kB 🟢 -1.09 kB
assets/auth-CY7v32hE.js (new) 3.65 kB 🔴 +3.65 kB 🔴 +1.27 kB 🔴 +1.09 kB
assets/UpdatePasswordContent-0iC6JRVJ.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +842 B 🔴 +733 B
assets/UpdatePasswordContent-DwghICNf.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -844 B 🟢 -733 B
assets/authStore-BAlFuA0G.js (new) 128 B 🔴 +128 B 🔴 +104 B 🔴 +104 B
assets/authStore-fp6Dj6KE.js (removed) 128 B 🟢 -128 B 🟢 -104 B 🟢 -105 B
assets/workspaceAuthStore-B4Y4BI5r.js (removed) 108 B 🟢 -108 B 🟢 -99 B 🟢 -109 B
assets/workspaceAuthStore-DkC868ir.js (new) 108 B 🔴 +108 B 🔴 +99 B 🔴 +105 B
assets/auth-C7LCSbON.js (removed) 105 B 🟢 -105 B 🟢 -96 B 🟢 -75 B
assets/auth-MaFeveRZ.js (new) 105 B 🔴 +105 B 🔴 +96 B 🔴 +75 B

Status: 6 added / 6 removed / 4 unchanged

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyHubPublishDialog-CmC0yFZC.js (new) 90 kB 🔴 +90 kB 🔴 +19.2 kB 🔴 +16.5 kB
assets/ComfyHubPublishDialog-DCHYJqxH.js (removed) 90 kB 🟢 -90 kB 🟢 -19.2 kB 🟢 -16.5 kB
assets/useShareDialog-BjVtjV_l.js (removed) 23.9 kB 🟢 -23.9 kB 🟢 -5.69 kB 🟢 -5.04 kB
assets/useShareDialog-D54GPqc2.js (new) 23.9 kB 🔴 +23.9 kB 🔴 +5.69 kB 🔴 +5.04 kB
assets/feedbackDialog-Coa7ACrf.js (new) 4.45 kB 🔴 +4.45 kB 🔴 +1.87 kB 🔴 +1.59 kB
assets/feedbackDialog-U9QkZtyu.js (removed) 4.45 kB 🟢 -4.45 kB 🟢 -1.87 kB 🟢 -1.59 kB
assets/useRangeEditor-BE4OZNM5.js (new) 3.23 kB 🔴 +3.23 kB 🔴 +1.13 kB 🔴 +1.02 kB
assets/useRangeEditor-BPY1ZFt3.js (removed) 3.23 kB 🟢 -3.23 kB 🟢 -1.13 kB 🟢 -1.02 kB
assets/ComfyHubPublishDialog-CstUW32W.js (new) 143 B 🔴 +143 B 🔴 +105 B 🔴 +91 B
assets/ComfyHubPublishDialog-Lf4zPPdl.js (removed) 143 B 🟢 -143 B 🟢 -105 B 🟢 -91 B
assets/useSubscriptionDialog-CQ_B1g3q.js (removed) 108 B 🟢 -108 B 🟢 -102 B 🟢 -91 B
assets/useSubscriptionDialog-qtTjpj_U.js (new) 108 B 🔴 +108 B 🔴 +102 B 🔴 +95 B

Status: 6 added / 6 removed / 1 unchanged

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-BLFuEEWH.js (new) 14.5 kB 🔴 +14.5 kB 🔴 +3.95 kB 🔴 +3.5 kB
assets/ComfyQueueButton-CEouznmj.js (removed) 14.5 kB 🟢 -14.5 kB 🟢 -3.96 kB 🟢 -3.51 kB
assets/useTerminalTabs-_YFDXY0D.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.69 kB 🔴 +3.27 kB
assets/useTerminalTabs-Dx3v_Nki.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.69 kB 🟢 -3.26 kB
assets/InviteMembersForm-2nfdK1Lf.js (removed) 8.2 kB 🟢 -8.2 kB 🟢 -2.72 kB 🟢 -2.44 kB
assets/InviteMembersForm-VsF-kk25.js (new) 8.2 kB 🔴 +8.2 kB 🔴 +2.72 kB 🔴 +2.43 kB
assets/SubscribeButton-_7ZReQFl.js (removed) 2.15 kB 🟢 -2.15 kB 🟢 -967 B 🟢 -846 B
assets/SubscribeButton-DhwWJc5X.js (new) 2.15 kB 🔴 +2.15 kB 🔴 +965 B 🔴 +844 B
assets/cloudFeedbackTopbarButton-BkOhadxp.js (new) 705 B 🔴 +705 B 🔴 +422 B 🔴 +360 B
assets/cloudFeedbackTopbarButton-Civ6hyWP.js (removed) 705 B 🟢 -705 B 🟢 -423 B 🟢 -360 B
assets/ComfyQueueButton-CHDt92qx.js (removed) 128 B 🟢 -128 B 🟢 -99 B 🟢 -91 B
assets/ComfyQueueButton-DQmdlqqx.js (new) 128 B 🔴 +128 B 🔴 +99 B 🔴 +93 B

Status: 6 added / 6 removed / 8 unchanged

Data & Services — 3.48 MB (baseline 3.48 MB) • 🔴 +76 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/settingStore-CG9uVmZG.js (new) 3.21 MB 🔴 +3.21 MB 🔴 +742 kB 🔴 +559 kB
assets/settingStore-D9dWMJIO.js (removed) 3.21 MB 🟢 -3.21 MB 🟢 -742 kB 🟢 -559 kB
assets/load3dService-CxRwIX9B.js (removed) 132 kB 🟢 -132 kB 🟢 -29.2 kB 🟢 -24.6 kB
assets/load3dService-YgBzIaIE.js (new) 132 kB 🔴 +132 kB 🔴 +29.2 kB 🔴 +24.6 kB
assets/api-C_jIU2Xm.js (new) 97.1 kB 🔴 +97.1 kB 🔴 +26.8 kB 🔴 +23 kB
assets/api-TFbc_E-2.js (removed) 97.1 kB 🟢 -97.1 kB 🟢 -26.8 kB 🟢 -23 kB
assets/workflowShareService-CmzjHg6l.js (new) 16.4 kB 🔴 +16.4 kB 🔴 +4.89 kB 🔴 +4.34 kB
assets/workflowShareService-CQPwL1hm.js (removed) 16.4 kB 🟢 -16.4 kB 🟢 -4.89 kB 🟢 -4.34 kB
assets/keybindingService-C6vKMLoF.js (new) 6.89 kB 🔴 +6.89 kB 🔴 +1.73 kB 🔴 +1.5 kB
assets/keybindingService-CC8YlAkj.js (removed) 6.89 kB 🟢 -6.89 kB 🟢 -1.73 kB 🟢 -1.5 kB
assets/releaseStore-DNZGxp5r.js (removed) 6.72 kB 🟢 -6.72 kB 🟢 -2.03 kB 🟢 -1.78 kB
assets/releaseStore-DTgdtA9P.js (new) 6.72 kB 🔴 +6.72 kB 🔴 +2.03 kB 🔴 +1.77 kB
assets/systemStatsStore-0rhV6PcM.js (new) 4.93 kB 🔴 +4.93 kB 🔴 +1.74 kB 🔴 +1.47 kB
assets/systemStatsStore-Z7Ub4VJF.js (removed) 4.93 kB 🟢 -4.93 kB 🟢 -1.74 kB 🟢 -1.47 kB
assets/userStore-8rPjK7Dn.js (removed) 2.38 kB 🟢 -2.38 kB 🟢 -896 B 🟢 -794 B
assets/userStore-DWdqvgy6.js (new) 2.38 kB 🔴 +2.38 kB 🔴 +896 B 🔴 +794 B
assets/audioService-CvNAUj0J.js (removed) 1.71 kB 🟢 -1.71 kB 🟢 -829 B 🟢 -724 B
assets/audioService-DCIJdMZG.js (new) 1.71 kB 🔴 +1.71 kB 🔴 +831 B 🔴 +725 B
assets/dialogService-Chqx4e8P.js (new) 98 B 🔴 +98 B 🔴 +97 B 🔴 +91 B
assets/dialogService-T9m-rDMu.js (removed) 98 B 🟢 -98 B 🟢 -97 B 🟢 -81 B
assets/releaseStore-DWexMJje.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +83 B
assets/releaseStore-XWNioqk_.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -88 B
assets/settingStore-0RsRFJwu.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +86 B
assets/settingStore-Bze96A-2.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -90 B
assets/assetsStore-Bk8H9ymC.js (new) 94 B 🔴 +94 B 🔴 +92 B 🔴 +87 B
assets/assetsStore-D7zmQBq6.js (removed) 94 B 🟢 -94 B 🟢 -92 B 🟢 -86 B
assets/api-B6cX-677.js (removed) 62 B 🟢 -62 B 🟢 -74 B 🟢 -66 B
assets/api-DIEAjC2E.js (new) 62 B 🔴 +62 B 🔴 +74 B 🔴 +66 B

Status: 14 added / 14 removed / 3 unchanged

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useConflictDetection-Cl_E6iUK.js (removed) 235 kB 🟢 -235 kB 🟢 -52.5 kB 🟢 -42.7 kB
assets/useConflictDetection-DXl1fnUq.js (new) 235 kB 🔴 +235 kB 🔴 +52.5 kB 🔴 +42.7 kB
assets/useLoad3d-C9A70hRx.js (new) 25.7 kB 🔴 +25.7 kB 🔴 +5.79 kB 🔴 +5.13 kB
assets/useLoad3d-DrYgS89y.js (removed) 25.7 kB 🟢 -25.7 kB 🟢 -5.79 kB 🟢 -5.15 kB
assets/useLoad3dViewer-CtQHcyAJ.js (removed) 21.2 kB 🟢 -21.2 kB 🟢 -4.98 kB 🟢 -4.36 kB
assets/useLoad3dViewer-luxFFQqN.js (new) 21.2 kB 🔴 +21.2 kB 🔴 +4.98 kB 🔴 +4.35 kB
assets/useImageCrop-bxkexGBR.js (new) 15 kB 🔴 +15 kB 🔴 +3.42 kB 🔴 +2.99 kB
assets/useImageCrop-D1zZjFQy.js (removed) 15 kB 🟢 -15 kB 🟢 -3.42 kB 🟢 -2.98 kB
assets/useDowngradeToPersonal-4gDPKHNl.js (removed) 8.85 kB 🟢 -8.85 kB 🟢 -2.53 kB 🟢 -2.17 kB
assets/useDowngradeToPersonal-TO8fxv1N.js (new) 8.85 kB 🔴 +8.85 kB 🔴 +2.53 kB 🔴 +2.17 kB
assets/useFeatureFlags-D3KlD94j.js (removed) 7.04 kB 🟢 -7.04 kB 🟢 -2.01 kB 🟢 -1.72 kB
assets/useFeatureFlags-DUJNmeq7.js (new) 7.04 kB 🔴 +7.04 kB 🔴 +2.01 kB 🔴 +1.71 kB
assets/assetPreviewUtil-BqLO-pR6.js (new) 2.35 kB 🔴 +2.35 kB 🔴 +971 B 🔴 +843 B
assets/assetPreviewUtil-CmBljjIA.js (removed) 2.35 kB 🟢 -2.35 kB 🟢 -971 B 🟢 -837 B
assets/useUpstreamValue-AI5KaswH.js (new) 1.99 kB 🔴 +1.99 kB 🔴 +755 B 🔴 +666 B
assets/useUpstreamValue-y1BbjJXq.js (removed) 1.99 kB 🟢 -1.99 kB 🟢 -756 B 🟢 -674 B
assets/useWorkspaceTierLabel-0DBrKAkQ.js (new) 1.93 kB 🔴 +1.93 kB 🔴 +814 B 🔴 +697 B
assets/useWorkspaceTierLabel-BmMM4PP5.js (removed) 1.93 kB 🟢 -1.93 kB 🟢 -813 B 🟢 -698 B
assets/subscriptionCheckoutUtil-B3x3g37a.js (new) 773 B 🔴 +773 B 🔴 +470 B 🔴 +405 B
assets/subscriptionCheckoutUtil-C3cn-wt7.js (removed) 773 B 🟢 -773 B 🟢 -472 B 🟢 -401 B
assets/useSessionCookie-B07oApVo.js (new) 652 B 🔴 +652 B 🔴 +336 B 🔴 +290 B
assets/useSessionCookie-SMbjz2yc.js (removed) 652 B 🟢 -652 B 🟢 -337 B 🟢 -293 B
assets/useLoad3d-Be8lg4Iq.js (new) 311 B 🔴 +311 B 🔴 +165 B 🔴 +150 B
assets/useLoad3d-DawI12ns.js (removed) 311 B 🟢 -311 B 🟢 -164 B 🟢 -148 B
assets/useSessionCookie-DRmzh_RV.js (removed) 101 B 🟢 -101 B 🟢 -86 B 🟢 -82 B
assets/useSessionCookie-DulqHHDj.js (new) 101 B 🔴 +101 B 🔴 +86 B 🔴 +81 B
assets/useFeatureFlags-BcLq_b8a.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +81 B
assets/useFeatureFlags-NaOYXWJU.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -80 B
assets/useLoad3dViewer-DD8wym5I.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +83 B
assets/useLoad3dViewer-DwIQtdUR.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -83 B
assets/useCurrentUser-Bn8YSMQ8.js (new) 94 B 🔴 +94 B 🔴 +95 B 🔴 +92 B
assets/useCurrentUser-C4W4-DRE.js (removed) 94 B 🟢 -94 B 🟢 -95 B 🟢 -96 B

Status: 16 added / 16 removed / 20 unchanged

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

External libraries and shared vendor chunks

Status: 16 unchanged

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

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-DWWAJv6R.js (new) 111 kB 🔴 +111 kB 🔴 +28.7 kB 🔴 +24.3 kB
assets/core-V1j-ZZOA.js (removed) 111 kB 🟢 -111 kB 🟢 -28.7 kB 🟢 -24.3 kB
assets/WidgetSelect-bpqI9z2u.js (new) 88.7 kB 🔴 +88.7 kB 🔴 +20.1 kB 🔴 +17.2 kB
assets/WidgetSelect-P2ed2Bgp.js (removed) 88.7 kB 🟢 -88.7 kB 🟢 -20.1 kB 🟢 -17.2 kB
assets/SubscriptionPanelContentWorkspace-B9v6T4Ez.js (new) 79 kB 🔴 +79 kB 🔴 +15.7 kB 🔴 +13.5 kB
assets/SubscriptionPanelContentWorkspace-DKhZElzX.js (removed) 79 kB 🟢 -79 kB 🟢 -15.7 kB 🟢 -13.5 kB
assets/Load3D-DD4HHPAX.js (new) 71.3 kB 🔴 +71.3 kB 🔴 +11.7 kB 🔴 +9.98 kB
assets/Load3D-i6MF-M6J.js (removed) 71.3 kB 🟢 -71.3 kB 🟢 -11.7 kB 🟢 -9.97 kB
assets/WidgetVideoEdit-DOVwl3cl.js (new) 63.4 kB 🔴 +63.4 kB 🔴 +14.6 kB 🔴 +12.9 kB
assets/WidgetVideoEdit-Ivs5NMrs.js (removed) 63.4 kB 🟢 -63.4 kB 🟢 -14.6 kB 🟢 -12.8 kB
assets/SubscriptionTransitionPreviewWorkspace-B76fD8Rk.js (new) 63.1 kB 🔴 +63.1 kB 🔴 +13 kB 🔴 +11.3 kB
assets/SubscriptionTransitionPreviewWorkspace-BOlxTtxO.js (removed) 63.1 kB 🟢 -63.1 kB 🟢 -13 kB 🟢 -11.3 kB
assets/WorkspaceSettingsPanelContent-0SsMEDRv.js (new) 61.5 kB 🔴 +61.5 kB 🔴 +13.1 kB 🔴 +11.5 kB
assets/WorkspaceSettingsPanelContent-B2JFLVKw.js (removed) 61.5 kB 🟢 -61.5 kB 🟢 -13.1 kB 🟢 -11.5 kB
assets/Preview3d-BbJqHqCJ.js (removed) 50.9 kB 🟢 -50.9 kB 🟢 -8.3 kB 🟢 -7.25 kB
assets/Preview3d-CF2cQwOo.js (new) 50.9 kB 🔴 +50.9 kB 🔴 +8.3 kB 🔴 +7.23 kB
assets/main-B0lp3nYA.js (removed) 49.3 kB 🟢 -49.3 kB 🟢 -14.4 kB 🟢 -12.5 kB
assets/main-bYX5Op30.js (new) 49.3 kB 🔴 +49.3 kB 🔴 +14.4 kB 🔴 +12.4 kB
assets/SubscriptionRequiredDialogContentUnified-BVxNb6dv.js (removed) 42.5 kB 🟢 -42.5 kB 🟢 -9.35 kB 🟢 -8.15 kB
assets/SubscriptionRequiredDialogContentUnified-YtCSrB9M.js (new) 42.5 kB 🔴 +42.5 kB 🔴 +9.35 kB 🔴 +8.15 kB
assets/WidgetBoundingBoxes-CmX_flFX.js (new) 33.7 kB 🔴 +33.7 kB 🔴 +9.15 kB 🔴 +8.13 kB
assets/WidgetBoundingBoxes-IDPItv4v.js (removed) 33.7 kB 🟢 -33.7 kB 🟢 -9.15 kB 🟢 -8.14 kB
assets/WidgetPainter-BAAzfy3j.js (removed) 32.6 kB 🟢 -32.6 kB 🟢 -7.86 kB 🟢 -6.98 kB
assets/WidgetPainter-Cr3qPQJa.js (new) 32.6 kB 🔴 +32.6 kB 🔴 +7.86 kB 🔴 +6.97 kB
assets/Load3dViewerContent-a_ID08Hl.js (removed) 30.8 kB 🟢 -30.8 kB 🟢 -6.27 kB 🟢 -5.44 kB
assets/Load3dViewerContent-D5yUxXGL.js (new) 30.8 kB 🔴 +30.8 kB 🔴 +6.27 kB 🔴 +5.43 kB
assets/SubscriptionRequiredDialogContent-C-bqXZIO.js (removed) 27 kB 🟢 -27 kB 🟢 -6.37 kB 🟢 -5.63 kB
assets/SubscriptionRequiredDialogContent-COmpEx2D.js (new) 27 kB 🔴 +27 kB 🔴 +6.38 kB 🔴 +5.62 kB
assets/SubscriptionRequiredDialogContentWorkspace-BxP0upax.js (removed) 25.1 kB 🟢 -25.1 kB 🟢 -5.8 kB 🟢 -5.1 kB
assets/SubscriptionRequiredDialogContentWorkspace-dwkzH79D.js (new) 25.1 kB 🔴 +25.1 kB 🔴 +5.8 kB 🔴 +5.1 kB
assets/load3d-BrkDq_ch.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +5.41 kB 🔴 +4.67 kB
assets/load3d-DTLmwjZ6.js (removed) 22.2 kB 🟢 -22.2 kB 🟢 -5.4 kB 🟢 -4.67 kB
assets/CurrentUserPopoverWorkspace-DryQz6Jz.js (new) 21.4 kB 🔴 +21.4 kB 🔴 +4.83 kB 🔴 +4.3 kB
assets/CurrentUserPopoverWorkspace-h_RZRTNd.js (removed) 21.4 kB 🟢 -21.4 kB 🟢 -4.83 kB 🟢 -4.31 kB
assets/SignInContent-DeoHjNm3.js (removed) 20.2 kB 🟢 -20.2 kB 🟢 -5.1 kB 🟢 -4.45 kB
assets/SignInContent-DtgTGiXF.js (new) 20.2 kB 🔴 +20.2 kB 🔴 +5.1 kB 🔴 +4.46 kB
assets/CreditsTile-B9Mu-W_A.js (new) 19.2 kB 🔴 +19.2 kB 🔴 +4.83 kB 🔴 +4.24 kB
assets/CreditsTile-BtQY2mym.js (removed) 19.2 kB 🟢 -19.2 kB 🟢 -4.83 kB 🟢 -4.24 kB
assets/WidgetRecordAudio-BkaPVJrE.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +4.59 kB 🔴 +4.1 kB
assets/WidgetRecordAudio-PYiBd3VQ.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -4.6 kB 🟢 -4.1 kB
assets/WidgetInputNumber-B0OCjdFO.js (removed) 13.9 kB 🟢 -13.9 kB 🟢 -3.63 kB 🟢 -3.21 kB
assets/WidgetInputNumber-CIOTTUOc.js (new) 13.9 kB 🔴 +13.9 kB 🔴 +3.63 kB 🔴 +3.21 kB
assets/WidgetRange-B-7t46cN.js (new) 13.7 kB 🔴 +13.7 kB 🔴 +3.53 kB 🔴 +3.13 kB
assets/WidgetRange-DHRCZslV.js (removed) 13.7 kB 🟢 -13.7 kB 🟢 -3.54 kB 🟢 -3.12 kB
assets/WaveAudioPlayer-ByLnQNpF.js (removed) 12.8 kB 🟢 -12.8 kB 🟢 -3.46 kB 🟢 -3.04 kB
assets/WaveAudioPlayer-xtps5R9M.js (new) 12.8 kB 🔴 +12.8 kB 🔴 +3.46 kB 🔴 +3.04 kB
assets/WidgetCurve-B0oqZna7.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +3.47 kB 🔴 +3.14 kB
assets/WidgetCurve-DJ5KSxmv.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -3.47 kB 🟢 -3.15 kB
assets/TeamWorkspacesDialogContent-Dl5K2QUH.js (new) 10.3 kB 🔴 +10.3 kB 🔴 +2.97 kB 🔴 +2.63 kB
assets/TeamWorkspacesDialogContent-pv-uscgK.js (removed) 10.3 kB 🟢 -10.3 kB 🟢 -2.97 kB 🟢 -2.63 kB
assets/onboardingCloudRoutes-9Rab5Po2.js (removed) 9.12 kB 🟢 -9.12 kB 🟢 -2.79 kB 🟢 -2.38 kB
assets/onboardingCloudRoutes-wk7uvjSR.js (new) 9.12 kB 🔴 +9.12 kB 🔴 +2.79 kB 🔴 +2.39 kB
assets/Load3DConfiguration-DNDngeo7.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -2.61 kB 🟢 -2.3 kB
assets/Load3DConfiguration-DU89nkJ-.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +2.61 kB 🔴 +2.3 kB
assets/WidgetImageCrop-DJNBzTkH.js (new) 8.49 kB 🔴 +8.49 kB 🔴 +2.65 kB 🔴 +2.33 kB
assets/WidgetImageCrop-PNa46vQF.js (removed) 8.49 kB 🟢 -8.49 kB 🟢 -2.65 kB 🟢 -2.34 kB
assets/SetMemberCreditLimitDialogContent-Bjsrooz0.js (new) 8.47 kB 🔴 +8.47 kB 🔴 +2.34 kB 🔴 +2.05 kB
assets/SetMemberCreditLimitDialogContent-CWe1OJ3k.js (removed) 8.47 kB 🟢 -8.47 kB 🟢 -2.34 kB 🟢 -2.05 kB
assets/nodeTemplates-B1TSllsf.js (removed) 8.28 kB 🟢 -8.28 kB 🟢 -2.84 kB 🟢 -2.5 kB
assets/nodeTemplates-CJD_V16f.js (new) 8.28 kB 🔴 +8.28 kB 🔴 +2.84 kB 🔴 +2.5 kB
assets/NightlySurveyController-a7UAWTJj.js (removed) 7.5 kB 🟢 -7.5 kB 🟢 -2.55 kB 🟢 -2.24 kB
assets/NightlySurveyController-zFLUhkmH.js (new) 7.5 kB 🔴 +7.5 kB 🔴 +2.55 kB 🔴 +2.25 kB
assets/CloudRunButtonWrapper-BM8DAUtg.js (new) 6.82 kB 🔴 +6.82 kB 🔴 +2.17 kB 🔴 +1.91 kB
assets/CloudRunButtonWrapper-CYHkUWeY.js (removed) 6.82 kB 🟢 -6.82 kB 🟢 -2.18 kB 🟢 -1.91 kB
assets/WidgetWithControl-D3oUcoWw.js (new) 6.37 kB 🔴 +6.37 kB 🔴 +2.59 kB 🔴 +2.27 kB
assets/WidgetWithControl-Df8bw2kp.js (removed) 6.37 kB 🟢 -6.37 kB 🟢 -2.6 kB 🟢 -2.32 kB
assets/CancelSubscriptionDialogContent-AZhWOVkL.js (new) 5.97 kB 🔴 +5.97 kB 🔴 +1.98 kB 🔴 +1.75 kB
assets/CancelSubscriptionDialogContent-C8aSSzUj.js (removed) 5.97 kB 🟢 -5.97 kB 🟢 -1.98 kB 🟢 -1.75 kB
assets/load3dPreviewExtensions-BNblnJ7q.js (new) 5.88 kB 🔴 +5.88 kB 🔴 +1.81 kB 🔴 +1.59 kB
assets/load3dPreviewExtensions-DA9FpjwG.js (removed) 5.88 kB 🟢 -5.88 kB 🟢 -1.81 kB 🟢 -1.59 kB
assets/missingModelDownload-By239tkz.js (new) 5.88 kB 🔴 +5.88 kB 🔴 +2.07 kB 🔴 +1.81 kB
assets/missingModelDownload-FjBx1VGL.js (removed) 5.88 kB 🟢 -5.88 kB 🟢 -2.08 kB 🟢 -1.81 kB
assets/launchCancellationFlow-BGLpmCPf.js (new) 5.18 kB 🔴 +5.18 kB 🔴 +1.78 kB 🔴 +1.56 kB
assets/launchCancellationFlow-BKLnO6wQ.js (removed) 5.18 kB 🟢 -5.18 kB 🟢 -1.78 kB 🟢 -1.56 kB
assets/CreateWorkspaceDialogContent-BVEUbEyX.js (new) 5.12 kB 🔴 +5.12 kB 🔴 +1.79 kB 🔴 +1.55 kB
assets/CreateWorkspaceDialogContent-Diwz9B2v.js (removed) 5.12 kB 🟢 -5.12 kB 🟢 -1.79 kB 🟢 -1.55 kB
assets/ChangeMemberRoleDialogContent-D3Wym7wJ.js (new) 4.97 kB 🔴 +4.97 kB 🔴 +1.64 kB 🔴 +1.42 kB
assets/ChangeMemberRoleDialogContent-JAPTdzvN.js (removed) 4.97 kB 🟢 -4.97 kB 🟢 -1.64 kB 🟢 -1.42 kB
assets/InviteMemberDialogContent-B6sc2kor.js (removed) 4.96 kB 🟢 -4.96 kB 🟢 -1.64 kB 🟢 -1.43 kB
assets/InviteMemberDialogContent-BMZoS2UW.js (new) 4.96 kB 🔴 +4.96 kB 🔴 +1.64 kB 🔴 +1.42 kB
assets/EditWorkspaceDialogContent-DRvdfi_x.js (new) 4.93 kB 🔴 +4.93 kB 🔴 +1.76 kB 🔴 +1.53 kB
assets/EditWorkspaceDialogContent-TIvxuS-z.js (removed) 4.93 kB 🟢 -4.93 kB 🟢 -1.76 kB 🟢 -1.53 kB
assets/WidgetTextarea-B59sPdZQ.js (new) 4.81 kB 🔴 +4.81 kB 🔴 +1.87 kB 🔴 +1.63 kB
assets/WidgetTextarea-Q__5Et1W.js (removed) 4.81 kB 🟢 -4.81 kB 🟢 -1.87 kB 🟢 -1.63 kB
assets/saveMesh-be4HnYQu.js (removed) 4.76 kB 🟢 -4.76 kB 🟢 -1.52 kB 🟢 -1.34 kB
assets/saveMesh-PXk7wE8B.js (new) 4.76 kB 🔴 +4.76 kB 🔴 +1.52 kB 🔴 +1.34 kB
assets/WorkspacePanelContent-CnZZpKy6.js (removed) 4.74 kB 🟢 -4.74 kB 🟢 -1.63 kB 🟢 -1.44 kB
assets/WorkspacePanelContent-n-IlVhSu.js (new) 4.74 kB 🔴 +4.74 kB 🔴 +1.63 kB 🔴 +1.43 kB
assets/ValueControlPopover-B1SBu5ej.js (removed) 4.49 kB 🟢 -4.49 kB 🟢 -1.55 kB 🟢 -1.38 kB
assets/ValueControlPopover-DMDs7DdU.js (new) 4.49 kB 🔴 +4.49 kB 🔴 +1.55 kB 🔴 +1.38 kB
assets/DeleteWorkspaceDialogContent-Ck1EzbE0.js (removed) 3.84 kB 🟢 -3.84 kB 🟢 -1.44 kB 🟢 -1.26 kB
assets/DeleteWorkspaceDialogContent-eyow6IR7.js (new) 3.84 kB 🔴 +3.84 kB 🔴 +1.44 kB 🔴 +1.24 kB
assets/RemoveMemberDialogContent-CEZkX-Rj.js (removed) 3.76 kB 🟢 -3.76 kB 🟢 -1.38 kB 🟢 -1.22 kB
assets/RemoveMemberDialogContent-DEiEM0fZ.js (new) 3.76 kB 🔴 +3.76 kB 🔴 +1.38 kB 🔴 +1.2 kB
assets/RevokeInviteDialogContent-BgxLcZvO.js (removed) 3.67 kB 🟢 -3.67 kB 🟢 -1.39 kB 🟢 -1.22 kB
assets/RevokeInviteDialogContent-DuOzh36N.js (new) 3.67 kB 🔴 +3.67 kB 🔴 +1.39 kB 🔴 +1.21 kB
assets/LeaveWorkspaceDialogContent-CkuAlppp.js (removed) 3.67 kB 🟢 -3.67 kB 🟢 -1.38 kB 🟢 -1.19 kB
assets/LeaveWorkspaceDialogContent-dv6ikIg6.js (new) 3.67 kB 🔴 +3.67 kB 🔴 +1.38 kB 🔴 +1.19 kB
assets/InviteMemberUpsellDialogContent-BmrrzsH8.js (removed) 3.47 kB 🟢 -3.47 kB 🟢 -1.24 kB 🟢 -1.07 kB
assets/InviteMemberUpsellDialogContent-DsYGjmaq.js (new) 3.47 kB 🔴 +3.47 kB 🔴 +1.24 kB 🔴 +1.06 kB
assets/workspaceCheckoutTelemetry-DGA3tUlh.js (new) 3.4 kB 🔴 +3.4 kB 🔴 +1.53 kB 🔴 +1.33 kB
assets/workspaceCheckoutTelemetry-DT-BYqR7.js (removed) 3.4 kB 🟢 -3.4 kB 🟢 -1.52 kB 🟢 -1.33 kB
assets/Media3DTop-DpvhQe_T.js (new) 3.21 kB 🔴 +3.21 kB 🔴 +1.26 kB 🔴 +1.1 kB
assets/Media3DTop-KEmR8XZJ.js (removed) 3.21 kB 🟢 -3.21 kB 🟢 -1.26 kB 🟢 -1.1 kB
assets/GlobalToast-eHFCa30d.js (removed) 3 kB 🟢 -3 kB 🟢 -1.22 kB 🟢 -1.04 kB
assets/GlobalToast-VwOS15kw.js (new) 3 kB 🔴 +3 kB 🔴 +1.22 kB 🔴 +1.04 kB
assets/load3dAdvanced-BFnNma9A.js (new) 2.82 kB 🔴 +2.82 kB 🔴 +1.09 kB 🔴 +956 B
assets/load3dAdvanced-DINMOrqN.js (removed) 2.82 kB 🟢 -2.82 kB 🟢 -1.09 kB 🟢 -958 B
assets/SubscribeToRun-uQs6tHNY.js (new) 2.39 kB 🔴 +2.39 kB 🔴 +1.03 kB 🔴 +902 B
assets/SubscribeToRun-XctQUg0X.js (removed) 2.39 kB 🟢 -2.39 kB 🟢 -1.03 kB 🟢 -903 B
assets/MediaAudioTop-ByIaGekN.js (new) 1.62 kB 🔴 +1.62 kB 🔴 +806 B 🔴 +667 B
assets/MediaAudioTop-v2kvREzf.js (removed) 1.62 kB 🟢 -1.62 kB 🟢 -805 B 🟢 -668 B
assets/cloudSessionCookie-BAN0h7er.js (removed) 933 B 🟢 -933 B 🟢 -432 B 🟢 -377 B
assets/cloudSessionCookie-GYsy6GY1.js (new) 933 B 🔴 +933 B 🔴 +433 B 🔴 +378 B
assets/cloudBadges-CG3gQdUJ.js (new) 922 B 🔴 +922 B 🔴 +513 B 🔴 +461 B
assets/cloudBadges-Cqxl3cD4.js (removed) 922 B 🟢 -922 B 🟢 -514 B 🟢 -444 B
assets/Load3DAdvanced-BvlWbeUu.js (new) 761 B 🔴 +761 B 🔴 +423 B 🔴 +359 B
assets/Load3DAdvanced-CAbfXgWI.js (removed) 761 B 🟢 -761 B 🟢 -422 B 🟢 -358 B
assets/nightlyBadges-C_uJeS02.js (removed) 411 B 🟢 -411 B 🟢 -275 B 🟢 -275 B
assets/nightlyBadges-Cbwif8QB.js (new) 411 B 🔴 +411 B 🔴 +273 B 🔴 +264 B
assets/missingModelDownload-CEiH-SG9.js (new) 371 B 🔴 +371 B 🔴 +204 B 🔴 +174 B
assets/missingModelDownload-DH_PBoIS.js (removed) 371 B 🟢 -371 B 🟢 -203 B 🟢 -174 B
assets/Load3dViewerContent-b10UStmS.js (removed) 137 B 🟢 -137 B 🟢 -103 B 🟢 -117 B
assets/Load3dViewerContent-CwZEhJyP.js (new) 137 B 🔴 +137 B 🔴 +103 B 🔴 +92 B
assets/Load3DAdvanced-BIN8V4Le.js (removed) 122 B 🟢 -122 B 🟢 -97 B 🟢 -88 B
assets/Load3DAdvanced-NEbL4Sln.js (new) 122 B 🔴 +122 B 🔴 +97 B 🔴 +88 B
assets/WidgetLegacy-5RvzZM0O.js (new) 117 B 🔴 +117 B 🔴 +106 B 🔴 +102 B
assets/WidgetLegacy-B_ruQGUU.js (removed) 117 B 🟢 -117 B 🟢 -106 B 🟢 -103 B
assets/workflowDraftStoreV2-DCiw8cPX.js (new) 112 B 🔴 +112 B 🔴 +101 B 🔴 +108 B
assets/workflowDraftStoreV2-DtYFcT5K.js (removed) 112 B 🟢 -112 B 🟢 -101 B 🟢 -107 B
assets/Load3D-BXudrq2W.js (new) 98 B 🔴 +98 B 🔴 +89 B 🔴 +84 B
assets/Load3D-ULVx7pKh.js (removed) 98 B 🟢 -98 B 🟢 -89 B 🟢 -81 B
assets/changeTracker-Cj7gAxUf.js (new) 91 B 🔴 +91 B 🔴 +93 B 🔴 +83 B
assets/changeTracker-CNHUZgqF.js (removed) 91 B 🟢 -91 B 🟢 -93 B 🟢 -86 B

Status: 67 added / 67 removed / 214 unchanged

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.4 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 55.1 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.4 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 50.7 MB heap
large-graph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.3 MB heap
large-graph-pan: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 56.5 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.5 MB heap
minimap-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.6 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 51.0 MB heap
subgraph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.2 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 51.3 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 121ms TBT · 94.6 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.8 MB heap
vue-large-graph-idle: · 58.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 158.2 MB heap
vue-large-graph-pan: · 57.1 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 5ms TBT · 159.5 MB heap
workflow-execution: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.9 MB heap

⚠️ 2 regressions detected

Show regressions
Metric Baseline PR (median) Δ Sig
canvas-idle: task duration 519ms 483ms -7% ⚠️ z=2.8
canvas-zoom-sweep: avg frame time 17ms 17ms +0% ⚠️ z=2.2
All metrics
Metric Baseline PR (median) Δ Sig
canvas-idle: avg frame time 17ms 17ms -0% z=-0.5
canvas-idle: p95 frame time 17ms 17ms +0%
canvas-idle: layout duration 0ms 0ms +0%
canvas-idle: style recalc duration 8ms 6ms -25% z=-5.2
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 9 10 +6% z=-2.9
canvas-idle: task duration 519ms 483ms -7% ⚠️ z=2.8
canvas-idle: script duration 23ms 15ms -33% z=-4.5
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 66.4 MB 66.4 MB -0%
canvas-idle: DOM nodes 18 19 +6% z=-2.8
canvas-idle: event listeners 4 5 +25% z=-1.4
canvas-mouse-sweep: avg frame time 17ms 17ms +0% z=0.2
canvas-mouse-sweep: p95 frame time 17ms 17ms -1%
canvas-mouse-sweep: layout duration 4ms 3ms -25% z=-2.5
canvas-mouse-sweep: style recalc duration 47ms 29ms -38% z=-4.4
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 80 73 -9% z=-2.6
canvas-mouse-sweep: task duration 1011ms 747ms -26% z=-2.0
canvas-mouse-sweep: script duration 135ms 97ms -29% z=-6.0
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 50.4 MB 55.1 MB +9%
canvas-mouse-sweep: DOM nodes -281 -112 -60% z=-67.2
canvas-mouse-sweep: event listeners -153 -72 -53% z=-19.2
canvas-zoom-sweep: avg frame time 17ms 17ms +0% ⚠️ z=2.2
canvas-zoom-sweep: p95 frame time 17ms 17ms +0%
canvas-zoom-sweep: layout duration 1ms 1ms +2% z=0.1
canvas-zoom-sweep: style recalc duration 18ms 15ms -19% z=-3.0
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 31 31 +0% z=-0.6
canvas-zoom-sweep: task duration 444ms 339ms -24% z=0.5
canvas-zoom-sweep: script duration 27ms 18ms -35% z=-3.2
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 69.4 MB 69.4 MB -0%
canvas-zoom-sweep: DOM nodes 75 79 +5% z=-0.9
canvas-zoom-sweep: event listeners 19 20 +5% z=-0.7
dom-widget-clipping: avg frame time 17ms 17ms -0% z=0.1
dom-widget-clipping: p95 frame time 17ms 17ms +1%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 8ms 6ms -21% z=-4.9
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 10 12 +15% z=-3.2
dom-widget-clipping: task duration 398ms 324ms -19% z=-2.5
dom-widget-clipping: script duration 62ms 48ms -24% z=-6.2
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 50.6 MB 50.7 MB +0%
dom-widget-clipping: DOM nodes 16 19 +19% z=-2.2
dom-widget-clipping: event listeners 2 0 -100% 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 7ms -22% z=-5.3
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 796ms 606ms -24% z=1.2
large-graph-idle: script duration 126ms 77ms -39% z=-2.4
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 61.7 MB 64.3 MB +4%
large-graph-idle: DOM nodes -283 -282 -1% z=-338.8
large-graph-idle: event listeners -179 -149 -17% z=-28.7
large-graph-pan: avg frame time 17ms 17ms +0% z=0.3
large-graph-pan: p95 frame time 17ms 17ms +0%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 14ms 12ms -18% z=-6.8
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 1386ms 1094ms -21% z=0.3
large-graph-pan: script duration 445ms 344ms -23% z=-3.2
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 58.9 MB 56.5 MB -4%
large-graph-pan: DOM nodes -284 -284 +0% z=-183.7
large-graph-pan: event listeners -149 -163 +9% z=-202.8
large-graph-zoom: avg frame time 17ms 17ms -0%
large-graph-zoom: p95 frame time 17ms 17ms +0%
large-graph-zoom: layout duration 8ms 7ms -2%
large-graph-zoom: style recalc duration 14ms 14ms -4%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 64 66 +2%
large-graph-zoom: task duration 1603ms 1248ms -22%
large-graph-zoom: script duration 553ms 398ms -28%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 60.8 MB 67.5 MB +11%
large-graph-zoom: DOM nodes -288 -137 -53%
large-graph-zoom: event listeners -153 -73 -53%
minimap-idle: avg frame time 17ms 17ms -0% z=-0.4
minimap-idle: p95 frame time 17ms 17ms -0%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 9ms 6ms -30% z=-4.3
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 8 10 +19% z=-0.1
minimap-idle: task duration 825ms 594ms -28% z=1.4
minimap-idle: script duration 130ms 74ms -43% z=-2.5
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 64.3 MB 64.6 MB +0%
minimap-idle: DOM nodes -285 -283 -1% z=-220.5
minimap-idle: event listeners -149 -164 +10% z=-255.3
subgraph-dom-widget-clipping: avg frame time 17ms 17ms -0% z=0.1
subgraph-dom-widget-clipping: p95 frame time 17ms 17ms +0%
subgraph-dom-widget-clipping: layout duration 0ms 0ms +0%
subgraph-dom-widget-clipping: style recalc duration 11ms 9ms -22% z=-4.3
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 47 47 +0% z=-1.6
subgraph-dom-widget-clipping: task duration 420ms 358ms -15% z=-1.1
subgraph-dom-widget-clipping: script duration 125ms 104ms -17% z=-3.8
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 51.2 MB 51.0 MB -0%
subgraph-dom-widget-clipping: DOM nodes 20 20 +0% z=-1.9
subgraph-dom-widget-clipping: event listeners 8 6 -25% z=-1.7
subgraph-idle: avg frame time 17ms 17ms -0% z=-0.2
subgraph-idle: p95 frame time 17ms 17ms +1%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 10ms 6ms -36% z=-5.1
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 10 10 -5% z=-2.1
subgraph-idle: task duration 508ms 420ms -17% z=1.6
subgraph-idle: script duration 18ms 12ms -31% z=-3.0
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 66.1 MB 66.2 MB +0%
subgraph-idle: DOM nodes 18 19 +6% z=-1.9
subgraph-idle: event listeners 4 6 +50% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms -0% z=-0.5
subgraph-mouse-sweep: p95 frame time 17ms 17ms +0%
subgraph-mouse-sweep: layout duration 5ms 4ms -18% z=-3.0
subgraph-mouse-sweep: style recalc duration 39ms 30ms -24% z=-3.8
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 77 76 -2% z=-2.4
subgraph-mouse-sweep: task duration 824ms 690ms -16% z=-1.1
subgraph-mouse-sweep: script duration 104ms 72ms -31% z=-4.4
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 44.7 MB 51.3 MB +15%
subgraph-mouse-sweep: DOM nodes -279 -110 -61% z=-79.0
subgraph-mouse-sweep: event listeners -153 -74 -52% variance too high
subgraph-transition-enter: avg frame time 17ms 17ms -0%
subgraph-transition-enter: p95 frame time 17ms 17ms +0%
subgraph-transition-enter: layout duration 13ms 10ms -28%
subgraph-transition-enter: style recalc duration 32ms 26ms -20%
subgraph-transition-enter: layout count 14 14 +0%
subgraph-transition-enter: style recalc count 18 18 +0%
subgraph-transition-enter: task duration 893ms 794ms -11%
subgraph-transition-enter: script duration 41ms 28ms -31%
subgraph-transition-enter: TBT 141ms 121ms -14%
subgraph-transition-enter: heap used 94.7 MB 94.6 MB -0%
subgraph-transition-enter: DOM nodes 13673 13673 +0%
subgraph-transition-enter: event listeners 2375 2373 -0%
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 38ms 35ms -10%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 250 250 -0%
viewport-pan-sweep: task duration 4888ms 3840ms -21%
viewport-pan-sweep: script duration 1498ms 1118ms -25%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 70.0 MB 66.8 MB -5%
viewport-pan-sweep: DOM nodes -281 -282 +0%
viewport-pan-sweep: event listeners -131 -133 +2%
vue-large-graph-idle: avg frame time 18ms 17ms -3%
vue-large-graph-idle: p95 frame time 17ms 17ms +1%
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 17271ms 13215ms -23%
vue-large-graph-idle: script duration 580ms 472ms -19%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 158.7 MB 158.2 MB -0%
vue-large-graph-idle: DOM nodes -8312 -8312 +0%
vue-large-graph-idle: event listeners -16387 -16390 +0%
vue-large-graph-pan: avg frame time 18ms 17ms -2%
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 14ms -22%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 143 85 -41%
vue-large-graph-pan: task duration 21016ms 15945ms -24%
vue-large-graph-pan: script duration 886ms 763ms -14%
vue-large-graph-pan: TBT 257ms 5ms -98%
vue-large-graph-pan: heap used 160.6 MB 159.5 MB -1%
vue-large-graph-pan: DOM nodes -8312 -8312 +0%
vue-large-graph-pan: event listeners -16383 -16387 +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 +64% z=-3.9
workflow-execution: style recalc duration 21ms 19ms -8% z=-2.4
workflow-execution: layout count 3 4 +17% z=-2.7
workflow-execution: style recalc count 11 15 +32% z=-1.6
workflow-execution: task duration 118ms 113ms -4% z=-0.9
workflow-execution: script duration 11ms 9ms -11% z=-6.6
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 65.2 MB 64.9 MB -0%
workflow-execution: DOM nodes 121 129 +6% z=-4.5
workflow-execution: event listeners 97 97 +0% z=10.3
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-08-07T00:43:50.920Z",
  "gitSha": "9303fcfb599f25d29f551d7e9668a711ded37232",
  "branch": "glary/credits-e2e-tests",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2073.7719999999626,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.672999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 546.636,
      "heapDeltaBytes": 5351744,
      "heapUsedBytes": 69387484,
      "domNodes": 20,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 16.085,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 1999.9070000000074,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 5.6659999999999995,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 418.50899999999996,
      "heapDeltaBytes": 5698284,
      "heapUsedBytes": 69759004,
      "domNodes": 18,
      "jsHeapTotalBytes": 24379392,
      "scriptDurationMs": 14.373999999999999,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1758.8010000000054,
      "styleRecalcs": 72,
      "styleRecalcDurationMs": 27.679000000000002,
      "layouts": 12,
      "layoutDurationMs": 3.0080000000000005,
      "taskDurationMs": 758.283,
      "heapDeltaBytes": -11741504,
      "heapUsedBytes": 52212932,
      "domNodes": -278,
      "jsHeapTotalBytes": 24358912,
      "scriptDurationMs": 93.10499999999999,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1776.4009999999644,
      "styleRecalcs": 73,
      "styleRecalcDurationMs": 29.849999999999998,
      "layouts": 12,
      "layoutDurationMs": 3.2429999999999994,
      "taskDurationMs": 736.344,
      "heapDeltaBytes": -653908,
      "heapUsedBytes": 63336712,
      "domNodes": 55,
      "jsHeapTotalBytes": 26214400,
      "scriptDurationMs": 100.137,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1725.7260000000088,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 13.793,
      "layouts": 6,
      "layoutDurationMs": 0.6049999999999999,
      "taskDurationMs": 338.69000000000005,
      "heapDeltaBytes": 8523216,
      "heapUsedBytes": 72797536,
      "domNodes": 78,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 16.206000000000003,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1740.63000000001,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 15.213,
      "layouts": 6,
      "layoutDurationMs": 0.694,
      "taskDurationMs": 339.091,
      "heapDeltaBytes": 8596176,
      "heapUsedBytes": 72668844,
      "domNodes": 79,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 18.891,
      "eventListeners": 21,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 525.148999999999,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 6.279,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 310.368,
      "heapDeltaBytes": -11214596,
      "heapUsedBytes": 53065092,
      "domNodes": 20,
      "jsHeapTotalBytes": 25952256,
      "scriptDurationMs": 44.319,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66666666666665,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 546.3510000000724,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 5.732999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 336.6940000000001,
      "heapDeltaBytes": -11073220,
      "heapUsedBytes": 53160820,
      "domNodes": 18,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 50.717999999999996,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2027.6619999999639,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.381999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 611.7429999999999,
      "heapDeltaBytes": 6762736,
      "heapUsedBytes": 67142912,
      "domNodes": -282,
      "jsHeapTotalBytes": 3776512,
      "scriptDurationMs": 77.485,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2036.9120000000294,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.892000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 600.6629999999999,
      "heapDeltaBytes": 7960468,
      "heapUsedBytes": 67688444,
      "domNodes": -281,
      "jsHeapTotalBytes": 3514368,
      "scriptDurationMs": 77.27300000000001,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2090.7230000000254,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 11.065000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1067.8780000000002,
      "heapDeltaBytes": -5096916,
      "heapUsedBytes": 55732572,
      "domNodes": -284,
      "jsHeapTotalBytes": 5873664,
      "scriptDurationMs": 331.429,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2108.296999999993,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 12.637000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1120.003,
      "heapDeltaBytes": 1822264,
      "heapUsedBytes": 62700872,
      "domNodes": -284,
      "jsHeapTotalBytes": 5279744,
      "scriptDurationMs": 356.89300000000003,
      "eventListeners": -147,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3085.1350000000366,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 13.888000000000002,
      "layouts": 60,
      "layoutDurationMs": 7.258,
      "taskDurationMs": 1225.537,
      "heapDeltaBytes": 21631280,
      "heapUsedBytes": 86271944,
      "domNodes": 14,
      "jsHeapTotalBytes": 7864320,
      "scriptDurationMs": 396.17,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3117.894999999976,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 13.780999999999999,
      "layouts": 60,
      "layoutDurationMs": 7.609,
      "taskDurationMs": 1270.731,
      "heapDeltaBytes": -6871308,
      "heapUsedBytes": 55236400,
      "domNodes": -287,
      "jsHeapTotalBytes": 6135808,
      "scriptDurationMs": 399.817,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2045.9750000000554,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 5.920000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 592.8960000000001,
      "heapDeltaBytes": 7790272,
      "heapUsedBytes": 68657532,
      "domNodes": -283,
      "jsHeapTotalBytes": 2727936,
      "scriptDurationMs": 75.531,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2009.636999999998,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.105000000000003,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 595.845,
      "heapDeltaBytes": 6494568,
      "heapUsedBytes": 66757132,
      "domNodes": -282,
      "jsHeapTotalBytes": 3252224,
      "scriptDurationMs": 72.19,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 558.1919999999627,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 8.582999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 358.133,
      "heapDeltaBytes": -10579508,
      "heapUsedBytes": 53622116,
      "domNodes": 20,
      "jsHeapTotalBytes": 25952256,
      "scriptDurationMs": 104.571,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 560.1100000000088,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 8.679,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 356.96000000000004,
      "heapDeltaBytes": -10788472,
      "heapUsedBytes": 53410044,
      "domNodes": 20,
      "jsHeapTotalBytes": 25952256,
      "scriptDurationMs": 103.42200000000001,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66666666666665,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1999.3650000000116,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 5.823,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 405.959,
      "heapDeltaBytes": 5440904,
      "heapUsedBytes": 69641204,
      "domNodes": 18,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 12.279000000000002,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2004.4469999999137,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.968,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 435.011,
      "heapDeltaBytes": 5148360,
      "heapUsedBytes": 69266080,
      "domNodes": 20,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 12.427,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1713.9389999999821,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 29.636000000000003,
      "layouts": 16,
      "layoutDurationMs": 3.8729999999999998,
      "taskDurationMs": 708.413,
      "heapDeltaBytes": -16868276,
      "heapUsedBytes": 47184964,
      "domNodes": -280,
      "jsHeapTotalBytes": 23572480,
      "scriptDurationMs": 71.494,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.660000000000007,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1709.8150000000487,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 29.886000000000003,
      "layouts": 16,
      "layoutDurationMs": 3.6060000000000003,
      "taskDurationMs": 670.5980000000001,
      "heapDeltaBytes": -3891796,
      "heapUsedBytes": 60401460,
      "domNodes": 61,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 71.97200000000001,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1216.179000000011,
      "styleRecalcs": 18,
      "styleRecalcDurationMs": 25.871999999999993,
      "layouts": 14,
      "layoutDurationMs": 9.645,
      "taskDurationMs": 793.62,
      "heapDeltaBytes": 30787828,
      "heapUsedBytes": 99155032,
      "domNodes": 13673,
      "jsHeapTotalBytes": 15466496,
      "scriptDurationMs": 27.99599999999999,
      "eventListeners": 2373,
      "totalBlockingTimeMs": 121,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8147.650999999996,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 32.842,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3849.8639999999996,
      "heapDeltaBytes": 11396528,
      "heapUsedBytes": 70818764,
      "domNodes": -281,
      "jsHeapTotalBytes": 4755456,
      "scriptDurationMs": 1131.3490000000002,
      "eventListeners": -133,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8149.292999999943,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 36.278,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3829.304,
      "heapDeltaBytes": 9972356,
      "heapUsedBytes": 69311500,
      "domNodes": -283,
      "jsHeapTotalBytes": 4231168,
      "scriptDurationMs": 1104.8760000000002,
      "eventListeners": -133,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 13508.020999999986,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 13487.771,
      "heapDeltaBytes": -41906520,
      "heapUsedBytes": 165941216,
      "domNodes": -8312,
      "jsHeapTotalBytes": -8851456,
      "scriptDurationMs": 476.84700000000004,
      "eventListeners": -16391,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.219999999999953,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12959.89300000008,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12943.176,
      "heapDeltaBytes": -40198040,
      "heapUsedBytes": 165756424,
      "domNodes": -8312,
      "jsHeapTotalBytes": -9904128,
      "scriptDurationMs": 466.45000000000005,
      "eventListeners": -16389,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 16201.855000000023,
      "styleRecalcs": 92,
      "styleRecalcDurationMs": 14.085999999999988,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 16147.466999999999,
      "heapDeltaBytes": -28378764,
      "heapUsedBytes": 177233812,
      "domNodes": -8312,
      "jsHeapTotalBytes": -9449472,
      "scriptDurationMs": 768.875,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 10,
      "frameDurationMs": 17.220000000000073,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 15769.854999999894,
      "styleRecalcs": 78,
      "styleRecalcDurationMs": 13.174999999999992,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 15742.582,
      "heapDeltaBytes": -51037268,
      "heapUsedBytes": 157332688,
      "domNodes": -8312,
      "jsHeapTotalBytes": -8855552,
      "scriptDurationMs": 757.346,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 455.08299999994506,
      "styleRecalcs": 15,
      "styleRecalcDurationMs": 21.026999999999997,
      "layouts": 4,
      "layoutDurationMs": 1.381,
      "taskDurationMs": 123.69999999999999,
      "heapDeltaBytes": 5327604,
      "heapUsedBytes": 67793088,
      "domNodes": 134,
      "jsHeapTotalBytes": 5505024,
      "scriptDurationMs": 10.792000000000002,
      "eventListeners": 97,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "workflow-execution",
      "durationMs": 477.1769999999833,
      "styleRecalcs": 14,
      "styleRecalcDurationMs": 16.897000000000002,
      "layouts": 3,
      "layoutDurationMs": 0.591,
      "taskDurationMs": 102.93699999999998,
      "heapDeltaBytes": 5100468,
      "heapUsedBytes": 68294724,
      "domNodes": 123,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 8.025999999999998,
      "eventListeners": 97,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    }
  ]
}

@christian-byrne
christian-byrne marked this pull request as ready for review May 11, 2026 19:21
@dosubot dosubot Bot added the size:S This PR changes 10-29 lines, ignoring generated files. label May 11, 2026

@christian-byrne christian-byrne left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Tests are failing on cloud e2e test suite. Here's a snippet of the logs which you can find full details for in the actions logs:

Error Context: test-results/tests-credits-Credits-—-to-eff5f-es-You-Pay-via-creditsToUsd-cloud/error-context.md

Retry #1 ───────────────────────────────────────────────────────────────────────────────────────

Test timeout of 15000ms exceeded.

Error: locator.click: Test timeout of 15000ms exceeded.
Call log:
  - waiting for getByTestId('current-user-popover').getByTestId('add-credits-button')
    - locator resolved to <button data-testid="add-credits-button" class="relative inline-flex items-center justify-center gap-2 cursor-pointer touch-manipulation whitespace-nowrap appearance-none border-none font-medium font-inter transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([width]):not([height])]:size-4 [&_svg]:shrink-0 bg-secondary-background hover:bg-secondary-background-hover h-6 rounded-sm…>…</button>
  - attempting click action
    2 × waiting for element to be visible, enabled and stable
      - element is not stable
    - retrying click action
    - waiting 20ms
    - waiting for element to be visible, enabled and stable
    - element is not stable
  2 × retrying click action
      - waiting 100ms
      - waiting for element to be visible, enabled and stable
      - element is visible, enabled and stable
      - scrolling into view if needed
      - done scrolling
      - <div pc3="" data-pc-name="toast" data-pc-section="root" class="p-toast p-component p-toast-top-right">…</div> intercepts pointer events
  9 × retrying click action
      - waiting 500ms
      - waiting for element to be visible, enabled and stable
      - element is visible, enabled and stable
      - scrolling into view if needed
      - done scrolling
      - <div pc3="" data-pc-name="toast" data-pc-section="root" class="p-toast p-component p-toast-top-right">…</div> intercepts pointer events
  - retrying click action
    - waiting 500ms


  142 |     async function openTopUpDialog(page: Page): Promise<void> {
  143 |       const popover = await openUserPopover(page)
> 144 |       await popover.getByTestId(TestIds.credits.addCreditsButton).click()
      |                                                                   ^
  145 |       await expect(
  146 |         page.getByTestId(TestIds.credits.topUpPayAmount)
  147 |       ).toBeVisible()
    at openTopUpDialog (/__w/ComfyUI_frontend/ComfyUI_frontend/browser_tests/tests/credits.spec.ts:144:67)
    at /__w/ComfyUI_frontend/ComfyUI_frontend/browser_tests/tests/credits.spec.ts:222:9

Error Context: test-results/tests-credits-Credits-—-to-eff5f-es-You-Pay-via-creditsToUsd-cloud-retry1/error-context.md

attachment #2: trace (application/zip) ─────────────────────────────────────────────────────────
test-results/tests-credits-Credits-—-to-eff5f-es-You-Pay-via-creditsToUsd-cloud-retry1/trace.zip
Usage:

    pnpm exec playwright show-trace test-results/tests-credits-Credits-—-to-eff5f-es-You-Pay-via-creditsToUsd-cloud-retry1/trace.zip

────────────────────────────────────────────────────────────────────────────────────────────────

Retry #2 ───────────────────────────────────────────────────────────────────────────────────────

Test timeout of 15000ms exceeded.

Error: locator.click: Test timeout of 15000ms exceeded.
Call log:
  - attempting click action
    2 × waiting for element to be visible, enabled and stable
      - element is not stable
    - retrying click action
    - waiting 20ms
    - waiting for element to be visible, enabled and stable
    - element is not stable
  2 × retrying click action
      - waiting 100ms
      - waiting for element to be visible, enabled and stable
      - element is visible, enabled and stable
      - scrolling into view if needed
      - done scrolling
      - <div pc3="" data-pc-name="toast" data-pc-section="root" class="p-toast p-component p-toast-top-right">…</div> intercepts pointer events
  13 × retrying click action
       - waiting 500ms
       - waiting for element to be visible, enabled and stable
       - element is visible, enabled and stable
       - scrolling into view if needed
       - done scrolling
       - <div pc3="" data-pc-name="toast" data-pc-section="root" class="p-toast p-component p-toast-top-right">…</div> intercepts pointer events
  - retrying click action
    - waiting 500ms


  142 |     async function openTopUpDialog(page: Page): Promise<void> {
  143 |       const popover = await openUserPopover(page)
> 144 |       await popover.getByTestId(TestIds.credits.addCreditsButton).click()
      |                                                                   ^
  145 |       await expect(
  146 |         page.getByTestId(TestIds.credits.topUpPayAmount)
  147 |       ).toBeVisible()
    at openTopUpDialog (/__w/ComfyUI_frontend/ComfyUI_frontend/browser_tests/tests/credits.spec.ts:144:67)
    at /__w/ComfyUI_frontend/ComfyUI_frontend/browser_tests/tests/credits.spec.ts:222:9

Error Context: test-results/tests-credits-Credits-—-to-eff5f-es-You-Pay-via-creditsToUsd-cloud-retry3/error-context.md

5 failed
[cloud] › browser_tests/tests/credits.spec.ts:150:5 › Credits — top-up dialog conversions › default $50 selection renders 10,550 credits in You Get @cloud
[cloud] › browser_tests/tests/credits.spec.ts:161:5 › Credits — top-up dialog conversions › $10 preset updates You Get to usdToCredits(10) = 2,110 @cloud
[cloud] › browser_tests/tests/credits.spec.ts:181:5 › Credits — top-up dialog conversions › $100 preset updates You Get to usdToCredits(100) = 21,100 @cloud
[cloud] › browser_tests/tests/credits.spec.ts:201:5 › Credits — top-up dialog conversions › incrementing You Pay updates You Get via usdToCredits @cloud
[cloud] › browser_tests/tests/credits.spec.ts:219:5 › Credits — top-up dialog conversions › incrementing You Get updates You Pay via creditsToUsd @cloud
46 passed (4.2m)

@glary-bot

glary-bot Bot commented May 11, 2026

Copy link
Copy Markdown

Thanks for the trace. The 5 dialog cases were failing because a PrimeVue toast (p-toast-top-right) lands in the same region as the user popover and intercepts the click on add-credits-button. The toast comes from the subscription-bootstrap error pipeline (useSubscriptionwrapWithErrorHandlingAsyncreportErrortoastErrorHandler), which can fire a transient error toast on app boot even with our mocks installed.

Fix pushed (9b4612c): added await comfyPage.toast.closeToasts() to the fixture, immediately after dismissSubscriptionDialogIfOpen(). This uses the existing ToastHelper that other specs already rely on — no toast-system suppression, just clearing the queue before the test body runs. The popover-only tests (which pass) are unaffected since closeToasts() is idempotent when no toasts are present.

@christian-byrne
christian-byrne force-pushed the glary/subscription-e2e-tests branch from 6949044 to ee0efca Compare July 14, 2026 02:17
Base automatically changed from glary/subscription-e2e-tests to main July 24, 2026 03:02
@codecov
codecov Bot requested a review from a team July 24, 2026 03:02
@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:S This PR changes 10-29 lines, ignoring generated files. labels Jul 24, 2026
@dante01yoon
dante01yoon force-pushed the glary/credits-e2e-tests branch from 9b4612c to 4ee789a Compare August 4, 2026 02:15
@dosubot dosubot Bot added size:S This PR changes 10-29 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Aug 4, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 4, 2026

@dante01yoon dante01yoon left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The selector scoping and conversion expectations are sound, and the refreshed CI/CodeRabbit results are green. One coverage gap remains: the new E2E cases currently exercise only the legacy dialog, despite the PR’s stated coverage of both billing implementations.

Comment thread browser_tests/tests/dialogs/topUpCreditsDialog.spec.ts
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 4, 2026
dante01yoon
dante01yoon previously approved these changes Aug 4, 2026

@dante01yoon dante01yoon left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-reviewed at c8a593e. The prior workspace coverage blocker is resolved: the @cloud team-owner boot activates a team workspace, billing routing selects type === 'workspace', and the deep-link flow renders TopUpCreditsDialogContentWorkspace with the real FormattedNumberStepper and conversion functions. The test verifies the default $50 / 10,550 state and drives the real credits increment control to $55 / 11,605. Legacy conversion coverage remains intact and distinct. No new blocking findings.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 4, 2026
dante01yoon
dante01yoon previously approved these changes Aug 4, 2026

@dante01yoon dante01yoon left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-reviewed at 9ad945d after updating to current main. The billing conversion coverage is unchanged; the follow-up only supplies the newly required max_seats and occupied_seats fields in existing billing mocks. Browser typecheck, lint/format, unit tests, cloud E2E, all Chromium shards, and the full required CI set pass. No blocking findings.

# Conflicts:
#	browser_tests/fixtures/data/cloudWorkspace.ts
#	browser_tests/tests/dialogs/pricingTableDeepLink.spec.ts
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@christian-byrne

Copy link
Copy Markdown
Contributor Author

Handoff note — moved to @Jaewon under FE-1585.

Recommendation: Finish if it is cheap, otherwise Hold. It qualifies under FE-1585's "materially improves regression detection" carve-out, and it is the first billing spec that asserts conversion behaviour on a non-cloud build (@ui tag, chromium project, __DISTRIBUTION__ = 'localhost') — which is the structural gap that let the local-credits P0 ship.

One blocker to note: its earlier approval was dismissed when I resolved a conflict against main, so it needs a fresh review rather than a merge. Conversion math was verified exact and it incidentally repairs a typecheck:browser red that has been latent on main since #13499.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S This PR changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants