Skip to content

Commit 18848b9

Browse files
committed
test(sse): add custom stream error forwarding test
1 parent aced92e commit 18848b9

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

test/browser/sse-api/sse.server.connect.test.ts

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,3 +231,60 @@ test('forwards error event from the server to the client automatically', async (
231231

232232
await expect(errorPromise).resolves.toBeUndefined()
233233
})
234+
235+
test('forward custom stream errors from the original server to the client automatically', async ({
236+
loadExample,
237+
page,
238+
}) => {
239+
await loadExample(require.resolve('./sse.mocks.ts'), {
240+
skipActivation: true,
241+
})
242+
243+
await using server = await createTestHttpServer({
244+
defineRoutes(routes) {
245+
routes.get('/stream', () => {
246+
const stream = new ReadableStream({
247+
start(controller) {
248+
controller.error(new Error('Custom stream error'))
249+
},
250+
})
251+
252+
return new Response(stream, {
253+
headers: {
254+
'access-control-allow-origin': '*',
255+
'content-type': 'text/event-stream',
256+
'cache-control': 'no-cache',
257+
connection: 'keep-alive',
258+
},
259+
})
260+
})
261+
},
262+
})
263+
const url = server.http.url('/stream').href
264+
265+
await page.evaluate(async (url) => {
266+
const { setupWorker, sse } = window.msw
267+
268+
const worker = setupWorker(
269+
sse(url, ({ server }) => {
270+
server.connect()
271+
}),
272+
)
273+
await worker.start()
274+
}, url)
275+
276+
const errorPromise = page.evaluate((url) => {
277+
return new Promise<void>((resolve, reject) => {
278+
const source = new EventSource(url)
279+
source.onerror = (error) => {
280+
console.log(error)
281+
resolve()
282+
}
283+
source.onmessage = () => reject(new Error('Must not receive a message'))
284+
})
285+
}, url)
286+
287+
await page.pause()
288+
289+
await expect(errorPromise).resolves.toBeUndefined()
290+
})

0 commit comments

Comments
 (0)