import logger from '@wdio/logger' import type { WebSocket, ClientOptions } from 'ws' import WebDriver from './index.js' import { BrowserSocket } from './bidi/socket.js' import { FetchRequest } from './request/web.js' export default WebDriver export * from './index.js' import { environment } from './environment.js' const log = logger('webdriver') environment.value = { Request: FetchRequest, Socket: BrowserSocket, killDriverProcess: () => { /* noop */ }, createBidiConnection: (webSocketUrl: string, options: ClientOptions) => { log.info(`Connecting to webSocketUrl ${webSocketUrl}`) const ws = new BrowserSocket(webSocketUrl, options) return new Promise((resolve) => { ws.on('open', () => { log.info('Connected session to Bidi protocol') resolve(ws as unknown as WebSocket) }) ws.on('error', (err) => { const error = err instanceof Error ? err : new Error(String(err)) log.warn(`Couldn't connect to Bidi protocol: ${error.message}`) resolve(undefined) }) }) }, variables: {} }