build(deps-dev): upgrade web/ to Vite 8 + Vitest 4 (coordinated cluster bump)#61
Merged
Conversation
…er bump) Vite 5→8 (Rolldown bundler), Vitest 2→4, @vitejs/plugin-react 4→6, lockfile regenerated and deduped. @types/node ^25 added explicitly (vitest 4 no longer supplies Node types transitively) with 'node' in tsconfig types. localStorage test polyfill retained — the populateGlobal bug it works around still reproduces on Node 26 (CI), though not on Node 24.16; comment updated with findings. e2e: optional E2E_CHROMIUM_PATH browser override; fail tests on uncaught page errors. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Closes #59 (retargeted from Vite 7 to Vite 8 — 8.x went stable after the issue was written, and
@vitejs/plugin-react@6requires it; stopping at 7 would have recreated the same Dependabot deadlock one major later).Coordinated bump of the version-locked Vite cluster in
web/:vite^5.4.10^8.0.16vitest^2.1.9^4.1.8@vitejs/plugin-react^4.3.3^6.0.2@types/node^25(explicit)Lockfile regenerated and deduped — single major of everything, no vite 5/7 or
@types/node24 remnants.jsdomunchanged at 29.x.Changes beyond version bumps:
@types/nodeadded as a direct devDependency +"node"in tsconfigtypes— Vitest 4 no longer supplies Node types transitively, which broketscon test files importingnode:fs/node:path. (^25rather than^24to dedupe with the transitive resolution;@types/node@26doesn't exist yet.)web/src/test-setup.ts) — removal was attempted (suite passes without it on Node 24.16 / vitest 4.1.8) but CI on Node 26 proved thepopulateGlobalbug still reproduces there; comment now records the node-version dependence.e2e/playwright.config.tsgains an optionalE2E_CHROMIUM_PATHenv override for hosts where Playwright's bundled Chromium isn't installable — supplied at runtime, no host-specific path committed; CI behavior unchanged.PROJECT.mdtest-count drift fixed (counts dropped — they always rot).vite.config.ts/vitest.config.ts: no changes needed.Notes:
build.targetis set, so the default moves from Vite 5's'modules'(~Chrome 87/Safari 14) tobaseline-widely-available(~Chrome 107+/Safari 16+). Accepted deliberately.@sentry/vite-plugin(5.3.0, latest) loads and builds cleanly under Rolldown, but the sourcemap upload/delete path only exercises on tagged release builds with auth — watch the first tagged release (maps emitted, upload succeeds, maps deleted before the Caddy stage). Follow-up idea: CI assertion that the image serves no*.map.Verification (local, full gate):
vite build✓ (tsc + rolldown)vitest run✓ 208/208 (14 files; same count as pre-bump baseline)node:26-alpine, frozen lockfile) ✓Reviewed pre-merge by code-reviewer, comment-analyzer, and pr-test-analyzer agents; all critical/important findings addressed. Supersedes Dependabot's stale
@vitejs/plugin-reactattempts (e.g. #4).🤖 Generated with Claude Code