Skip to content

refactor: replace vi.doMock with vi.mock + vi.hoisted#8319

Merged
DrJKL merged 1 commit intomainfrom
drjkl/dont-mock
Jan 26, 2026
Merged

refactor: replace vi.doMock with vi.mock + vi.hoisted#8319
DrJKL merged 1 commit intomainfrom
drjkl/dont-mock

Conversation

@DrJKL
Copy link
Contributor

@DrJKL DrJKL commented Jan 26, 2026

Replace vi.doMock with vi.mock + vi.hoisted pattern for cleaner test mocking.

  • Add ESLint rule to prevent future doMock usage
  • Refactor versionUtil.test.ts and firebaseAuthStore.test.ts

┆Issue is synchronized with this Notion page by Unito

- Add ESLint rule to prevent future doMock usage

- Refactor versionUtil.test.ts and firebaseAuthStore.test.ts

Amp-Thread-ID: https://ampcode.com/threads/T-019bfba6-a757-73bc-8d9f-9716955eabc6
Co-authored-by: Amp <amp@ampcode.com>
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 26, 2026

📝 Walkthrough

Walkthrough

This pull request enhances test patterns by adding an ESLint rule that forbids vi.doMock in test files and refactors existing tests to use hoisted mocks with beforeEach/afterEach hooks for state management, replacing dynamic module re-mocking patterns.

Changes

