diff --git a/packages/browser/src/client/client.ts b/packages/browser/src/client/client.ts index 84e6a260e..b489d6046 100644 --- a/packages/browser/src/client/client.ts +++ b/packages/browser/src/client/client.ts @@ -18,7 +18,7 @@ export const RPC_ID: string const METHOD = getBrowserState().method export const ENTRY_URL: string = `${ location.protocol === 'https:' ? 'wss:' : 'ws:' -}//${HOST}/__vitest_browser_api__?type=${PAGE_TYPE}&rpcId=${RPC_ID}&sessionId=${getBrowserState().sessionId}&projectName=${getBrowserState().config.name || ''}&method=${METHOD}&token=${(window as any).VITEST_API_TOKEN || '0'}` +}//${HOST}/__vitest_browser_api__?type=${PAGE_TYPE}&rpcId=${RPC_ID}&sessionId=${getBrowserState().sessionId}&projectName=${encodeURIComponent(getBrowserState().config.name || '')}&method=${METHOD}&token=${(window as any).VITEST_API_TOKEN || '0'}` const onCancelCallbacks: ((reason: CancelReason) => void)[] = [] diff --git a/test/browser/fixtures/project-name-encoding/basic.test.ts b/test/browser/fixtures/project-name-encoding/basic.test.ts new file mode 100644 index 000000000..29093bc5f --- /dev/null +++ b/test/browser/fixtures/project-name-encoding/basic.test.ts @@ -0,0 +1,5 @@ +import { expect, test } from 'vitest' + +test('basic test', () => { + expect(true).toBe(true) +}) diff --git a/test/browser/fixtures/project-name-encoding/vitest.config.ts b/test/browser/fixtures/project-name-encoding/vitest.config.ts new file mode 100644 index 000000000..0afbb6b84 --- /dev/null +++ b/test/browser/fixtures/project-name-encoding/vitest.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + name: 'Components & Hooks', + browser: { + enabled: true, + headless: true, + }, + }, +}) diff --git a/test/browser/specs/project-name-encoding.test.ts b/test/browser/specs/project-name-encoding.test.ts new file mode 100644 index 000000000..3c6dcea1a --- /dev/null +++ b/test/browser/specs/project-name-encoding.test.ts @@ -0,0 +1,21 @@ +import { expect, test } from 'vitest' +import { instances, provider, runBrowserTests } from './utils' + +test('runs tests correctly when project name contains special characters', async () => { + const { stderr, stdout, exitCode, ctx } = await runBrowserTests({ + root: './fixtures/project-name-encoding', + browser: { + provider, + instances, + }, + }) + + expect(stderr).toBe('') + expect(exitCode).toBe(0) + + const projectName = ctx.config.name + + instances.forEach(({ browser }) => { + expect(stdout).toReportPassedTest('basic.test.ts', `${projectName} (${browser})`) + }) +})