Skip to content

test: provide a testing Pinia by default - #15057

Merged
DrJKL merged 4 commits into
mainfrom
test/global-vitest-testing-pinia
Aug 12, 2026
Merged

test: provide a testing Pinia by default#15057
DrJKL merged 4 commits into
mainfrom
test/global-vitest-testing-pinia

Conversation

@DrJKL

@DrJKL DrJKL commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • create a fresh createTestingPinia({ stubActions: false }) before each root and desktop UI test
  • remove 207 redundant per-suite activations
  • retain 11 explicit activations needed for module initialization, mid-test resets, and property-based iteration isolation
  • leave specialized suites free to replace the active Pinia with real Pinia, stubbed actions, plugins, or custom spies

Stacked on #15053.

Verification

  • root Vitest suite: 15,896 passed, 8 skipped across 1,159 files
  • desktop UI Vitest suite: 125 passed across 16 files
  • pnpm lint
  • pnpm typecheck
  • formatting and commit hooks

@coderabbitai

coderabbitai Bot commented Aug 11, 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: f4b9a3f5-44f8-4ded-acd4-858f704f1f34

📥 Commits

Reviewing files that changed from the base of the PR and between 91759a8 and 631e0aa.

📒 Files selected for processing (1)
  • vitest.setup.ts

📝 Walkthrough

Walkthrough

The test suite now initializes a fresh Testing Pinia with unstubbed actions in shared Vitest setup. Individual tests remove redundant Pinia imports and setup hooks while preserving existing mocks and state resets.

Changes

Pinia test setup centralization

