From d9d6d2755d0ec2a39b06bd32a0d77e77ac2e9750 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Mon, 9 Jun 2025 09:19:33 +0200 Subject: [PATCH 1/2] feat(browser): use base url instead of __vitest__ --- packages/browser/src/client/orchestrator.ts | 3 +-- .../browser/src/node/middlewares/orchestratorMiddleware.ts | 2 +- packages/browser/src/node/middlewares/testerMiddleware.ts | 2 +- packages/browser/src/node/pool.ts | 5 +++-- packages/browser/src/node/projectParent.ts | 4 +++- packages/vitest/src/node/logger.ts | 2 +- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/browser/src/client/orchestrator.ts b/packages/browser/src/client/orchestrator.ts index f1b07195720e..bac248cdd6fa 100644 --- a/packages/browser/src/client/orchestrator.ts +++ b/packages/browser/src/client/orchestrator.ts @@ -6,7 +6,6 @@ import { relative } from 'pathe' import { getUiAPI } from './ui' import { getBrowserState, getConfig } from './utils' -const url = new URL(location.href) const ID_ALL = '__vitest_all__' export class IframeOrchestrator { @@ -187,7 +186,7 @@ export class IframeOrchestrator { private createTestIframe(iframeId: string) { const iframe = document.createElement('iframe') - const src = `${url.pathname}__vitest_test__/__test__/?sessionId=${getBrowserState().sessionId}&iframeId=${iframeId}` + const src = `${getConfig().base || '/'}?sessionId=${getBrowserState().sessionId}&iframeId=${iframeId}` iframe.setAttribute('loading', 'eager') iframe.setAttribute('src', src) iframe.setAttribute('data-vitest', 'true') diff --git a/packages/browser/src/node/middlewares/orchestratorMiddleware.ts b/packages/browser/src/node/middlewares/orchestratorMiddleware.ts index c6d5d8848a8d..d9890cbe091e 100644 --- a/packages/browser/src/node/middlewares/orchestratorMiddleware.ts +++ b/packages/browser/src/node/middlewares/orchestratorMiddleware.ts @@ -9,7 +9,7 @@ export function createOrchestratorMiddleware(parentServer: ParentBrowserProject) return next() } const url = new URL(req.url, 'http://localhost') - if (url.pathname !== parentServer.base) { + if (url.pathname !== parentServer.prefixOrchestratorUrl) { return next() } diff --git a/packages/browser/src/node/middlewares/testerMiddleware.ts b/packages/browser/src/node/middlewares/testerMiddleware.ts index 10026d9c694d..386585bf3759 100644 --- a/packages/browser/src/node/middlewares/testerMiddleware.ts +++ b/packages/browser/src/node/middlewares/testerMiddleware.ts @@ -9,7 +9,7 @@ export function createTesterMiddleware(browserServer: ParentBrowserProject): Con return next() } const url = new URL(req.url, 'http://localhost') - if (!url.pathname.startsWith(browserServer.prefixTesterUrl) || !url.searchParams.has('sessionId')) { + if (url.pathname !== browserServer.prefixTesterUrl || !url.searchParams.has('sessionId')) { return next() } diff --git a/packages/browser/src/node/pool.ts b/packages/browser/src/node/pool.ts index 479c3b30e2ca..cef407fc1cb0 100644 --- a/packages/browser/src/node/pool.ts +++ b/packages/browser/src/node/pool.ts @@ -248,9 +248,10 @@ class BrowserPool { this.project, this, ) - const url = new URL('/', this.options.origin) + const browser = this.project.browser! + const url = new URL('/__vitest_test__/', this.options.origin) url.searchParams.set('sessionId', sessionId) - const pagePromise = this.project.browser!.provider.openPage( + const pagePromise = browser.provider.openPage( sessionId, url.toString(), ) diff --git a/packages/browser/src/node/projectParent.ts b/packages/browser/src/node/projectParent.ts index ff6f2373a65a..32c3e1863c00 100644 --- a/packages/browser/src/node/projectParent.ts +++ b/packages/browser/src/node/projectParent.ts @@ -26,6 +26,7 @@ export class ParentBrowserProject { public testerScripts: HtmlTagDescriptor[] | undefined public faviconUrl: string + public prefixOrchestratorUrl: string public prefixTesterUrl: string public manifest: Promise | Vite.Manifest @@ -108,7 +109,8 @@ export class ParentBrowserProject { this.commands[command] = project.config.browser.commands[command] } - this.prefixTesterUrl = `${base}__vitest_test__/__test__/` + this.prefixTesterUrl = `${base || '/'}` + this.prefixOrchestratorUrl = `${base}__vitest_test__/` this.faviconUrl = `${base}__vitest__/favicon.svg` this.manifest = (async () => { diff --git a/packages/vitest/src/node/logger.ts b/packages/vitest/src/node/logger.ts index c1a46d5215f4..71f936275641 100644 --- a/packages/vitest/src/node/logger.ts +++ b/packages/vitest/src/node/logger.ts @@ -252,7 +252,7 @@ export class Logger { const providerString = provider === 'preview' ? '' : ` by ${c.reset(c.bold(provider))}` this.log( c.dim( - `${output}Browser runner started${providerString} ${c.dim('at')} ${c.blue(new URL('/', origin))}\n`, + `${output}Browser runner started${providerString} ${c.dim('at')} ${c.blue(new URL('/__vitest_test__/', origin))}\n`, ), ) } From 681827a5710a7f65eb78d727dc0560e5a2f919a4 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Mon, 9 Jun 2025 09:44:50 +0200 Subject: [PATCH 2/2] chore: fix base --- packages/browser/src/client/orchestrator.ts | 2 +- .../fixtures/mocking-out-of-root/project1/vitest.config.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/browser/src/client/orchestrator.ts b/packages/browser/src/client/orchestrator.ts index bac248cdd6fa..448638374201 100644 --- a/packages/browser/src/client/orchestrator.ts +++ b/packages/browser/src/client/orchestrator.ts @@ -186,7 +186,7 @@ export class IframeOrchestrator { private createTestIframe(iframeId: string) { const iframe = document.createElement('iframe') - const src = `${getConfig().base || '/'}?sessionId=${getBrowserState().sessionId}&iframeId=${iframeId}` + const src = `/?sessionId=${getBrowserState().sessionId}&iframeId=${iframeId}` iframe.setAttribute('loading', 'eager') iframe.setAttribute('src', src) iframe.setAttribute('data-vitest', 'true') diff --git a/test/browser/fixtures/mocking-out-of-root/project1/vitest.config.ts b/test/browser/fixtures/mocking-out-of-root/project1/vitest.config.ts index 15b50b920b95..87ea3c9c9ae5 100644 --- a/test/browser/fixtures/mocking-out-of-root/project1/vitest.config.ts +++ b/test/browser/fixtures/mocking-out-of-root/project1/vitest.config.ts @@ -14,7 +14,6 @@ export default defineConfig({ screenshotFailures: false, headless: true, instances, - headless: true, }, }, })