@@ -14,9 +14,11 @@ const testStateFile = join(cacheDir, 'test-state.json')
14
14
15
15
interface GlobalState {
16
16
honoServer ?: ChildProcess
17
+ cfAgentsServer ?: ChildProcess
17
18
staticServer ?: Server
18
19
staticPort ?: number
19
20
honoPort ?: number
21
+ cfAgentsPort ?: number
20
22
processGroupId ?: number
21
23
allChildProcesses ?: Set < number >
22
24
}
@@ -252,7 +254,48 @@ export default async function globalSetup() {
252
254
await waitForOutput ( honoServer , 'Ready on' )
253
255
state . honoServer = honoServer
254
256
255
- // Step 4: Start simple static file server for inspector
257
+ // Step 4: Find available port and start cf-agents server
258
+ console . log ( '🔍 Finding available port starting from 9902...' )
259
+ const cfAgentsPort = await findAvailablePortFromBase ( 9902 )
260
+ console . log ( `📍 Using port ${ cfAgentsPort } for cf-agents server` )
261
+
262
+ console . log ( '🚀 Starting cf-agents server...' )
263
+ const cfAgentsDir = join ( rootDir , 'examples/servers/cf-agents' )
264
+ const cfAgentsServer = spawn ( 'pnpm' , [ 'dev' , `--port=${ cfAgentsPort } ` ] , {
265
+ cwd : cfAgentsDir ,
266
+ stdio : [ 'ignore' , 'pipe' , 'pipe' ] ,
267
+ shell : true ,
268
+ detached : false ,
269
+ } )
270
+
271
+ // Track all child processes
272
+ if ( cfAgentsServer . pid ) {
273
+ state . allChildProcesses ! . add ( cfAgentsServer . pid )
274
+ }
275
+
276
+ state . cfAgentsPort = cfAgentsPort
277
+ state . cfAgentsServer = cfAgentsServer
278
+
279
+ cfAgentsServer . stdout ?. on ( 'data' , ( data ) => {
280
+ console . log ( `[cf-agents] ${ data . toString ( ) } ` )
281
+ } )
282
+
283
+ cfAgentsServer . stderr ?. on ( 'data' , ( data ) => {
284
+ console . log ( `[cf-agents] ${ data . toString ( ) } ` )
285
+ } )
286
+
287
+ // Track when the process exits to remove it from our tracking
288
+ cfAgentsServer . on ( 'exit' , ( ) => {
289
+ if ( cfAgentsServer . pid ) {
290
+ state . allChildProcesses ! . delete ( cfAgentsServer . pid )
291
+ }
292
+ } )
293
+
294
+ // Wait for cf-agents server to be ready
295
+ await waitForOutput ( cfAgentsServer , 'Ready on' )
296
+ state . cfAgentsServer = cfAgentsServer
297
+
298
+ // Step 5: Start simple static file server for inspector
256
299
console . log ( '🌐 Starting static file server for inspector...' )
257
300
const inspectorDistDir = join ( inspectorDir , 'dist' )
258
301
const staticPort = await findAvailablePort ( 8000 )
@@ -315,6 +358,7 @@ export default async function globalSetup() {
315
358
JSON . stringify (
316
359
{
317
360
honoPort : state . honoPort ,
361
+ cfAgentsPort : state . cfAgentsPort ,
318
362
staticPort : state . staticPort ,
319
363
} ,
320
364
null ,
@@ -330,6 +374,9 @@ export default async function globalSetup() {
330
374
if ( state . honoServer ) {
331
375
state . honoServer . kill ( )
332
376
}
377
+ if ( state . cfAgentsServer ) {
378
+ state . cfAgentsServer . kill ( )
379
+ }
333
380
if ( state . staticServer ) {
334
381
state . staticServer . close ( )
335
382
}
0 commit comments