Layer / File(s) Summary
Shared Testing Pinia initialization
vitest.setup.ts, apps/desktop-ui/src/test/setup.ts
Each test receives a fresh Testing Pinia with actions unstubbed.
UI, graph, composable, and LiteGraph tests
src/components/*, src/composables/*, src/core/*, src/lib/litegraph/*
Affected tests remove local Testing Pinia initialization and retain their existing test setup.
Platform, renderer, script, and service tests
src/platform/*, src/renderer/*, src/scripts/*, src/services/*
Affected tests rely on shared Pinia setup instead of creating a Testing Pinia per suite or test.
Store, workflow, workspace, and manager tests
src/stores/*, src/platform/workflow/*, src/platform/workspace/*, src/workbench/*, apps/desktop-ui/src/stores/*
Store tests remove redundant Pinia setup while preserving store creation, mocks, and state resets.

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

Possibly related PRs

Suggested labels: refactor

Suggested reviewers: christian-byrne, jtydhr88


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-file list and PR description are available, but the PR title and commit subjects are not; the required bug-fix signal cannot be verified. Provide the PR title and commit subjects to determine whether the bug-fix condition applies.
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: providing a default testing Pinia instance.
Description check ✅ Passed The description explains the implementation, retained exceptions, and verification results, but it does not use all template headings.
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 PR changes src/lib/litegraph/ test setup only; the diff adds no entity mutations, methods, component behavior, or extension callback changes covered by ADR 0003/0008.
✨ 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 test/global-vitest-testing-pinia

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

@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown

🎭 Playwright: ✅ 1802 passed, 0 failed · 3 flaky

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

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 08/12/2026, 01:21:04 AM UTC

Links

📦 Bundle: 8.71 MB gzip ⚪ 0 B

Details

Summary

  • Raw size: 36.8 MB baseline 36.8 MB — ⚪ 0 B
  • Gzip: 8.71 MB baseline 8.71 MB — ⚪ 0 B
  • Brotli: 6.07 MB baseline 6.07 MB — ⚪ 0 B
  • Bundles: 436 current • 436 baseline

Category Glance
Vendor & Third-Party ⚪ 0 B (16.3 MB) · Other ⚪ 0 B (14.1 MB) · Data & Services ⚪ 0 B (3.5 MB) · Graph Workspace ⚪ 0 B (1.36 MB) · Panels & Settings ⚪ 0 B (565 kB) · Utilities & Hooks ⚪ 0 B (550 kB) · + 5 more

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

Main entry bundles and manifests

Status: 1 unchanged

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

Graph editor runtime, canvas, workflow orchestration

Status: 3 unchanged

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

Top-level views, pages, and routed surfaces

Status: 17 unchanged

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

Configuration panels, inspectors, and settings screens

Status: 26 unchanged

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

Authentication, profile, and account management bundles

Status: 10 unchanged

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

Modals, dialogs, drawers, and in-app editors

Status: 8 unchanged

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

Reusable component library chunks

Status: 14 unchanged

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

Stores, services, APIs, and repositories

Status: 17 unchanged

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

Helpers, composables, and utility bundles

Status: 38 unchanged

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

External libraries and shared vendor chunks

Status: 17 unchanged

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

Bundles that do not match a named category

Status: 285 unchanged

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.8 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 55.4 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.4 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 50.6 MB heap
large-graph-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.5 MB heap
large-graph-pan: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.9 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 55.4 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 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.1 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.1 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 58.2 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 90ms TBT · 94.7 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.3 MB heap
vue-large-graph-idle: · 56.3 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 173.4 MB heap
vue-large-graph-pan: · 56.3 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 20ms TBT · 153.2 MB heap
workflow-execution: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.4 MB heap

⚠️ 5 regressions detected

Show regressions
Metric Baseline PR (median) Δ Sig
canvas-idle: task duration 508ms 460ms -10% ⚠️ z=2.1
large-graph-idle: task duration 674ms 668ms -1% ⚠️ z=2.3
minimap-idle: task duration 668ms 686ms +3% ⚠️ z=3.3
subgraph-idle: task duration 501ms 468ms -7% ⚠️ z=3.1
workflow-execution: event listeners 97 73 -25% ⚠️ z=4.8
All metrics
Metric Baseline PR (median) Δ Sig
canvas-idle: avg frame time 17ms 17ms +0% z=-0.1
canvas-idle: p95 frame time 17ms 17ms +0%
canvas-idle: layout duration 0ms 0ms +0%
canvas-idle: style recalc duration 8ms 9ms +11% z=-2.0
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 10 11 +5% z=-1.2
canvas-idle: task duration 508ms 460ms -10% ⚠️ z=2.1
canvas-idle: script duration 19ms 19ms -1% z=-2.7
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 44.6 MB 66.8 MB +50%
canvas-idle: DOM nodes 4 21 +425% z=-1.2
canvas-idle: event listeners -153 6 -104% z=-1.2
canvas-mouse-sweep: avg frame time 17ms 17ms -0% z=-1.5
canvas-mouse-sweep: p95 frame time 17ms 17ms +0%
canvas-mouse-sweep: layout duration 4ms 3ms -17% z=-2.2
canvas-mouse-sweep: style recalc duration 36ms 35ms -2% z=-2.3
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 75 74 -2% z=-2.2
canvas-mouse-sweep: task duration 896ms 831ms -7% z=-0.6
canvas-mouse-sweep: script duration 116ms 106ms -9% z=-4.5
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 48.9 MB 55.4 MB +13%
canvas-mouse-sweep: DOM nodes -283 -112 -61% z=-67.2
canvas-mouse-sweep: event listeners -153 -74 -52% z=-19.7
canvas-zoom-sweep: avg frame time 17ms 17ms -0% z=-0.3
canvas-zoom-sweep: p95 frame time 17ms 17ms +0%
canvas-zoom-sweep: layout duration 1ms 1ms +8% z=-0.6
canvas-zoom-sweep: style recalc duration 15ms 15ms +1% z=-2.4
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 31 30 -3% z=-2.8
canvas-zoom-sweep: task duration 378ms 358ms -5% z=1.3
canvas-zoom-sweep: script duration 18ms 21ms +15% z=-2.0
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 69.5 MB 69.4 MB -0%
canvas-zoom-sweep: DOM nodes 76 78 +2% z=-2.2
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 -0%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 7ms 7ms +3% z=-3.1
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 11 12 +9% z=-2.2
dom-widget-clipping: task duration 383ms 335ms -13% z=-1.8
dom-widget-clipping: script duration 56ms 50ms -12% z=-5.6
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 50.7 MB 50.6 MB -0%
dom-widget-clipping: DOM nodes 18 20 +11% z=-1.5
dom-widget-clipping: event listeners 0 2 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 7ms 7ms +5% z=-4.8
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 8 9 +6% z=-9.9
large-graph-idle: task duration 674ms 668ms -1% ⚠️ z=2.3
large-graph-idle: script duration 92ms 102ms +11% z=-0.0
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 61.9 MB 64.5 MB +4%
large-graph-idle: DOM nodes -282 -282 +0% z=-339.3
large-graph-idle: event listeners -179 -164 -8% z=-31.2
large-graph-pan: avg frame time 17ms 17ms +0% z=0.8
large-graph-pan: p95 frame time 17ms 17ms +0%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 14ms 15ms +3% z=-3.2
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 69 69 +0% z=-0.9
large-graph-pan: task duration 1254ms 1138ms -9% z=1.3
large-graph-pan: script duration 405ms 366ms -10% z=-2.1
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 61.3 MB 66.9 MB +9%
large-graph-pan: DOM nodes -283 -284 +0% z=-183.3
large-graph-pan: event listeners -149 -178 +19% z=-220.9
large-graph-zoom: avg frame time 17ms 17ms +0%
large-graph-zoom: p95 frame time 17ms 17ms -0%
large-graph-zoom: layout duration 8ms 8ms -6%
large-graph-zoom: style recalc duration 16ms 14ms -11%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 65 65 +0%
large-graph-zoom: task duration 1512ms 1349ms -11%
large-graph-zoom: script duration 524ms 458ms -12%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 58.4 MB 55.4 MB -5%
large-graph-zoom: DOM nodes -288 -285 -1%
large-graph-zoom: event listeners -153 -168 +10%
minimap-idle: avg frame time 17ms 17ms +0% z=0.1
minimap-idle: p95 frame time 17ms 17ms +0%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 6ms 7ms +10% z=-3.6
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 8 8 -6% z=-3.0
minimap-idle: task duration 668ms 686ms +3% ⚠️ z=3.3
minimap-idle: script duration 92ms 104ms +13% z=0.6
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 63.5 MB 64.6 MB +2%
minimap-idle: DOM nodes -282 -282 +0% z=-220.2
minimap-idle: event listeners -179 -164 -8% 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 10ms 9ms -6% z=-3.6
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 46 46 +0% z=-3.3
subgraph-dom-widget-clipping: task duration 396ms 361ms -9% z=-0.9
subgraph-dom-widget-clipping: script duration 123ms 103ms -16% z=-3.9
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 51.1 MB 51.1 MB +0%
subgraph-dom-widget-clipping: DOM nodes 18 18 +0% z=-3.7
subgraph-dom-widget-clipping: event listeners 6 8 +33% z=-1.4
subgraph-idle: avg frame time 17ms 17ms -0% z=-0.7
subgraph-idle: p95 frame time 17ms 17ms +0%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 7ms 9ms +25% z=-2.0
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 9 11 +17% z=-0.6
subgraph-idle: task duration 501ms 468ms -7% ⚠️ z=3.1
subgraph-idle: script duration 13ms 17ms +29% z=-1.1
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 44.2 MB 67.1 MB +52%
subgraph-idle: DOM nodes 0 21 z=-0.5
subgraph-idle: event listeners 4 6 +50% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms +0% z=0.4
subgraph-mouse-sweep: p95 frame time 17ms 17ms -1%
subgraph-mouse-sweep: layout duration 4ms 4ms -0% z=-1.5
subgraph-mouse-sweep: style recalc duration 35ms 35ms -1% z=-2.3
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 78 77 -1% z=-1.6
subgraph-mouse-sweep: task duration 794ms 722ms -9% z=-0.6
subgraph-mouse-sweep: script duration 86ms 87ms +1% z=-2.1
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 44.6 MB 58.2 MB +31%
subgraph-mouse-sweep: DOM nodes 1 64 +6250% z=-1.5
subgraph-mouse-sweep: event listeners -153 5 -103% 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 11ms 10ms -16%
subgraph-transition-enter: style recalc duration 29ms 25ms -13%
subgraph-transition-enter: layout count 15 14 -7%
subgraph-transition-enter: style recalc count 19 18 -5%
subgraph-transition-enter: task duration 897ms 837ms -7%
subgraph-transition-enter: script duration 32ms 34ms +5%
subgraph-transition-enter: TBT 116ms 90ms -22%
subgraph-transition-enter: heap used 93.5 MB 94.7 MB +1%
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 +0%
viewport-pan-sweep: layout duration 0ms 0ms +0%
viewport-pan-sweep: style recalc duration 40ms 39ms -3%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 250 249 -0%
viewport-pan-sweep: task duration 4336ms 4004ms -8%
viewport-pan-sweep: script duration 1298ms 1173ms -10%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 68.1 MB 63.3 MB -7%
viewport-pan-sweep: DOM nodes -284 -283 -0%
viewport-pan-sweep: event listeners -133 -148 +11%
vue-large-graph-idle: avg frame time 18ms 18ms -0%
vue-large-graph-idle: p95 frame time 17ms 17ms -0%
vue-large-graph-idle: layout duration 0ms 0ms +0%
vue-large-graph-idle: style recalc duration 0ms 0ms +0%
vue-large-graph-idle: layout count 0 0 +0%
vue-large-graph-idle: style recalc count 0 0 +0%
vue-large-graph-idle: task duration 17428ms 15006ms -14%
vue-large-graph-idle: script duration 552ms 457ms -17%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 162.7 MB 173.4 MB +7%
vue-large-graph-idle: DOM nodes -8312 -8312 +0%
vue-large-graph-idle: event listeners -16387 -16391 +0%
vue-large-graph-pan: avg frame time 18ms 18ms -0%
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 21ms 17ms -20%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 151 123 -19%
vue-large-graph-pan: task duration 21486ms 17591ms -18%
vue-large-graph-pan: script duration 887ms 740ms -17%
vue-large-graph-pan: TBT 395ms 20ms -95%
vue-large-graph-pan: heap used 157.2 MB 153.2 MB -3%
vue-large-graph-pan: DOM nodes -8312 -8312 +0%
vue-large-graph-pan: event listeners -16381 -16386 +0%
workflow-execution: avg frame time 17ms 17ms -0% z=-0.4
workflow-execution: p95 frame time 17ms 17ms +1%
workflow-execution: layout duration 1ms 1ms +2% z=-6.9
workflow-execution: style recalc duration 19ms 16ms -17% z=-3.9
workflow-execution: layout count 3 3 -17% z=-4.5
workflow-execution: style recalc count 12 11 -13% z=-3.6
workflow-execution: task duration 106ms 81ms -23% z=-3.8
workflow-execution: script duration 9ms 7ms -24% z=-7.5
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 65.3 MB 64.4 MB -1%
workflow-execution: DOM nodes 123 118 -4% z=-6.0
workflow-execution: event listeners 97 73 -25% ⚠️ z=4.8
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-12T01:31:08.693Z",
  "gitSha": "5765ae9a08777cfab4082b8a214b2a6af908a9d5",
  "branch": "test/global-vitest-testing-pinia",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2058.1280000000106,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.729000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 478.84800000000007,
      "heapDeltaBytes": 5779684,
      "heapUsedBytes": 70184120,
      "domNodes": 20,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 19.005,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 2006.4520000000243,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 9.431999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 440.93699999999995,
      "heapDeltaBytes": 5775280,
      "heapUsedBytes": 69934080,
      "domNodes": 22,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 19.317,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1948.362999999972,
      "styleRecalcs": 74,
      "styleRecalcDurationMs": 38.519,
      "layouts": 12,
      "layoutDurationMs": 3.3499999999999996,
      "taskDurationMs": 920.1300000000001,
      "heapDeltaBytes": -12770740,
      "heapUsedBytes": 51677852,
      "domNodes": -280,
      "jsHeapTotalBytes": 24092672,
      "scriptDurationMs": 110.25,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1746.1590000000342,
      "styleRecalcs": 73,
      "styleRecalcDurationMs": 32.309999999999995,
      "layouts": 12,
      "layoutDurationMs": 3.027,
      "taskDurationMs": 740.962,
      "heapDeltaBytes": 162952,
      "heapUsedBytes": 64577520,
      "domNodes": 57,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 102.176,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1681.525000000022,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 15.367000000000003,
      "layouts": 6,
      "layoutDurationMs": 0.6300000000000001,
      "taskDurationMs": 360.569,
      "heapDeltaBytes": 8202656,
      "heapUsedBytes": 72684788,
      "domNodes": 77,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 21.817000000000004,
      "eventListeners": 21,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1680.4989999999407,
      "styleRecalcs": 29,
      "styleRecalcDurationMs": 15.604,
      "layouts": 6,
      "layoutDurationMs": 0.603,
      "taskDurationMs": 355.06,
      "heapDeltaBytes": 8619924,
      "heapUsedBytes": 72845176,
      "domNodes": 78,
      "jsHeapTotalBytes": 24379392,
      "scriptDurationMs": 20.499999999999996,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 550.8560000000102,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 8.236000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 351.92400000000004,
      "heapDeltaBytes": -11319736,
      "heapUsedBytes": 53137924,
      "domNodes": 20,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 50.524,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 544.9970000000235,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 6.610999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 318.5,
      "heapDeltaBytes": -11310536,
      "heapUsedBytes": 52895896,
      "domNodes": 20,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 48.532999999999994,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2017.479000000037,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 7.918000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 674.6170000000001,
      "heapDeltaBytes": 7976512,
      "heapUsedBytes": 67422480,
      "domNodes": -282,
      "jsHeapTotalBytes": 3772416,
      "scriptDurationMs": 104.274,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2028.415999999993,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 6.550000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 660.8629999999999,
      "heapDeltaBytes": 7378996,
      "heapUsedBytes": 67837064,
      "domNodes": -282,
      "jsHeapTotalBytes": 3248128,
      "scriptDurationMs": 100.329,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2154.5020000000363,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 15.456999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1146.2020000000002,
      "heapDeltaBytes": 25068440,
      "heapUsedBytes": 85376196,
      "domNodes": -283,
      "jsHeapTotalBytes": 3440640,
      "scriptDurationMs": 367.33500000000004,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2163.518999999951,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 14.002999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1130.376,
      "heapDeltaBytes": -5686856,
      "heapUsedBytes": 54946300,
      "domNodes": -284,
      "jsHeapTotalBytes": 5345280,
      "scriptDurationMs": 365.375,
      "eventListeners": -177,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3148.4100000000126,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 14.520999999999999,
      "layouts": 60,
      "layoutDurationMs": 7.636,
      "taskDurationMs": 1342.1499999999999,
      "heapDeltaBytes": -5423508,
      "heapUsedBytes": 56816160,
      "domNodes": -281,
      "jsHeapTotalBytes": 6393856,
      "scriptDurationMs": 453.67999999999995,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3186.074000000076,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 14.322999999999999,
      "layouts": 60,
      "layoutDurationMs": 7.483,
      "taskDurationMs": 1355.824,
      "heapDeltaBytes": -3350888,
      "heapUsedBytes": 59279920,
      "domNodes": -289,
      "jsHeapTotalBytes": 6393856,
      "scriptDurationMs": 462.84000000000003,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2026.7639999999574,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 6.64,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 691.3530000000001,
      "heapDeltaBytes": 7369124,
      "heapUsedBytes": 68250556,
      "domNodes": -282,
      "jsHeapTotalBytes": 2461696,
      "scriptDurationMs": 105.582,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "minimap-idle",
      "durationMs": 2038.6130000000549,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 6.495999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 679.9110000000002,
      "heapDeltaBytes": 6858228,
      "heapUsedBytes": 67222288,
      "domNodes": -282,
      "jsHeapTotalBytes": 4296704,
      "scriptDurationMs": 102.714,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 549.9729999999659,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 9.658999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 353.29600000000005,
      "heapDeltaBytes": -11204176,
      "heapUsedBytes": 53576000,
      "domNodes": 20,
      "jsHeapTotalBytes": 26476544,
      "scriptDurationMs": 100.642,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 539.0350000000126,
      "styleRecalcs": 45,
      "styleRecalcDurationMs": 8.972,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 369.439,
      "heapDeltaBytes": -11056496,
      "heapUsedBytes": 53604580,
      "domNodes": 16,
      "jsHeapTotalBytes": 26214400,
      "scriptDurationMs": 105.915,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2027.5040000000217,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 9.265000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 478.001,
      "heapDeltaBytes": 5982816,
      "heapUsedBytes": 70374240,
      "domNodes": 22,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 17.707,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2021.517999999901,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.427999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 457.5779999999999,
      "heapDeltaBytes": 5911560,
      "heapUsedBytes": 70383760,
      "domNodes": 20,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 17.145,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1711.3679999999931,
      "styleRecalcs": 77,
      "styleRecalcDurationMs": 34.504,
      "layouts": 16,
      "layoutDurationMs": 4.005,
      "taskDurationMs": 710.7159999999999,
      "heapDeltaBytes": -3410736,
      "heapUsedBytes": 61163004,
      "domNodes": 63,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 85.69200000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1729.5839999999316,
      "styleRecalcs": 77,
      "styleRecalcDurationMs": 34.888000000000005,
      "layouts": 16,
      "layoutDurationMs": 4.422,
      "taskDurationMs": 732.357,
      "heapDeltaBytes": -3417808,
      "heapUsedBytes": 60992552,
      "domNodes": 64,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 88.808,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1317.9339999999797,
      "styleRecalcs": 18,
      "styleRecalcDurationMs": 25.26300000000001,
      "layouts": 14,
      "layoutDurationMs": 9.584,
      "taskDurationMs": 836.7750000000001,
      "heapDeltaBytes": 32892500,
      "heapUsedBytes": 99292964,
      "domNodes": 13673,
      "jsHeapTotalBytes": 13107200,
      "scriptDurationMs": 34.069,
      "eventListeners": 2373,
      "totalBlockingTimeMs": 90,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8206.06300000003,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 38.32,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3941.6720000000005,
      "heapDeltaBytes": 5427976,
      "heapUsedBytes": 65275196,
      "domNodes": -282,
      "jsHeapTotalBytes": 5275648,
      "scriptDurationMs": 1134.6000000000001,
      "eventListeners": -163,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8132.224000000065,
      "styleRecalcs": 248,
      "styleRecalcDurationMs": 39.025,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4066.54,
      "heapDeltaBytes": 7264000,
      "heapUsedBytes": 67490460,
      "domNodes": -284,
      "jsHeapTotalBytes": 7110656,
      "scriptDurationMs": 1210.54,
      "eventListeners": -133,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.80000000000109
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 15029.696000000002,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 15017.677000000001,
      "heapDeltaBytes": -42215244,
      "heapUsedBytes": 184179112,
      "domNodes": -8312,
      "jsHeapTotalBytes": -9117696,
      "scriptDurationMs": 463.74000000000007,
      "eventListeners": -16391,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.220000000000073,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 15006.52100000002,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14994.486000000003,
      "heapDeltaBytes": -47164356,
      "heapUsedBytes": 179394368,
      "domNodes": -8312,
      "jsHeapTotalBytes": -9904128,
      "scriptDurationMs": 450.9719999999999,
      "eventListeners": -16391,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 18.330000000000048,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 17476.84700000002,
      "styleRecalcs": 122,
      "styleRecalcDurationMs": 16.55300000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 17457.755,
      "heapDeltaBytes": -61777452,
      "heapUsedBytes": 164241352,
      "domNodes": -8312,
      "jsHeapTotalBytes": -10162176,
      "scriptDurationMs": 734.3530000000001,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 16,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 17744.98200000005,
      "styleRecalcs": 124,
      "styleRecalcDurationMs": 17.08599999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 17724.673,
      "heapDeltaBytes": -51391524,
      "heapUsedBytes": 157093736,
      "domNodes": -8312,
      "jsHeapTotalBytes": -9641984,
      "scriptDurationMs": 745.178,
      "eventListeners": -16385,
      "totalBlockingTimeMs": 24,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.80000000000291
    },
    {
      "name": "workflow-execution",
      "durationMs": 446.23599999999897,
      "styleRecalcs": 14,
      "styleRecalcDurationMs": 18.13,
      "layouts": 3,
      "layoutDurationMs": 0.6120000000000001,
      "taskDurationMs": 97.17499999999998,
      "heapDeltaBytes": 5056272,
      "heapUsedBytes": 68614088,
      "domNodes": 128,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 9.201,
      "eventListeners": 97,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "workflow-execution",
      "durationMs": 101.88700000003337,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 12.922999999999998,
      "layouts": 2,
      "layoutDurationMs": 0.47500000000000014,
      "taskDurationMs": 65.731,
      "heapDeltaBytes": 3071424,
      "heapUsedBytes": 66362980,
      "domNodes": 108,
      "jsHeapTotalBytes": 2883584,
      "scriptDurationMs": 4.706000000000002,
      "eventListeners": 49,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.800000000000182
    }
  ]
}

@github-actions

Copy link
Copy Markdown

🎨 Storybook: 🚧 Building...

AustinMroz
AustinMroz previously approved these changes Aug 11, 2026
@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@            Coverage Diff             @@
##             main   #15057      +/-   ##
==========================================
+ Coverage   81.29%   81.37%   +0.07%     
==========================================
  Files        1874     1874              
  Lines      107334   106439     -895     
  Branches    33652    32834     -818     
==========================================
- Hits        87262    86615     -647     
+ Misses      19695    19470     -225     
+ Partials      377      354      -23     
Flag Coverage Δ
unit 72.52% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 32 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.

@DrJKL DrJKL 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.

Performance review: global testing Pinia

Conclusion

The experiment shows no statistically significant wall-clock regression in either affected suite.

The best estimate for the root suite is a small +1.66 s / +1.25% change, but its 95% paired confidence interval crosses zero (−0.96 to +4.29 s). The experiment therefore does not establish that the change makes the suite slower. It also cannot rule out a regression of up to approximately 3.2% under this environment.

There is a real increase in aggregate Vitest setup worker-time because @pinia/testing is now loaded from the global setup for every test file. Parallel execution hides most of that work from wall-clock time.

Methodology

Property Root suite Desktop UI suite
Before revision cf2cdc0 cf2cdc0
After revision 4911df1 4911df1
Measured command pnpm test:unit pnpm --filter @comfyorg/desktop-ui test:unit
Paired samples 10 5
Tests per run 15,896 passed, 8 skipped 125 passed
Timing source external /usr/bin/time elapsed time external /usr/bin/time elapsed time

Controls used:

  1. Both revisions were checked out into separate detached worktrees.
  2. Each worktree received its own normal pnpm install --frozen-lockfile; no node_modules or Vite cache was shared.
  3. node_modules/.vite was removed before every measured run.
  4. Runs were paired and alternated in order: odd pairs used before → after; even pairs used after → before. This reduces bias from host load, thermal state, and time-dependent drift.
  5. Every run completed successfully with identical file and test counts.
  6. The normal repository commands and default worker configuration were retained so the measurement reflects developer/CI behavior rather than a synthetic single-worker workload.
  7. The comparison uses paired deltas. The reported interval is a two-sided 95% Student's t confidence interval over those deltas.

The Vite transform cache was cold for each sample. OS filesystem/page caches were not forcibly dropped because doing so would require privileged host-wide intervention and would be less representative of normal repeated development and CI execution. Alternating paired runs controls that remaining source of noise better than running all samples for one revision first.

Wall-clock results

Suite n Before mean Before median After mean After median Mean delta Relative delta 95% paired CI
Root 10 133.04 s 132.29 s 134.70 s 133.95 s +1.66 s +1.25% −0.96 to +4.29 s
Desktop UI 5 3.288 s 3.280 s 3.308 s 3.300 s +0.020 s +0.61% −0.070 to +0.110 s

Additional distribution statistics:

Suite/revision Standard deviation Minimum Maximum
Root before 2.81 s 128.56 s 138.58 s
Root after 3.43 s 130.27 s 142.15 s
Desktop before 0.036 s 3.25 s 3.33 s
Desktop after 0.041 s 3.26 s 3.35 s

Root paired wall-clock deltas

Positive values are slower after the change; negative values are faster.

Pair   faster ◀────────────── 0 ──────────────▶ slower
  1                 ████████ │                         −1.98 s
  2                          │███                       +0.68 s
  3                          │███████                   +1.71 s
  4                          │████████                  +2.02 s
  5                          │██████████████████████████ +6.63 s
  6                          │███████████████████████████ +6.90 s
  7        █████████████████ │                         −4.37 s
  8                          │████████████████████      +5.02 s
  9                          │███                       +0.85 s
 10                       ███│                         −0.84 s
                              ▲
                        no difference

Mean:   +1.66 s
Median: +1.28 s
95% CI: −0.96 s ─────────────────────────────── +4.29 s

The large sign changes between adjacent pairs demonstrate why a single before/after run would be misleading. Four of ten after-runs were faster or effectively tied, while several slower pairs raised the mean.

Mean wall-clock comparison

Root suite (seconds; truncated axis begins at 125 s)
Before  133.04 s  ████████████████
After   134.70 s  ███████████████████
                   125   130   135   140

Desktop UI (seconds; truncated axis begins at 3.20 s)
Before    3.288 s  █████████
After     3.308 s  ███████████
                    3.20  3.25  3.30  3.35

The axes are explicitly truncated to make the small differences visible; these bars should not be read as proportional from zero.

Vitest phase-level findings

Vitest reports phase durations aggregated across workers, so these numbers are useful for locating work but must not be added together or interpreted as wall-clock duration.

Root phase Before mean After mean Delta Relative
Duration 130.97 s 132.63 s +1.65 s +1.3%
Transform 110.20 s 108.73 s −1.47 s −1.3%
Setup 138.32 s 162.58 s +24.26 s +17.5%
Import 1,036.30 s 1,031.16 s −5.14 s −0.5%
Tests 251.44 s 253.88 s +2.44 s +1.0%
Environment 323.17 s 325.53 s +2.37 s +0.7%
Root aggregate worker-time delta by phase

Transform    ◀ ███                              −1.47 s
Setup                           ████████████████████████████████████████████████ ▶ +24.26 s
Import       ◀ ██████████                       −5.14 s
Tests                           █████            ▶ +2.44 s
Environment                     █████            ▶ +2.37 s

Desktop shows the same mechanism at smaller scale:

Desktop phase Before mean After mean Delta Relative
Duration 2.31 s 2.35 s +0.03 s +1.4%
Transform 2.44 s 2.56 s +0.11 s +4.6%
Setup 1.28 s 2.36 s +1.07 s +83.5%
Import 7.57 s 6.80 s −0.77 s −10.2%
Tests 2.12 s 2.15 s +0.04 s +1.7%
Environment 4.73 s 4.78 s +0.05 s +1.1%

CPU and memory

Metric Before After Paired delta 95% paired CI
Root user CPU 1,517.56 s 1,539.06 s +21.50 s (+1.42%) −5.68 to +48.68 s
Root system CPU 229.64 s 233.10 s +3.46 s (+1.51%) +0.12 to +6.80 s
Root peak RSS 1,605,546 KiB 1,589,795 KiB −15,751 KiB (−0.98%) −234,971 to +203,469 KiB
Desktop user CPU 13.33 s 13.87 s +0.54 s (+4.07%) +0.10 to +0.98 s
Desktop peak RSS 233,034 KiB 232,011 KiB −1,022 KiB (−0.44%) −11,936 to +9,891 KiB

Memory is effectively unchanged. CPU consumption trends upward, consistent with globally importing testing Pinia and creating a fresh instance per test, but most of that CPU work executes in parallel and does not translate directly into wall time.

Interpretation and recommendation

  • Statistical conclusion: neither suite has a significant wall-clock regression at the 95% confidence level because both paired intervals include zero.
  • Best estimate: the root suite is approximately 1–1.5% slower, or roughly 1.7 seconds on a 133-second run in this orb.
  • Bounded uncertainty: the root data are compatible with anything from a small improvement to approximately a 3.2% regression. This benchmark cannot honestly claim exact equivalence.
  • Mechanism: the setup cost is genuine. Moving @pinia/testing into the global setup makes every test file pay its import/setup cost, including files that never use Pinia. The 207 removed local activations reduce suite boilerplate but do not eliminate this global module-loading cost.
  • Practical recommendation: the measured wall-clock impact is small enough that performance alone is not a blocker for the cleanup. If the project has a strict ≤1% unit-suite regression budget, the result is inconclusive and would justify either more samples on dedicated CI hardware or a setup design that avoids loading @pinia/testing for non-Pinia files.

@DrJKL
DrJKL force-pushed the test/global-vitest-local-storage-cleanup branch from cf2cdc0 to b6aab32 Compare August 11, 2026 22:19
@DrJKL
DrJKL force-pushed the test/global-vitest-testing-pinia branch from 4911df1 to 91759a8 Compare August 11, 2026 22:19
@DrJKL
DrJKL marked this pull request as ready for review August 11, 2026 22:40
@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Aug 11, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 11, 2026
@DrJKL
DrJKL force-pushed the test/global-vitest-local-storage-cleanup branch from b6aab32 to bb573d8 Compare August 11, 2026 23:07
@DrJKL
DrJKL force-pushed the test/global-vitest-testing-pinia branch from 91759a8 to 3b57fa8 Compare August 11, 2026 23:07
@DrJKL DrJKL assigned christian-byrne and unassigned AustinMroz Aug 11, 2026
Base automatically changed from test/global-vitest-local-storage-cleanup to main August 11, 2026 23:51
@DrJKL
DrJKL dismissed stale reviews from christian-byrne, coderabbitai[bot], and AustinMroz August 11, 2026 23:51

The base branch was changed.

@DrJKL
DrJKL force-pushed the test/global-vitest-testing-pinia branch from 3b57fa8 to 598ee39 Compare August 11, 2026 23:53
@DrJKL
DrJKL enabled auto-merge August 11, 2026 23:55
@DrJKL DrJKL assigned christian-byrne and unassigned DrJKL Aug 11, 2026
@DrJKL
DrJKL requested a review from christian-byrne August 11, 2026 23:58
@DrJKL
DrJKL added this pull request to the merge queue Aug 12, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Aug 12, 2026
@DrJKL
DrJKL enabled auto-merge August 12, 2026 01:25
@DrJKL
DrJKL added this pull request to the merge queue Aug 12, 2026
Merged via the queue into main with commit d2f611b Aug 12, 2026
63 checks passed
@DrJKL
DrJKL deleted the test/global-vitest-testing-pinia branch August 12, 2026 01:48
mattmillerai added a commit that referenced this pull request Aug 12, 2026
#15057 installs a testing Pinia before every test, which makes
`whenStoresReady()` take its `getActivePinia()` fast path and resolve
immediately — the pending-window assertion passed even with the gate
removed. Clearing the active Pinia restores the condition the gate exists
for: the window before main.ts installs Pinia.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants