test: provide a testing Pinia by default - #15057
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe 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. ChangesPinia test setup centralization
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested labels: Suggested reviewers: Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 inconclusive)
✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
🎭 Playwright: ✅ 1802 passed, 0 failed · 3 flaky📊 Browser Reports
🎨 Storybook: ✅ Built — View Storybook📦 Bundle: 8.71 MB gzip ⚪ 0 BDetailsSummary
Category Glance App Entry Points — 3.67 kB (baseline 3.67 kB) • ⚪ 0 BMain entry bundles and manifests Status: 1 unchanged Graph Workspace — 1.36 MB (baseline 1.36 MB) • ⚪ 0 BGraph editor runtime, canvas, workflow orchestration Status: 3 unchanged Views & Navigation — 124 kB (baseline 124 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces Status: 17 unchanged Panels & Settings — 565 kB (baseline 565 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens Status: 26 unchanged User & Accounts — 27 kB (baseline 27 kB) • ⚪ 0 BAuthentication, profile, and account management bundles Status: 10 unchanged Editors & Dialogs — 125 kB (baseline 125 kB) • ⚪ 0 BModals, dialogs, drawers, and in-app editors Status: 8 unchanged UI Components — 67.1 kB (baseline 67.1 kB) • ⚪ 0 BReusable component library chunks Status: 14 unchanged Data & Services — 3.5 MB (baseline 3.5 MB) • ⚪ 0 BStores, services, APIs, and repositories Status: 17 unchanged Utilities & Hooks — 550 kB (baseline 550 kB) • ⚪ 0 BHelpers, composables, and utility bundles Status: 38 unchanged Vendor & Third-Party — 16.3 MB (baseline 16.3 MB) • ⚪ 0 BExternal libraries and shared vendor chunks Status: 17 unchanged Other — 14.1 MB (baseline 14.1 MB) • ⚪ 0 BBundles that do not match a named category Status: 285 unchanged ⚡ Performance Report
Show regressions
All metrics
Historical variance (last 15 runs)
Trend (last 15 commits on main)
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
}
]
} |
🎨 Storybook: 🚧 Building... |
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
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
DrJKL
left a comment
There was a problem hiding this comment.
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:
- Both revisions were checked out into separate detached worktrees.
- Each worktree received its own normal
pnpm install --frozen-lockfile; nonode_modulesor Vite cache was shared. node_modules/.vitewas removed before every measured run.- Runs were paired and alternated in order: odd pairs used
before → after; even pairs usedafter → before. This reduces bias from host load, thermal state, and time-dependent drift. - Every run completed successfully with identical file and test counts.
- The normal repository commands and default worker configuration were retained so the measurement reflects developer/CI behavior rather than a synthetic single-worker workload.
- 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/testinginto 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/testingfor non-Pinia files.
cf2cdc0 to
b6aab32
Compare
4911df1 to
91759a8
Compare
b6aab32 to
bb573d8
Compare
91759a8 to
3b57fa8
Compare
The base branch was changed.
3b57fa8 to
598ee39
Compare
…sting-pinia Amp-Thread-ID: https://ampcode.com/threads/T-019ff382-695a-729d-b236-e8f22e418cad # Conflicts: # vitest.setup.ts
#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.
Summary
createTestingPinia({ stubActions: false })before each root and desktop UI testStacked on #15053.
Verification
pnpm lintpnpm typecheck