Skip to content

Commit 090064f

Browse files
authored
fix: fix ssr environment runner in project (#9584)
1 parent 4ff8c6f commit 090064f

File tree

6 files changed

+44
-1
lines changed

6 files changed

+44
-1
lines changed

packages/vitest/src/node/plugins/workspace.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ export function WorkspaceVitestPlugin(
245245
},
246246
{
247247
name: 'vitest:project:server',
248+
enforce: 'pre',
248249
async configureServer(server) {
249250
const options = deepMerge({}, configDefaults, server.config.test || {})
250251
await project._configureServer(options, server)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { test, expect } from 'vitest'
2+
3+
test('basic', () => {
4+
expect(1 + 1).toBe(2)
5+
})
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import * as vite from 'vite'
2+
export default vite
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
})
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { defineConfig } from "vitest/config";
2+
3+
export default defineConfig({
4+
test: {
5+
projects: ["project"],
6+
},
7+
});

test/cli/test/ssr-runner.test.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ import { runVitest } from '../../test-utils'
44

55
// https://github.com/vitest-dev/vitest/issues/9324
66
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('')
89
expect((globalThis as any).__testSsrRunner).toBe(version)
910
})
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)
16+
})

0 commit comments

Comments
 (0)