MCPcopy
hub / github.com/vitest-dev/vitest / createClient

Function createClient

packages/browser/src/client/client.ts:61–178  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

59}
60
61function createClient() {
62 const autoReconnect = true
63 const reconnectInterval = 2000
64 const reconnectTries = 10
65 const connectTimeout = 60000
66
67 let tries = reconnectTries
68
69 const ctx: VitestBrowserClient = {
70 ws: new WebSocket(ENTRY_URL),
71 waitForConnection,
72 } as VitestBrowserClient
73
74 let onMessage: Function
75
76 ctx.rpc = createBirpc<WebSocketBrowserHandlers, WebSocketBrowserEvents>(
77 {
78 async onCancel(reason) {
79 await Promise.all(onCancelCallbacks.map(fn => fn(reason)))
80 },
81 async createTesters(options) {
82 const orchestrator = await waitForOrchestrator()
83 return orchestrator.createTesters(options)
84 },
85 async cleanupTesters() {
86 const orchestrator = await waitForOrchestrator()
87 return orchestrator.cleanupTesters()
88 },
89 cdpEvent(event: string, payload: unknown) {
90 const cdp = getBrowserState().cdp
91 if (!cdp) {
92 return
93 }
94 cdp.emit(event, payload)
95 },
96 async resolveManualMock(url: string) {
97 // @ts-expect-error not typed global API
98 const mocker = globalThis.__vitest_mocker__ as ModuleMocker | undefined
99 const responseId = getBrowserState().sessionId
100 if (!mocker) {
101 return { url, keys: [], responseId }
102 }
103 const exports = await mocker.resolveFactoryModule(url)
104 const keys = Object.keys(exports)
105 return {
106 url,
107 keys,
108 responseId,
109 }
110 },
111 },
112 {
113 post: msg => ctx.ws.send(msg),
114 on: fn => (onMessage = fn),
115 serialize: e =>
116 stringify(e, (_, v) => {
117 if (v instanceof Error) {
118 return {

Callers 1

client.tsFile · 0.70

Calls 3

stringifyFunction · 0.85
registerWSFunction · 0.70
sendMethod · 0.45

Tested by

no test coverage detected