From 65c9d55eba8f9b88be9ed560d598daccec4d5b34 Mon Sep 17 00:00:00 2001 From: Mikhail Pertsev Date: Tue, 7 Apr 2026 21:31:10 +0200 Subject: [PATCH] fix(browser): spread user server options into browser Vite server in project (#10049) --- packages/browser/src/node/index.ts | 1 + .../server-options-inline/basic.test.ts | 6 ++++ .../server-options-inline/vitest.config.ts | 28 +++++++++++++++++++ .../specs/server-options-inline.test.ts | 10 +++++++ 4 files changed, 45 insertions(+) create mode 100644 test/browser/fixtures/server-options-inline/basic.test.ts create mode 100644 test/browser/fixtures/server-options-inline/vitest.config.ts create mode 100644 test/browser/specs/server-options-inline.test.ts diff --git a/packages/browser/src/node/index.ts b/packages/browser/src/node/index.ts index 7da68231e..d927fb561 100644 --- a/packages/browser/src/node/index.ts +++ b/packages/browser/src/node/index.ts @@ -74,6 +74,7 @@ export const createBrowserServer: BrowserServerFactory = async (options) => { configLoader: project.vite.config.inlineConfig.configLoader, // watch is handled by Vitest server: { + ...project.options?.server, hmr: false, watch: null, }, diff --git a/test/browser/fixtures/server-options-inline/basic.test.ts b/test/browser/fixtures/server-options-inline/basic.test.ts new file mode 100644 index 000000000..981b77b7b --- /dev/null +++ b/test/browser/fixtures/server-options-inline/basic.test.ts @@ -0,0 +1,6 @@ +import { expect, test } from 'vitest' + +test('server headers from inline project config', async () => { + const res = await fetch('/') + expect(res.headers.get('x-inline-project')).toBe('from-inline-config') +}) diff --git a/test/browser/fixtures/server-options-inline/vitest.config.ts b/test/browser/fixtures/server-options-inline/vitest.config.ts new file mode 100644 index 000000000..02105cbf5 --- /dev/null +++ b/test/browser/fixtures/server-options-inline/vitest.config.ts @@ -0,0 +1,28 @@ +import { fileURLToPath } from 'node:url' +import { defineConfig } from 'vitest/config' +import { instances, provider } from '../../settings' + +// Test that server options defined in an inline project config +// are passed through to the browser Vite server. +export default defineConfig({ + cacheDir: fileURLToPath(new URL('./node_modules/.vite', import.meta.url)), + test: { + projects: [ + { + server: { + headers: { + 'x-inline-project': 'from-inline-config', + }, + }, + test: { + browser: { + enabled: true, + headless: true, + provider, + instances, + }, + }, + }, + ], + }, +}) diff --git a/test/browser/specs/server-options-inline.test.ts b/test/browser/specs/server-options-inline.test.ts new file mode 100644 index 000000000..544939640 --- /dev/null +++ b/test/browser/specs/server-options-inline.test.ts @@ -0,0 +1,10 @@ +import { expect, test } from 'vitest' +import { instances, runBrowserTests } from './utils' + +test('inline project server options are passed to browser server', async () => { + const { stdout, stderr } = await runBrowserTests({ + root: './fixtures/server-options-inline', + }) + expect(stderr).toBe('') + expect(stdout).toReportSummaryTestFiles({ passed: instances.length }) +}) -- 2.51.2