[READ-ONLY] Mirror of https://github.com/vitest-dev/vitest. Next generation testing framework powered by Vite. vitest.dev
test testing-tools vite
12

Configure Feed

Select the types of activity you want to include in your feed.

fix: fix ssr environment runner in project (#9584)

authored by

Hiroshi Ogawa and committed by
GitHub
(Feb 4, 2026, 2:13 PM +0100) 090064f9 4ff8c6fa

+44 -1
+8 -1
test/cli/test/ssr-runner.test.ts
··· 4 4 5 5 // https://github.com/vitest-dev/vitest/issues/9324 6 6 it('ssr runner.import() works in configureServer', async () => { 7 - await runVitest({ root: './fixtures/ssr-runner' }) 7 + const { stderr } = await runVitest({ root: './fixtures/ssr-runner' }) 8 + expect(stderr).toBe('') 8 9 expect((globalThis as any).__testSsrRunner).toBe(version) 10 + }) 11 + 12 + it('works in project', async () => { 13 + const { stderr } = await runVitest({ root: './fixtures/ssr-runner-project' }) 14 + expect(stderr).toBe('') 15 + expect((globalThis as any).__testSsrRunnerProject).toBe(version) 9 16 })
+7
test/cli/fixtures/ssr-runner-project/vitest.config.ts
··· 1 + import { defineConfig } from "vitest/config"; 2 + 3 + export default defineConfig({ 4 + test: { 5 + projects: ["project"], 6 + }, 7 + });
+1
packages/vitest/src/node/plugins/workspace.ts
··· 245 245 }, 246 246 { 247 247 name: 'vitest:project:server', 248 + enforce: 'pre', 248 249 async configureServer(server) { 249 250 const options = deepMerge({}, configDefaults, server.config.test || {}) 250 251 await project._configureServer(options, server)
+5
test/cli/fixtures/ssr-runner-project/project/basic.test.ts
··· 1 + import { test, expect } from 'vitest' 2 + 3 + test('basic', () => { 4 + expect(1 + 1).toBe(2) 5 + })
+2
test/cli/fixtures/ssr-runner-project/project/test-runner.js
··· 1 + import * as vite from 'vite' 2 + export default vite
+21
test/cli/fixtures/ssr-runner-project/project/vitest.config.ts
··· 1 + import assert from 'node:assert' 2 + import { isRunnableDevEnvironment, createServer } from 'vite' 3 + import { defineConfig } from 'vitest/config' 4 + 5 + export default defineConfig({ 6 + plugins: [ 7 + { 8 + name: 'test-ssr-runner', 9 + // test ssr runner.import() with correct external semantics in configureServer hook 10 + // vite should be externalized and reference-equal to the directly imported one 11 + async configureServer(server) { 12 + const ssr = server.environments.ssr 13 + if (isRunnableDevEnvironment(ssr)) { 14 + const m = await ssr.runner.import<{ default: typeof import("vite") }>('./test-runner.js') 15 + assert(m.default.createServer === createServer) 16 + ;(globalThis as any).__testSsrRunnerProject = m.default.version 17 + } 18 + }, 19 + }, 20 + ], 21 + })