Skip to content

Commit f49fa54

Browse files
committed
test(sse): add cors middleware for testing
1 parent b9777b3 commit f49fa54

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

test/browser/playwright.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const config: PlaywrightTestConfig = {
99
},
1010
],
1111
timeout: 10_000,
12-
retries: 1,
12+
retries: process.env.PWDEBUG ? 0 : 1,
1313
use: {
1414
trace: 'on-first-retry',
1515
launchOptions: {

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

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { setupWorker, sse } from 'msw/browser'
2-
import { createTestHttpServer } from '@epic-web/test-server/http'
2+
import {
3+
createTestHttpServer,
4+
TestHttpServerOptions,
5+
} from '@epic-web/test-server/http'
36
import { test, expect } from '../playwright.extend'
47

58
declare namespace window {
@@ -9,6 +12,17 @@ declare namespace window {
912
}
1013
}
1114

15+
function applyCorsMiddleware(
16+
routes: Parameters<NonNullable<TestHttpServerOptions['defineRoutes']>>[0],
17+
) {
18+
routes.use(async (ctx, next) => {
19+
ctx.res.headers.set('Access-Control-Allow-Origin', '*')
20+
ctx.res.headers.set('Access-Control-Allow-Methods', '*')
21+
ctx.res.headers.set('Access-Control-Allow-Headers', '*')
22+
await next()
23+
})
24+
}
25+
1226
test('makes the actual request when called "server.connect()"', async ({
1327
loadExample,
1428
page,
@@ -19,6 +33,8 @@ test('makes the actual request when called "server.connect()"', async ({
1933

2034
await using server = await createTestHttpServer({
2135
defineRoutes(routes) {
36+
applyCorsMiddleware(routes)
37+
2238
routes.get('/stream', () => {
2339
return new Response(null, {
2440
headers: {
@@ -65,6 +81,8 @@ test('forwards message event from the server to the client automatically', async
6581

6682
await using server = await createTestHttpServer({
6783
defineRoutes(routes) {
84+
applyCorsMiddleware(routes)
85+
6886
routes.get('/stream', () => {
6987
const stream = new ReadableStream({
7088
start(controller) {
@@ -123,6 +141,8 @@ test('forwards custom event from the server to the client automatically', async
123141

124142
await using server = await createTestHttpServer({
125143
defineRoutes(routes) {
144+
applyCorsMiddleware(routes)
145+
126146
routes.get('/stream', () => {
127147
const stream = new ReadableStream({
128148
start(controller) {
@@ -151,7 +171,7 @@ test('forwards custom event from the server to the client automatically', async
151171
const { setupWorker, sse } = window.msw
152172

153173
const worker = setupWorker(
154-
sse(url, ({ client, server }) => {
174+
sse(url, ({ server }) => {
155175
server.connect()
156176
}),
157177
)
@@ -181,6 +201,8 @@ test('forwards error event from the server to the client automatically', async (
181201

182202
await using server = await createTestHttpServer({
183203
defineRoutes(routes) {
204+
applyCorsMiddleware(routes)
205+
184206
routes.get('/stream', () => {
185207
const stream = new ReadableStream({
186208
start(controller) {
@@ -204,17 +226,18 @@ test('forwards error event from the server to the client automatically', async (
204226
const { setupWorker, sse } = window.msw
205227

206228
const worker = setupWorker(
207-
sse(url, ({ client, server }) => {
229+
sse(url, ({ server }) => {
208230
server.connect()
209231
}),
210232
)
211233
await worker.start()
212234
}, url)
213235

214236
const errorPromise = page.evaluate((url) => {
215-
return new Promise<void>((resolve) => {
237+
return new Promise<void>((resolve, reject) => {
216238
const source = new EventSource(url)
217239
source.onerror = () => resolve()
240+
source.onmessage = () => reject(new Error('Must not receive a message'))
218241
})
219242
}, url)
220243

0 commit comments

Comments
 (0)