test: cover chat streaming browser contract (#766)

This commit is contained in:
Zhicheng Han
2026-05-15 12:43:57 +02:00
committed by GitHub
parent 312e7397eb
commit 09c554b446
2 changed files with 122 additions and 0 deletions
+59
View File
@@ -189,3 +189,62 @@ export async function authenticate(page: Page, accessKey = TEST_ACCESS_KEY, prof
}
}, { storedToken: accessKey, storedProfileName: profileName })
}
export async function mockChatSocket(page: Page) {
await page.route('**/node_modules/.vite/deps/socket__io-client.js*', async (route) => {
await route.fulfill({
status: 200,
contentType: 'application/javascript',
body: `
const state = window.__PW_CHAT_SOCKET__ || (window.__PW_CHAT_SOCKET__ = { sockets: [], emitted: [] })
function makeSocket(url, options) {
const listeners = new Map()
const onceListeners = new Map()
const socket = {
connected: true,
url,
options,
on(event, handler) {
const handlers = listeners.get(event) || []
handlers.push(handler)
listeners.set(event, handlers)
return this
},
once(event, handler) {
const handlers = onceListeners.get(event) || []
handlers.push(handler)
onceListeners.set(event, handlers)
return this
},
emit(event, payload) {
state.emitted.push({ event, payload })
return this
},
removeAllListeners() {
listeners.clear()
onceListeners.clear()
return this
},
disconnect() {
this.connected = false
return this
},
__trigger(event, payload) {
for (const handler of listeners.get(event) || []) handler(payload)
const handlers = onceListeners.get(event) || []
onceListeners.delete(event)
for (const handler of handlers) handler(payload)
},
}
state.sockets.push(socket)
state.latest = socket
return socket
}
export function io(url, options) {
return makeSocket(url, options)
}
export default { io }
`,
})
})
}