diff --git a/packages/browser/src/node/serverOrchestrator.ts b/packages/browser/src/node/serverOrchestrator.ts index e9018d9a48c6..e730fad0c555 100644 --- a/packages/browser/src/node/serverOrchestrator.ts +++ b/packages/browser/src/node/serverOrchestrator.ts @@ -45,7 +45,7 @@ export async function resolveOrchestrator( __VITEST_TYPE__: '"orchestrator"', __VITEST_SESSION_ID__: JSON.stringify(sessionId), __VITEST_TESTER_ID__: '"none"', - __VITEST_OTEL_CARRIER__: url.searchParams.get('otelCarrier') ?? 'null', + __VITEST_OTEL_CARRIER__: JSON.stringify(session?.otelCarrier ?? null), __VITEST_PROVIDED_CONTEXT__: JSON.stringify(stringify(browserProject.project.getProvidedContext())), __VITEST_API_TOKEN__: JSON.stringify(globalServer.vitest.config.api.token), }) diff --git a/packages/vitest/src/node/browser/sessions.ts b/packages/vitest/src/node/browser/sessions.ts index 4b1f72e1a02b..35cffa71e832 100644 --- a/packages/vitest/src/node/browser/sessions.ts +++ b/packages/vitest/src/node/browser/sessions.ts @@ -1,3 +1,4 @@ +import type { OTELCarrier } from '../../utils/traces' import type { TestProject } from '../project' import type { BrowserServerStateSession } from '../types/browser' import { createDefer } from '@vitest/utils/helpers' @@ -15,7 +16,12 @@ export class BrowserSessions { this.sessions.delete(sessionId) } - createSession(sessionId: string, project: TestProject, pool: { reject: (error: Error) => void }): Promise { + createSession( + sessionId: string, + project: TestProject, + pool: { reject: (error: Error) => void }, + options?: { otelCarrier?: OTELCarrier }, + ): Promise { // this promise only waits for the WS connection with the orchestrator to be established const defer = createDefer() @@ -25,6 +31,7 @@ export class BrowserSessions { this.sessions.set(sessionId, { project, + otelCarrier: options?.otelCarrier, connected: () => { defer.resolve() clearTimeout(timeout) diff --git a/packages/vitest/src/node/project.ts b/packages/vitest/src/node/project.ts index b6f687db692e..f7a3646d07a4 100644 --- a/packages/vitest/src/node/project.ts +++ b/packages/vitest/src/node/project.ts @@ -626,14 +626,12 @@ export class TestProject { const url = new URL('/__vitest_test__/', origin) url.searchParams.set('sessionId', sessionId) const otelCarrier = this.vitest._traces.getContextCarrier() - if (otelCarrier) { - url.searchParams.set('otelCarrier', JSON.stringify(otelCarrier)) - } this.vitest._browserSessions.sessionIds.add(sessionId) const sessionPromise = this.vitest._browserSessions.createSession( sessionId, this, pool, + { otelCarrier }, ) const pagePromise = this.browser.provider.openPage( sessionId, diff --git a/packages/vitest/src/node/types/browser.ts b/packages/vitest/src/node/types/browser.ts index 5dd144b1eab7..5e0b169dd20d 100644 --- a/packages/vitest/src/node/types/browser.ts +++ b/packages/vitest/src/node/types/browser.ts @@ -6,6 +6,7 @@ import type { Plugin, ViteDevServer } from 'vite' import type { BrowserCommands, CDPSession } from 'vitest/browser' import type { BrowserTraceViewMode } from '../../runtime/config' import type { BrowserTesterOptions } from '../../types/browser' +import type { OTELCarrier } from '../../utils/traces' import type { TestProject } from '../project' import type { ApiConfig, ProjectConfig } from './config' @@ -309,6 +310,7 @@ export interface BrowserCommandContext { export interface BrowserServerStateSession { project: TestProject + otelCarrier?: OTELCarrier connected: () => void fail: (v: Error) => void }