1
1
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'
3
6
import { test , expect } from '../playwright.extend'
4
7
5
8
declare namespace window {
@@ -9,6 +12,17 @@ declare namespace window {
9
12
}
10
13
}
11
14
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
+
12
26
test ( 'makes the actual request when called "server.connect()"' , async ( {
13
27
loadExample,
14
28
page,
@@ -19,6 +33,8 @@ test('makes the actual request when called "server.connect()"', async ({
19
33
20
34
await using server = await createTestHttpServer ( {
21
35
defineRoutes ( routes ) {
36
+ applyCorsMiddleware ( routes )
37
+
22
38
routes . get ( '/stream' , ( ) => {
23
39
return new Response ( null , {
24
40
headers : {
@@ -65,6 +81,8 @@ test('forwards message event from the server to the client automatically', async
65
81
66
82
await using server = await createTestHttpServer ( {
67
83
defineRoutes ( routes ) {
84
+ applyCorsMiddleware ( routes )
85
+
68
86
routes . get ( '/stream' , ( ) => {
69
87
const stream = new ReadableStream ( {
70
88
start ( controller ) {
@@ -123,6 +141,8 @@ test('forwards custom event from the server to the client automatically', async
123
141
124
142
await using server = await createTestHttpServer ( {
125
143
defineRoutes ( routes ) {
144
+ applyCorsMiddleware ( routes )
145
+
126
146
routes . get ( '/stream' , ( ) => {
127
147
const stream = new ReadableStream ( {
128
148
start ( controller ) {
@@ -151,7 +171,7 @@ test('forwards custom event from the server to the client automatically', async
151
171
const { setupWorker, sse } = window . msw
152
172
153
173
const worker = setupWorker (
154
- sse ( url , ( { client , server } ) => {
174
+ sse ( url , ( { server } ) => {
155
175
server . connect ( )
156
176
} ) ,
157
177
)
@@ -181,6 +201,8 @@ test('forwards error event from the server to the client automatically', async (
181
201
182
202
await using server = await createTestHttpServer ( {
183
203
defineRoutes ( routes ) {
204
+ applyCorsMiddleware ( routes )
205
+
184
206
routes . get ( '/stream' , ( ) => {
185
207
const stream = new ReadableStream ( {
186
208
start ( controller ) {
@@ -204,17 +226,18 @@ test('forwards error event from the server to the client automatically', async (
204
226
const { setupWorker, sse } = window . msw
205
227
206
228
const worker = setupWorker (
207
- sse ( url , ( { client , server } ) => {
229
+ sse ( url , ( { server } ) => {
208
230
server . connect ( )
209
231
} ) ,
210
232
)
211
233
await worker . start ( )
212
234
} , url )
213
235
214
236
const errorPromise = page . evaluate ( ( url ) => {
215
- return new Promise < void > ( ( resolve ) => {
237
+ return new Promise < void > ( ( resolve , reject ) => {
216
238
const source = new EventSource ( url )
217
239
source . onerror = ( ) => resolve ( )
240
+ source . onmessage = ( ) => reject ( new Error ( 'Must not receive a message' ) )
218
241
} )
219
242
} , url )
220
243
0 commit comments