chore(ui): coordinated toolchain majors — vitest 4 + @vitest/coverage-v8 4 + @vitejs/plugin-react 6 + vite 8#49
Merged
Conversation
…6, vite 8) Land the coupled UI devDependency major upgrades together, since merging the individual dependabot branches conflicts and the bumps share peer constraints: - vitest 3 -> 4 (^4.1.0) supersedes #45 - @vitest/coverage-v8 3 -> 4 (^4.1.0) supersedes #46 - @vitejs/plugin-react 5 -> 6 (^6.0.1) supersedes #43 - add vite ^8.1.0 (required peer of @vitejs/plugin-react 6) Mock migration for the vitest 4 mock API change (vi.fn().mockImplementation / vi.fn(() => obj) is no longer constructable with `new`): - ui/vitest.setup.ts: global ResizeObserver mock -> class MockResizeObserver - ui/src/components/hls-player.test.tsx: Hls constructor mock -> class MockHls with static isSupported/Events/ErrorTypes Verification: `npm run build` passes; `npx vitest run` -> 712 passed / 1 failed, where the single failure is the pre-existing unrelated popover.test.tsx case (known-good baseline). eslint 9 -> 10 (#40) intentionally NOT included: eslint-config-next still depends on eslint-plugin-react ^7.37.0, whose latest release (7.37.5) declares `peer eslint: ^...^9.7` and uses the old rule-context API that eslint 10 removed. No published eslint-plugin-react / eslint-config-next yet supports eslint 10, so #40 remains upstream-blocked. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jun 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lands the coupled UI devDependency major upgrades together. The individual dependabot branches conflict with each other and share peer constraints (plugin-react 6 needs vite 8; vitest 4 changed its mock API), so they are done as one coordinated change.
Bumps (in
ui/package.json):^4.1.0— supersedes chore(deps-dev): bump vitest from 3.2.4 to 4.1.0 in /ui #45^4.1.0— supersedes chore(deps-dev): bump @vitest/coverage-v8 from 3.2.4 to 4.1.0 in /ui #46^6.0.1— supersedes chore(deps-dev): bump @vitejs/plugin-react from 5.2.0 to 6.0.1 in /ui #43^8.1.0— required peer of@vitejs/plugin-react@6Mock migration (vitest 4)
vitest 4 changed the mock API:
vi.fn().mockImplementation(() => ({...}))andvi.fn(() => obj)are no longer constructable withnew. Migrated the affected mocks to classes:ui/vitest.setup.ts— globalResizeObservermock →class MockResizeObserverui/src/components/hls-player.test.tsx—Hlsconstructor mock →class MockHlswith staticisSupported/Events/ErrorTypes(fixes themockHlsInstance is not a constructorfailures, ~66 tests)Verification (local)
npm run build— passesnpx vitest run— 712 passed / 1 failed (713 total). The single failure is the pre-existing, unrelatedui/src/components/ui/popover.test.tsx > should close when clicking outside, which is the documented known-good baseline. All previously-broken mock tests now pass.eslint 9 → 10 (#40): NOT included — upstream-blocked
eslint stays at 9.
eslint-config-next@16.1.6depends oneslint-plugin-react ^7.37.0; its latest release (7.37.5) declarespeer eslint: ^3 || ... || ^9.7and still uses the rule-context API removed in eslint 10. No publishedeslint-plugin-react/eslint-config-nextsupports eslint 10 yet, so forcing it would require a risky override and breaks lint. #40 should remain open as upstream-blocked.Note:
npm run lintreports 2 pre-existing errors in untouched app source (src/app/[locale]/errors/page.tsx,src/components/file-upload.tsx) fromeslint-plugin-react-hooksrules — these are unrelated to this change (eslint/config versions unchanged).Supersedes
🤖 Generated with Claude Code