···123123 })
124124})
125125126126+it('disables server.hmr before plugins read it in their own config hook', async () => {
127127+ // `@vitejs/plugin-react` (and others) turn features like React Fast Refresh
128128+ // off only when they observe `server.hmr === false` inside their `config`
129129+ // hook. Vitest must disable HMR early enough for such plugins — which often
130130+ // run as `enforce: 'post'` — to see it, otherwise Fast Refresh stays on and
131131+ // injects `$RefreshSig$`, which is undefined outside a browser preamble.
132132+ let observedHmr: unknown = 'unset'
133133+ await resolveTestConfig({
134134+ $viteConfig: {
135135+ plugins: [
136136+ {
137137+ name: 'test:observe-hmr',
138138+ enforce: 'post',
139139+ config(userConfig) {
140140+ observedHmr = userConfig.server?.hmr
141141+ },
142142+ },
143143+ ],
144144+ },
145145+ })
146146+ expect(observedHmr).toBe(false)
147147+})
148148+126149it('experimental fsModuleCache is inherited in a project', async () => {
127150 const v = await config({
128151 experimental: {