Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/vitest-dev/vitest. Next generation testing framework powered by Vite. vitest.dev
test testing-tools vite
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import type { CDPSession } from 'vitest/node'import type { WebSocketBrowserRPC } from '../types'
export class BrowserServerCDPHandler { private listenerIds: Record<string, string[]> = {}
private listeners: Record<string, (payload: unknown) => void> = {}
constructor( private session: CDPSession, private tester: WebSocketBrowserRPC, ) {}
send(method: string, params?: Record<string, unknown>): Promise<unknown> { return this.session.send(method as any, params) }
on(event: string, id: string, once = false): void { if (!this.listenerIds[event]) { this.listenerIds[event] = [] } this.listenerIds[event].push(id)
if (!this.listeners[event]) { this.listeners[event] = (payload) => { this.tester.cdpEvent(event, payload) if (once) { this.off(event, id) } }
this.session.on(event as any, this.listeners[event]) } }
off(event: string, id: string): void { if (!this.listenerIds[event]) { this.listenerIds[event] = [] } this.listenerIds[event] = this.listenerIds[event].filter((l) => l !== id)
if (!this.listenerIds[event].length) { this.session.off(event as any, this.listeners[event]) delete this.listeners[event] } }
once(event: string, listener: string): void { this.on(event, listener, true) }}