Cohort / File(s) Summary
ESLint Configuration
eslint.config.ts
Introduces new ESLint config block targeting all **/*.test.ts files with a rule that forbids vi.doMock, directing developers to use vi.mock() with vi.hoisted() instead.
Test Refactoring
src/stores/firebaseAuthStore.test.ts, src/workbench/extensions/manager/utils/versionUtil.test.ts
Refactors test suites to use hoisted mocks and beforeEach/afterEach hooks for centralized state management. Replaces dynamic module re-mocking with in-place state updates and direct store/function invocations, improving test maintainability.

Suggested reviewers

  • simula-r
  • christian-byrne
  • viva-jinyi
✨ Finishing touches
  • 📝 Generate docstrings

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

@github-actions
Copy link

github-actions bot commented Jan 26, 2026

🎭 Playwright Tests: ⚠️ Passed with flaky tests

Results: 505 passed, 0 failed, 1 flaky, 8 skipped (Total: 514)

❌ Failed Tests

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

@github-actions
Copy link

github-actions bot commented Jan 26, 2026

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 01/26/2026, 07:07:21 PM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

Bundle Size Report

Summary

  • Raw size: 22 MB baseline 22 MB — 🟢 -199 B
  • Gzip: 4.57 MB baseline 4.57 MB — 🟢 -79 B
  • Brotli: 3.39 MB baseline 3.39 MB — 🔴 +36 B
  • Bundles: 170 current • 170 baseline • 82 added / 82 removed

Category Glance
Other 🟢 -192 B (6.49 MB) · Panels & Settings 🟢 -8 B (466 kB) · Data & Services 🔴 +1 B (3.19 MB) · Vendor & Third-Party ⚪ 0 B (10.7 MB) · Graph Workspace ⚪ 0 B (958 kB) · Views & Navigation ⚪ 0 B (80.7 kB) · + 5 more

Per-category breakdown
App Entry Points — 22.8 kB (baseline 22.8 kB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-BUUX2kYY.js (removed) 22.8 kB 🟢 -22.8 kB 🟢 -6.84 kB 🟢 -6.01 kB
assets/index-Cs-mPbk1.js (new) 22.8 kB 🔴 +22.8 kB 🔴 +6.84 kB 🔴 +6.03 kB

Status: 1 added / 1 removed

Graph Workspace — 958 kB (baseline 958 kB) • ⚪ 0 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-gF_8W7aa.js (new) 958 kB 🔴 +958 kB 🔴 +194 kB 🔴 +147 kB
assets/GraphView-hW8AHTtA.js (removed) 958 kB 🟢 -958 kB 🟢 -194 kB 🟢 -146 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-ClRIHlO7.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -3.6 kB 🟢 -3.05 kB
assets/CloudSurveyView-D0j7d0pS.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +3.61 kB 🔴 +3.06 kB
assets/CloudLoginView-BKUIE_8N.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.09 kB 🟢 -2.72 kB
assets/CloudLoginView-C4EOi_M5.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.09 kB 🔴 +2.71 kB
assets/UserCheckView-Cf-QCE1S.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.45 kB 🔴 +2.14 kB
assets/UserCheckView-DXwjZThT.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.45 kB 🟢 -2.13 kB
assets/CloudLayoutView-B6SRC1E5.js (removed) 8.54 kB 🟢 -8.54 kB 🟢 -2.25 kB 🟢 -1.96 kB
assets/CloudLayoutView-CA9pFcJ7.js (new) 8.54 kB 🔴 +8.54 kB 🔴 +2.25 kB 🔴 +1.95 kB
assets/CloudSignupView-BNWbSbk3.js (new) 8.18 kB 🔴 +8.18 kB 🔴 +2.33 kB 🔴 +2.03 kB
assets/CloudSignupView-D48toMiC.js (removed) 8.18 kB 🟢 -8.18 kB 🟢 -2.33 kB 🟢 -2.03 kB
assets/CloudForgotPasswordView-DBpCrEuD.js (new) 6.26 kB 🔴 +6.26 kB 🔴 +1.93 kB 🔴 +1.69 kB
assets/CloudForgotPasswordView-DsnYCsbD.js (removed) 6.26 kB 🟢 -6.26 kB 🟢 -1.92 kB 🟢 -1.69 kB
assets/UserSelectView-Cd_D7FIL.js (removed) 5.28 kB 🟢 -5.28 kB 🟢 -1.76 kB 🟢 -1.58 kB
assets/UserSelectView-Cn56Mb58.js (new) 5.28 kB 🔴 +5.28 kB 🔴 +1.76 kB 🔴 +1.57 kB
assets/CloudSubscriptionRedirectView-8ES0niUL.js (new) 5.27 kB 🔴 +5.27 kB 🔴 +1.73 kB 🔴 +1.54 kB
assets/CloudSubscriptionRedirectView-BPEmHbNJ.js (removed) 5.27 kB 🟢 -5.27 kB 🟢 -1.73 kB 🟢 -1.54 kB
assets/CloudAuthTimeoutView-CUfvmI3n.js (new) 5.24 kB 🔴 +5.24 kB 🔴 +1.7 kB 🔴 +1.48 kB
assets/CloudAuthTimeoutView-DmMlvDkg.js (removed) 5.24 kB 🟢 -5.24 kB 🟢 -1.7 kB 🟢 -1.48 kB
assets/CloudSorryContactSupportView-B5gYo5Lv.js 1.97 kB 1.97 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/layout-MvRmLoAK.js 500 B 500 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 9 added / 9 removed

Panels & Settings — 466 kB (baseline 466 kB) • 🟢 -8 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/WorkspacePanel-CN86A07x.js (new) 29.8 kB 🔴 +29.8 kB 🔴 +5.89 kB 🔴 +5.15 kB
assets/WorkspacePanel-HoWCK_hP.js (removed) 29.8 kB 🟢 -29.8 kB 🟢 -5.89 kB 🟢 -5.14 kB
assets/LegacyCreditsPanel-CoC81gLQ.js (new) 23.8 kB 🔴 +23.8 kB 🔴 +5.94 kB 🔴 +5.23 kB
assets/LegacyCreditsPanel-DFE4Phyk.js (removed) 23.8 kB 🟢 -23.8 kB 🟢 -5.95 kB 🟢 -5.22 kB
assets/SubscriptionPanel-BY80WSEv.js (new) 20.9 kB 🔴 +20.9 kB 🔴 +5.01 kB 🔴 +4.43 kB
assets/SubscriptionPanel-CrFH0O-n.js (removed) 20.9 kB 🟢 -20.9 kB 🟢 -5.01 kB 🟢 -4.41 kB
assets/KeybindingPanel-BtGHLExD.js (removed) 14.2 kB 🟢 -14.2 kB 🟢 -3.74 kB 🟢 -3.31 kB
assets/KeybindingPanel-ChWYRHOx.js (new) 14.2 kB 🔴 +14.2 kB 🔴 +3.74 kB 🔴 +3.31 kB
assets/AboutPanel-CA6bITNe.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.68 kB 🟢 -2.43 kB
assets/AboutPanel-D4Joe1kI.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.68 kB 🔴 +2.44 kB
assets/ExtensionPanel-B66Lm0dm.js (new) 10.2 kB 🔴 +10.2 kB 🔴 +2.71 kB 🔴 +2.4 kB
assets/ExtensionPanel-BGXRvATy.js (removed) 10.2 kB 🟢 -10.2 kB 🟢 -2.71 kB 🟢 -2.4 kB
assets/ServerConfigPanel-Cb0kIOzQ.js (new) 7.23 kB 🔴 +7.23 kB 🔴 +2.17 kB 🔴 +1.94 kB
assets/ServerConfigPanel-DsASSs2S.js (removed) 7.23 kB 🟢 -7.23 kB 🟢 -2.17 kB 🟢 -1.94 kB
assets/UserPanel-BsqGY7wC.js (removed) 6.58 kB 🟢 -6.58 kB 🟢 -1.9 kB 🟢 -1.67 kB
assets/UserPanel-MDtlPfwg.js (new) 6.58 kB 🔴 +6.58 kB 🔴 +1.9 kB 🔴 +1.68 kB
assets/config-C_HR6VWU.js (removed) 1.16 kB 🟢 -1.16 kB 🟢 -610 B 🟢 -539 B
assets/config-DxQEvpfe.js (new) 1.15 kB 🔴 +1.15 kB 🔴 +605 B 🔴 +534 B
assets/refreshRemoteConfig-DC4HFLdl.js (removed) 1.14 kB 🟢 -1.14 kB 🟢 -522 B 🟢 -488 B
assets/refreshRemoteConfig-llzTSMdw.js (new) 1.14 kB 🔴 +1.14 kB 🔴 +522 B 🔴 +483 B
assets/cloudRemoteConfig-Bk1GsiOC.js (removed) 1.11 kB 🟢 -1.11 kB 🟢 -509 B 🟢 -438 B
assets/cloudRemoteConfig-BWEUn5e2.js (new) 1.11 kB 🔴 +1.11 kB 🔴 +508 B 🔴 +436 B
assets/refreshRemoteConfig-B7gwGK4u.js (new) 169 B 🔴 +169 B 🔴 +108 B 🔴 +103 B
assets/refreshRemoteConfig-DyqfGRIM.js (removed) 169 B 🟢 -169 B 🟢 -108 B 🟢 -111 B
assets/remoteConfig-w1E3DdAQ.js 536 B 536 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-2qMok0ac.js 29 kB 29 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BcDLsbiI.js 29.2 kB 29.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BCMsrMhl.js 29.9 kB 29.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BQM5iiEY.js 25.5 kB 25.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C5JeSK4j.js 26.2 kB 26.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CcVqrXbK.js 38.8 kB 38.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-Ckoj43MZ.js 30 kB 30 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DFBj0AYW.js 32.5 kB 32.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-Dh5pVx6O.js 34.8 kB 34.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DJRV_PVY.js 30.8 kB 30.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-jbT3QFC8.js 31.6 kB 31.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 12 added / 12 removed

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-BgRL8R9M.js (new) 3.54 kB 🔴 +3.54 kB 🔴 +1.24 kB 🔴 +1.06 kB
assets/auth-C4V5V8iU.js (removed) 3.54 kB 🟢 -3.54 kB 🟢 -1.24 kB 🟢 -1.06 kB
assets/firebaseAuthStore-CRfuLNb5.js (new) 217 B 🔴 +217 B 🔴 +136 B 🔴 +118 B
assets/firebaseAuthStore-Jc396jRQ.js (removed) 217 B 🟢 -217 B 🟢 -136 B 🟢 -129 B
assets/auth-BQYnA-ea.js (removed) 178 B 🟢 -178 B 🟢 -142 B 🟢 -145 B
assets/auth-DZ5fszWm.js (new) 178 B 🔴 +178 B 🔴 +142 B 🔴 +134 B

Status: 3 added / 3 removed

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-B-wQnK5C.js (new) 2.65 kB 🔴 +2.65 kB 🔴 +1.25 kB 🔴 +1.11 kB
assets/useSubscriptionDialog-COQiCOgp.js (removed) 2.65 kB 🟢 -2.65 kB 🟢 -1.25 kB 🟢 -1.11 kB
assets/useSubscriptionDialog-BryP8NzM.js (new) 179 B 🔴 +179 B 🔴 +110 B 🔴 +95 B
assets/useSubscriptionDialog-vZWinzBJ.js (removed) 179 B 🟢 -179 B 🟢 -110 B 🟢 -100 B

Status: 2 added / 2 removed

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-D1BA8jys.js (removed) 9.52 kB 🟢 -9.52 kB 🟢 -2.69 kB 🟢 -2.43 kB
assets/ComfyQueueButton-DCyUQ3-V.js (new) 9.52 kB 🔴 +9.52 kB 🔴 +2.69 kB 🔴 +2.42 kB
assets/SubscribeButton-BwyWausP.js (removed) 4.63 kB 🟢 -4.63 kB 🟢 -1.57 kB 🟢 -1.39 kB
assets/SubscribeButton-CPx284MM.js (new) 4.63 kB 🔴 +4.63 kB 🔴 +1.57 kB 🔴 +1.39 kB
assets/CloudBadge-8u-HP3XE.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +724 B 🔴 +646 B
assets/CloudBadge-C8B5sf65.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -723 B 🟢 -652 B
assets/cloudFeedbackTopbarButton-B21KzSOV.js (new) 1.24 kB 🔴 +1.24 kB 🔴 +677 B 🔴 +579 B
assets/cloudFeedbackTopbarButton-SICN8bm7.js (removed) 1.24 kB 🟢 -1.24 kB 🟢 -677 B 🟢 -577 B
assets/ComfyQueueButton-FyaK2bwF.js (removed) 181 B 🟢 -181 B 🟢 -118 B 🟢 -114 B
assets/ComfyQueueButton-OGLuOES0.js (new) 181 B 🔴 +181 B 🔴 +118 B 🔴 +111 B
assets/Button-B9mYP1x0.js 3.82 kB 3.82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/TopbarBadge-DHZYSmi1.js 8.36 kB 8.36 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar-CIuPULbC.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-BFtcBv-z.js 2.41 kB 2.41 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

Data & Services — 3.19 MB (baseline 3.19 MB) • 🔴 +1 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-ECPZn4V3.js (removed) 2 MB 🟢 -2 MB 🟢 -423 kB 🟢 -323 kB
assets/dialogService-OPAtCz0t.js (new) 2 MB 🔴 +2 MB 🔴 +423 kB 🔴 +323 kB
assets/api-C0ziZADi.js (new) 1.16 MB 🔴 +1.16 MB 🔴 +243 kB 🔴 +188 kB
assets/api-DjjIWKsS.js (removed) 1.16 MB 🟢 -1.16 MB 🟢 -243 kB 🟢 -188 kB
assets/releaseStore-BI-ndZ7I.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +2.4 kB 🔴 +2.12 kB
assets/releaseStore-D1zM4nXy.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -2.4 kB 🟢 -2.12 kB
assets/keybindingService-D76WlO8k.js (new) 6.78 kB 🔴 +6.78 kB 🔴 +1.74 kB 🔴 +1.52 kB
assets/keybindingService-DqlWjTG0.js (removed) 6.78 kB 🟢 -6.78 kB 🟢 -1.74 kB 🟢 -1.52 kB
assets/userStore-D-BvgAIp.js (new) 2.16 kB 🔴 +2.16 kB 🔴 +810 B 🔴 +724 B
assets/userStore-DldAcNaL.js (removed) 2.16 kB 🟢 -2.16 kB 🟢 -812 B 🟢 -723 B
assets/audioService-Cdbq61Y1.js (removed) 2.03 kB 🟢 -2.03 kB 🟢 -933 B 🟢 -823 B
assets/audioService-Dcsb20ag.js (new) 2.03 kB 🔴 +2.03 kB 🔴 +929 B 🔴 +820 B
assets/teamWorkspaceStore-DdhhDVq1.js (removed) 165 B 🟢 -165 B 🟢 -123 B 🟢 -110 B
assets/teamWorkspaceStore-roxnuBYf.js (new) 165 B 🔴 +165 B 🔴 +123 B 🔴 +106 B
assets/releaseStore-DtdhifeD.js (new) 140 B 🔴 +140 B 🔴 +106 B 🔴 +107 B
assets/releaseStore-jenyStVO.js (removed) 140 B 🟢 -140 B 🟢 -106 B 🟢 -103 B
assets/serverConfigStore-B2LzN8g1.js 2.64 kB 2.64 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 8 added / 8 removed

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useErrorHandling-BGnm6u4r.js (removed) 5.08 kB 🟢 -5.08 kB 🟢 -1.5 kB 🟢 -1.31 kB
assets/useErrorHandling-QcEZYpbK.js (new) 5.08 kB 🔴 +5.08 kB 🔴 +1.5 kB 🔴 +1.31 kB
assets/useWorkspaceUI-2sevK7KH.js (new) 3.42 kB 🔴 +3.42 kB 🔴 +975 B 🔴 +838 B
assets/useWorkspaceUI-Xl7do5iO.js (removed) 3.42 kB 🟢 -3.42 kB 🟢 -975 B 🟢 -841 B
assets/useSubscriptionActions-9pCQ1IVq.js (removed) 2.22 kB 🟢 -2.22 kB 🟢 -872 B 🟢 -762 B
assets/useSubscriptionActions-BwfriIeY.js (new) 2.22 kB 🔴 +2.22 kB 🔴 +870 B 🔴 +762 B
assets/subscriptionCheckoutUtil-CM9clbva.js (new) 2 kB 🔴 +2 kB 🔴 +863 B 🔴 +755 B
assets/subscriptionCheckoutUtil-DP9NKoSn.js (removed) 2 kB 🟢 -2 kB 🟢 -865 B 🟢 -758 B
assets/useSubscriptionCredits-B92pEqIi.js (new) 1.39 kB 🔴 +1.39 kB 🔴 +598 B 🔴 +528 B
assets/useSubscriptionCredits-WCsw5Guh.js (removed) 1.39 kB 🟢 -1.39 kB 🟢 -600 B 🟢 -530 B
assets/audioUtils-_R_rsMsy.js (new) 970 B 🔴 +970 B 🔴 +545 B 🔴 +459 B
assets/audioUtils-CB-nyrD1.js (removed) 970 B 🟢 -970 B 🟢 -548 B 🟢 -459 B
assets/useCurrentUser-CkG7-Wwi.js (new) 145 B 🔴 +145 B 🔴 +114 B 🔴 +102 B
assets/useCurrentUser-Ddra-xct.js (removed) 145 B 🟢 -145 B 🟢 -114 B 🟢 -98 B
assets/_plugin-vue_export-helper-DLRTaeJK.js 467 B 467 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/colorUtil-8brfHtOx.js 7.2 kB 7.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/markdownRendererUtil-DBMaRy6q.js 1.78 kB 1.78 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/tailwindUtil-Hy0jY5OA.js 488 B 488 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 7 added / 7 removed

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

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-chart-DdBDBwvF.js 408 kB 408 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-Dk4vQph5.js 4.1 MB 4.1 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-BK91gQps.js 3.04 MB 3.04 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-Bh_PdEOO.js 256 kB 256 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-BKpliY5_.js 1.83 MB 1.83 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-BFRBT3RT.js 650 kB 650 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-DMjbEcx7.js 13.6 kB 13.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-PDw3y6Aq.js 398 kB 398 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 6.49 MB (baseline 6.49 MB) • 🟢 -192 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-CwNmgG5x.js (removed) 180 kB 🟢 -180 kB 🟢 -43.3 kB 🟢 -36.2 kB
assets/core-K2g6zCm-.js (new) 180 kB 🔴 +180 kB 🔴 +43.3 kB 🔴 +36.2 kB
assets/WidgetSelect-5hqtKs0T.js (removed) 50.7 kB 🟢 -50.7 kB 🟢 -11.2 kB 🟢 -9.76 kB
assets/WidgetSelect-DaeUeC5s.js (new) 50.7 kB 🔴 +50.7 kB 🔴 +11.2 kB 🔴 +9.74 kB
assets/Load3DControls-BB5W9ZN3.js (removed) 35.9 kB 🟢 -35.9 kB 🟢 -5.87 kB 🟢 -5.08 kB
assets/Load3DControls-iUzCMo_g.js (new) 35.9 kB 🔴 +35.9 kB 🔴 +5.87 kB 🔴 +5.08 kB
assets/SubscriptionRequiredDialogContent-DBInG3de.js (new) 28.7 kB 🔴 +28.7 kB 🔴 +6.78 kB 🔴 +5.91 kB
assets/SubscriptionRequiredDialogContent-SnC9M-u-.js (removed) 28.7 kB 🟢 -28.7 kB 🟢 -6.78 kB 🟢 -5.92 kB
assets/CurrentUserPopoverWorkspace-boVV5bnS.js (new) 22.1 kB 🔴 +22.1 kB 🔴 +4.94 kB 🔴 +4.38 kB
assets/CurrentUserPopoverWorkspace-DaCJS1ds.js (removed) 22.1 kB 🟢 -22.1 kB 🟢 -4.94 kB 🟢 -4.38 kB
assets/Load3D-BwGQXDf6.js (new) 20.9 kB 🔴 +20.9 kB 🔴 +4.59 kB 🔴 +4.01 kB
assets/Load3D-Q4_sWiZK.js (removed) 20.9 kB 🟢 -20.9 kB 🟢 -4.59 kB 🟢 -4.02 kB
assets/WidgetInputNumber-Cc31_szC.js (new) 18.3 kB 🔴 +18.3 kB 🔴 +4.51 kB 🔴 +4.01 kB
assets/WidgetInputNumber-CJ3jMmGr.js (removed) 18.3 kB 🟢 -18.3 kB 🟢 -4.51 kB 🟢 -4.02 kB
assets/WidgetRecordAudio-Cr8Qlwy1.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.96 kB 🟢 -4.43 kB
assets/WidgetRecordAudio-DUj-0gKN.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.96 kB 🔴 +4.43 kB
assets/SubscriptionPanelContentWorkspace-CwfX9Y1f.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.47 kB 🟢 -3.89 kB
assets/SubscriptionPanelContentWorkspace-CY_ZZWx1.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.47 kB 🔴 +3.91 kB
assets/WidgetImageCrop-BNgNA0Gg.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +4.14 kB 🔴 +3.63 kB
assets/WidgetImageCrop-Czw52UVR.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -4.14 kB 🟢 -3.63 kB
assets/PanelTemplate-BXatw-zx.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -5.45 kB 🟢 -4.79 kB
assets/PanelTemplate-CejIjvr4.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +5.45 kB 🔴 +4.79 kB
assets/AudioPreviewPlayer-D87TR1jG.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.97 kB 🟢 -2.65 kB
assets/AudioPreviewPlayer-l-tGTu10.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.97 kB 🔴 +2.65 kB
assets/InviteMemberDialogContent-e-D8g2Sx.js (removed) 8.36 kB 🟢 -8.36 kB 🟢 -2.5 kB 🟢 -2.17 kB
assets/InviteMemberDialogContent-G1qmG3ga.js (new) 8.36 kB 🔴 +8.36 kB 🔴 +2.51 kB 🔴 +2.17 kB
assets/WidgetWithControl-CLAghzJX.js (removed) 8.02 kB 🟢 -8.02 kB 🟢 -2.65 kB 🟢 -2.38 kB
assets/WidgetWithControl-xCkpaXFa.js (new) 8.02 kB 🔴 +8.02 kB 🔴 +2.65 kB 🔴 +2.38 kB
assets/CreateWorkspaceDialogContent-D7CUyTIB.js (new) 5.93 kB 🔴 +5.93 kB 🔴 +1.93 kB 🔴 +1.68 kB
assets/CreateWorkspaceDialogContent-tB50a0vZ.js (removed) 5.93 kB 🟢 -5.93 kB 🟢 -1.93 kB 🟢 -1.68 kB
assets/EditWorkspaceDialogContent-Bq3IeQpJ.js (new) 5.7 kB 🔴 +5.7 kB 🔴 +1.88 kB 🔴 +1.65 kB
assets/EditWorkspaceDialogContent-QVaV8FI0.js (removed) 5.7 kB 🟢 -5.7 kB 🟢 -1.88 kB 🟢 -1.64 kB
assets/ValueControlPopover-BzPnaXQK.js (removed) 4.86 kB 🟢 -4.86 kB 🟢 -1.55 kB 🟢 -1.38 kB
assets/ValueControlPopover-CgukyzSP.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.55 kB 🔴 +1.37 kB
assets/DeleteWorkspaceDialogContent-Blebk8-i.js (new) 4.59 kB 🔴 +4.59 kB 🔴 +1.56 kB 🔴 +1.35 kB
assets/DeleteWorkspaceDialogContent-CcHnyQvn.js (removed) 4.59 kB 🟢 -4.59 kB 🟢 -1.56 kB 🟢 -1.35 kB
assets/LeaveWorkspaceDialogContent-B6ri9Q4k.js (new) 4.41 kB 🔴 +4.41 kB 🔴 +1.5 kB 🔴 +1.3 kB
assets/LeaveWorkspaceDialogContent-B8f4Ccm6.js (removed) 4.41 kB 🟢 -4.41 kB 🟢 -1.51 kB 🟢 -1.31 kB
assets/RemoveMemberDialogContent-BZL9wMFM.js (removed) 4.38 kB 🟢 -4.38 kB 🟢 -1.46 kB 🟢 -1.27 kB
assets/RemoveMemberDialogContent-RzQBZ0M5.js (new) 4.38 kB 🔴 +4.38 kB 🔴 +1.45 kB 🔴 +1.27 kB
assets/RevokeInviteDialogContent-CPRHqB95.js (removed) 4.29 kB 🟢 -4.29 kB 🟢 -1.47 kB 🟢 -1.29 kB
assets/RevokeInviteDialogContent-t7a7aAW7.js (new) 4.29 kB 🔴 +4.29 kB 🔴 +1.47 kB 🔴 +1.29 kB
assets/GlobalToast--ou8HQA5.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.1 kB 🟢 -947 B
assets/GlobalToast-BFHhiHZJ.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.1 kB 🔴 +949 B
assets/SubscribeToRun-B1plUmC9.js (removed) 2.96 kB 🟢 -2.96 kB 🟢 -1.15 kB 🟢 -1.01 kB
assets/SubscribeToRun-BjrQdo6Z.js (new) 2.96 kB 🔴 +2.96 kB 🔴 +1.15 kB 🔴 +1.02 kB
assets/cloudSessionCookie-DQfnICNd.js (removed) 2.94 kB 🟢 -2.94 kB 🟢 -935 B 🟢 -804 B
assets/cloudSessionCookie-t-MXZ4-9.js (new) 2.94 kB 🔴 +2.94 kB 🔴 +934 B 🔴 +803 B
assets/BaseViewTemplate-BB8sAuRj.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.04 kB 🔴 +935 B
assets/BaseViewTemplate-BTR31kbH.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.05 kB 🟢 -939 B
assets/CloudRunButtonWrapper-B9VNT0km.js (new) 1.79 kB 🔴 +1.79 kB 🔴 +644 B 🔴 +564 B
assets/CloudRunButtonWrapper-D_nIkFA-.js (removed) 1.79 kB 🟢 -1.79 kB 🟢 -645 B 🟢 -562 B
assets/cloudBadges-COFjio-l.js (removed) 1.08 kB 🟢 -1.08 kB 🟢 -540 B 🟢 -489 B
assets/cloudBadges-voQZVTjg.js (new) 1.08 kB 🔴 +1.08 kB 🔴 +540 B 🔴 +488 B
assets/graphHasMissingNodes-BGKtSquD.js (new) 1.06 kB 🔴 +1.06 kB 🔴 +461 B 🔴 +423 B
assets/graphHasMissingNodes-DpArtpCg.js (removed) 1.06 kB 🟢 -1.06 kB 🟢 -460 B 🟢 -429 B
assets/cloudSubscription-5mJm03ZF.js (removed) 976 B 🟢 -976 B 🟢 -464 B 🟢 -402 B
assets/cloudSubscription-BNma1fKE.js (new) 976 B 🔴 +976 B 🔴 +461 B 🔴 +396 B
assets/nightlyBadges-BLxEMeel.js (removed) 594 B 🟢 -594 B 🟢 -357 B 🟢 -310 B
assets/nightlyBadges-D55aEzWY.js (new) 594 B 🔴 +594 B 🔴 +357 B 🔴 +314 B
assets/SubscriptionPanelContentWorkspace-C2eE_ORb.js (removed) 266 B 🟢 -266 B 🟢 -136 B 🟢 -114 B
assets/SubscriptionPanelContentWorkspace-mOnQSetn.js (new) 266 B 🔴 +266 B 🔴 +136 B 🔴 +114 B
assets/WidgetInputNumber-BHLJzl_8.js (new) 186 B 🔴 +186 B 🔴 +119 B 🔴 +121 B
assets/WidgetInputNumber-D6TSfxNk.js (removed) 186 B 🟢 -186 B 🟢 -119 B 🟢 -112 B
assets/WidgetLegacy-DiIcID6o.js (removed) 164 B 🟢 -164 B 🟢 -125 B 🟢 -115 B
assets/WidgetLegacy-Dvq1rWF3.js (new) 164 B 🔴 +164 B 🔴 +125 B 🔴 +112 B
assets/Load3D-BcizpGqI.js (removed) 131 B 🟢 -131 B 🟢 -107 B 🟢 -101 B
assets/Load3D-Q1lEtgB9.js (new) 131 B 🔴 +131 B 🔴 +107 B 🔴 +110 B
assets/auto-BmypP-XQ.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-27PChCGl.js 17 kB 17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-B52_zgXW.js 18.8 kB 18.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BC_Q8we6.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BZlNQPg2.js 17.8 kB 17.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CgVf6wUK.js 17.9 kB 17.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CuidUnsD.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-D5OfZ3bv.js 18.5 kB 18.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Dmj47WTl.js 20.6 kB 20.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DUK2nLuH.js 17.2 kB 17.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-K3soE7da.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-MVcGSIbM.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LazyImage-rWQpxwnM.js 14.1 kB 14.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-3-ad-MUk.js 127 kB 127 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BBLNw8xJ.js 129 kB 129 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BHVFfeo5.js 125 kB 125 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BICThk_R.js 132 kB 132 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-C0B5rjtK.js 112 kB 112 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CBm-XJ4H.js 172 kB 172 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CiYkb6QV.js 111 kB 111 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DNur9seF.js 154 kB 154 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DtCmAq24.js 150 kB 150 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-kSNuyyLo.js 143 kB 143 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-WfrQSHBO.js 125 kB 125 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-8_T22Isd.js 2.38 kB 2.38 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-CBP8th-j.js 2 kB 2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-1THG_DJM.js 2.34 kB 2.34 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-bsLx-Wg6.js 2.84 kB 2.84 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/mixpanel.module-BiPjOPVW.js 143 B 143 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-AWEAv70v.js 442 kB 442 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BbERBXTz.js 335 kB 335 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Bg0VvRsL.js 338 kB 338 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Bou_oU4e.js 364 kB 364 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BwPth-go.js 407 kB 407 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BWX3iBBy.js 407 kB 407 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Dfh39t4u.js 361 kB 361 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DqfOW2sF.js 378 kB 378 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DyDPn66V.js 364 kB 364 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-MJExKdEs.js 368 kB 368 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-x4cF477r.js 358 kB 358 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/previousFullPath-B-XG7lU7.js 838 B 838 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/rolldown-runtime-cVp-94Rc.js 1.96 kB 1.96 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Slider-BAEfKuro.js 4.21 kB 4.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widget-CD3JnB1i.js 518 B 518 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-Bp7B7z1s.js 186 B 186 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-CgNPbPqq.js 4.71 kB 4.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-3mC7A_va.js 2.79 kB 2.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-x8L_rIAb.js 3.71 kB 3.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-f72WaoQY.js 4.57 kB 4.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-Dd0p7l7V.js 3.79 kB 3.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-DOFSeOZG.js 2.58 kB 2.58 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField-CZXFB71F.js 2.61 kB 2.61 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-bP5F2-qx.js 3.22 kB 3.22 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-DOe9Bb1I.js 1.31 kB 1.31 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-DwdEJ3mA.js 3.52 kB 3.52 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-BIK7gguT.js 3.08 kB 3.08 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 34 added / 34 removed

@DrJKL DrJKL marked this pull request as ready for review January 26, 2026 19:10
@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Jan 26, 2026
@coderabbitai coderabbitai bot requested a review from simula-r January 26, 2026 19:11
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src/stores/firebaseAuthStore.test.ts`:
- Around line 85-99: The shared hoisted mock object mockDistributionTypes (with
properties isCloud and isDesktop) retains mutations between tests causing
order-dependent failures; reset those flags in test setup/teardown by adding a
beforeEach or afterEach that sets mockDistributionTypes.isCloud = false and
mockDistributionTypes.isDesktop = false (or restores original values) so each
test starts with a clean distribution state; update the nested describe(s)
around the token-refresh tests as well to ensure isolation for
mockDistributionTypes.

Comment on lines +85 to +99
const mockDistributionTypes = vi.hoisted(() => ({
isCloud: false,
isDesktop: false
}))

vi.mock('@/platform/distribution/types', () => mockDistributionTypes)

const mockApiKeyStore = vi.hoisted(() => ({
getAuthHeader: vi.fn().mockReturnValue(null)
}))

vi.mock('@/stores/apiKeyAuthStore', () => ({
useApiKeyAuthStore: () => mockApiKeyStore
}))

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Reset hoisted distribution flags between tests to avoid leakage.

mockDistributionTypes is a shared object; setting isCloud/isDesktop to true persists beyond the token-refresh tests because vi.resetAllMocks() doesn’t reset plain object state. That can make later tests order-dependent. Please reset these flags in the outer beforeEach (or add an afterEach in the nested describe).

🛠 Suggested fix
  beforeEach(() => {
    vi.resetAllMocks()
+   mockDistributionTypes.isCloud = false
+   mockDistributionTypes.isDesktop = false

Based on learnings, keep module mocks contained and avoid global mutable state in tests.

Also applies to: 165-180

🤖 Prompt for AI Agents
In `@src/stores/firebaseAuthStore.test.ts` around lines 85 - 99, The shared
hoisted mock object mockDistributionTypes (with properties isCloud and
isDesktop) retains mutations between tests causing order-dependent failures;
reset those flags in test setup/teardown by adding a beforeEach or afterEach
that sets mockDistributionTypes.isCloud = false and
mockDistributionTypes.isDesktop = false (or restores original values) so each
test starts with a clean distribution state; update the nested describe(s)
around the token-refresh tests as well to ensure isolation for
mockDistributionTypes.

@DrJKL DrJKL merged commit 6a5b5c9 into main Jan 26, 2026
32 checks passed
@DrJKL DrJKL deleted the drjkl/dont-mock branch January 26, 2026 22:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants