···11+import type { ModuleMocker } from '@vitest/mocker/browser'
12import type { CancelReason } from '@vitest/runner'
23import type { BirpcReturn } from 'birpc'
33-import type { ModuleMocker } from 'vitest/internal/browser'
44import type { WebSocketBrowserEvents, WebSocketBrowserHandlers } from '../node/types'
55import type { IframeOrchestrator } from './orchestrator'
66import { createBirpc } from 'birpc'
+1-14
packages/browser/src/client/orchestrator.ts
···11import type { GlobalChannelIncomingEvent, IframeChannelIncomingEvent, IframeChannelOutgoingEvent, IframeViewportDoneEvent, IframeViewportFailEvent } from '@vitest/browser/client'
22import type { BrowserTesterOptions, SerializedConfig } from 'vitest'
33import { channel, client, globalChannel } from '@vitest/browser/client'
44+import { generateHash } from '@vitest/runner/utils'
45import { relative } from 'pathe'
56import { getUiAPI } from './ui'
67import { getBrowserState, getConfig } from './utils'
···294295 const project = config.name || ''
295296 const path = relative(config.root, file)
296297 return generateHash(`${path}${project}`)
297297-}
298298-299299-// importing this from @vitest/runner bring it the whole runner
300300-function generateHash(str: string): string {
301301- let hash = 0
302302- if (str.length === 0) {
303303- return `${hash}`
304304- }
305305- for (let i = 0; i < str.length; i++) {
306306- const char = str.charCodeAt(i)
307307- hash = (hash << 5) - hash + char
308308- hash = hash & hash // Convert to 32bit integer
309309- }
310310- return `${hash}`
311298}
312299313300async function setIframeViewport(