@@ -41,6 +41,7 @@ const useMultiFileAuthStateMock = vi.mocked(baileys.useMultiFileAuthState);
4141let createWaSocket : typeof import ( "./session.js" ) . createWaSocket ;
4242let formatError : typeof import ( "./session.js" ) . formatError ;
4343let logWebSelfId : typeof import ( "./session.js" ) . logWebSelfId ;
44+ let OPENCLAW_WHATSAPP_WEB_SOCKET_URL_ENV : typeof import ( "./session.js" ) . OPENCLAW_WHATSAPP_WEB_SOCKET_URL_ENV ;
4445let renderQrTerminalMock : ReturnType < typeof vi . fn > ;
4546let waitForWaConnection : typeof import ( "./session.js" ) . waitForWaConnection ;
4647let waitForCredsSaveQueue : typeof import ( "./session.js" ) . waitForCredsSaveQueue ;
@@ -153,6 +154,7 @@ function readLastSocketOptions(): {
153154 fetchAgent ?: unknown ;
154155 keepAliveIntervalMs ?: number ;
155156 printQRInTerminal ?: boolean ;
157+ waWebSocketUrl ?: string | URL ;
156158 logger ?: { level ?: string ; trace ?: unknown } ;
157159} {
158160 const [ options ] = firstMockCall (
@@ -169,6 +171,7 @@ function readLastSocketOptions(): {
169171 fetchAgent ?: unknown ;
170172 keepAliveIntervalMs ?: number ;
171173 printQRInTerminal ?: boolean ;
174+ waWebSocketUrl ?: string | URL ;
172175 logger ?: { level ?: string ; trace ?: unknown } ;
173176 } ;
174177}
@@ -224,6 +227,7 @@ describe("web session", () => {
224227 createWaSocket,
225228 formatError,
226229 logWebSelfId,
230+ OPENCLAW_WHATSAPP_WEB_SOCKET_URL_ENV ,
227231 waitForWaConnection,
228232 waitForCredsSaveQueue,
229233 writeCredsJsonAtomically,
@@ -411,6 +415,40 @@ describe("web session", () => {
411415 expect ( passed . defaultQueryTimeoutMs ) . toBe ( 120_000 ) ;
412416 } ) ;
413417
418+ it ( "passes explicit Baileys WebSocket URL overrides" , async ( ) => {
419+ await createWaSocket ( false , false , {
420+ waWebSocketUrl : " ws://127.0.0.1:49152/ws/chat " ,
421+ } ) ;
422+
423+ expect ( readLastSocketOptions ( ) . waWebSocketUrl ) . toBe ( "ws://127.0.0.1:49152/ws/chat" ) ;
424+ } ) ;
425+
426+ it ( "uses OPENCLAW_WHATSAPP_WEB_SOCKET_URL as the default Baileys WebSocket URL" , async ( ) => {
427+ vi . stubEnv ( OPENCLAW_WHATSAPP_WEB_SOCKET_URL_ENV , " ws://127.0.0.1:49153/ws/chat " ) ;
428+
429+ await createWaSocket ( false , false ) ;
430+
431+ expect ( readLastSocketOptions ( ) . waWebSocketUrl ) . toBe ( "ws://127.0.0.1:49153/ws/chat" ) ;
432+ } ) ;
433+
434+ it ( "preserves explicit Baileys WebSocket URL options over environment" , async ( ) => {
435+ vi . stubEnv ( OPENCLAW_WHATSAPP_WEB_SOCKET_URL_ENV , "ws://127.0.0.1:49153/ws/chat" ) ;
436+
437+ await createWaSocket ( false , false , {
438+ waWebSocketUrl : "ws://127.0.0.1:49154/ws/chat" ,
439+ } ) ;
440+
441+ expect ( readLastSocketOptions ( ) . waWebSocketUrl ) . toBe ( "ws://127.0.0.1:49154/ws/chat" ) ;
442+ } ) ;
443+
444+ it ( "ignores blank Baileys WebSocket URL environment overrides" , async ( ) => {
445+ vi . stubEnv ( OPENCLAW_WHATSAPP_WEB_SOCKET_URL_ENV , " " ) ;
446+
447+ await createWaSocket ( false , false ) ;
448+
449+ expect ( readLastSocketOptions ( ) . waWebSocketUrl ) . toBeUndefined ( ) ;
450+ } ) ;
451+
414452 it ( "uses ambient env proxy agent when HTTPS_PROXY is configured" , async ( ) => {
415453 vi . stubEnv ( "HTTPS_PROXY" , "http://proxy.test:8080" ) ;
416454
0 commit comments