From 55f5349fa84544fc3f6f35a062ddafbcb60bd431 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Mon, 8 Jan 2024 19:31:31 +0900 Subject: [PATCH] fix(browser): support vite config `server.headers` (#4890) --- packages/browser/src/node/index.ts | 7 +++++++ test/browser/specs/runner.test.mjs | 4 ++-- test/browser/test/server-headers.test.ts | 7 +++++++ test/browser/vitest.config.mts | 5 +++++ 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 test/browser/test/server-headers.test.ts diff --git a/packages/browser/src/node/index.ts b/packages/browser/src/node/index.ts index efbffad20262..8f69c8820085 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 ea67aee7c889..eaf756e4c56f 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 000000000000..097661cc2939 --- /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 baefd42c8b25..0fcac15515be 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'], },