diff --git a/packages/browser/src/node/index.ts b/packages/browser/src/node/index.ts index efbffad20..8f69c8820 100644 --- a/packages/browser/src/node/index.ts +++ b/packages/browser/src/node/index.ts @@ -28,6 +28,13 @@ export default (project: WorkspaceProject, base = '/'): Plugin[] => { sirv(resolve(distRoot, 'client'), { single: false, dev: true, + setHeaders(res, _pathname, _stats) { + const headers = server.config.server.headers + if (headers) { + for (const name in headers) + res.setHeader(name, headers[name]!) + } + }, }), ) }, diff --git a/test/browser/specs/runner.test.mjs b/test/browser/specs/runner.test.mjs index ea67aee7c..eaf756e4c 100644 --- a/test/browser/specs/runner.test.mjs +++ b/test/browser/specs/runner.test.mjs @@ -11,8 +11,8 @@ const { } = await runVitest() await test('tests are actually running', async () => { - assert.ok(browserResultJson.testResults.length === 10, 'Not all the tests have been run') - assert.ok(passedTests.length === 8, 'Some tests failed') + assert.ok(browserResultJson.testResults.length === 11, 'Not all the tests have been run') + assert.ok(passedTests.length === 9, 'Some tests failed') assert.ok(failedTests.length === 2, 'Some tests have passed but should fail') assert.doesNotMatch(stderr, /Unhandled Error/, 'doesn\'t have any unhandled errors') diff --git a/test/browser/test/server-headers.test.ts b/test/browser/test/server-headers.test.ts new file mode 100644 index 000000000..097661cc2 --- /dev/null +++ b/test/browser/test/server-headers.test.ts @@ -0,0 +1,7 @@ +import { expect, it } from 'vitest' + +it('server.headers', async () => { + const res = await fetch('/') + expect(res.ok) + expect(res.headers.get('x-custom')).toBe('hello') +}) diff --git a/test/browser/vitest.config.mts b/test/browser/vitest.config.mts index baefd42c8..0fcac1551 100644 --- a/test/browser/vitest.config.mts +++ b/test/browser/vitest.config.mts @@ -7,6 +7,11 @@ const dir = dirname(fileURLToPath(import.meta.url)) function noop() {} export default defineConfig({ + server: { + headers: { + 'x-custom': 'hello', + }, + }, optimizeDeps: { include: ['@vitest/cjs-lib'], },