22// Source: packages/cli/E2E_TESTS.md — Suite: Serve
33// Generator: /fp-generate
44
5- import { createServer , type Server } from 'node:http' ;
5+ import {
6+ createServer ,
7+ type IncomingMessage ,
8+ type Server ,
9+ type ServerResponse ,
10+ } from 'node:http' ;
611import { afterEach , describe , expect , it } from 'vitest' ;
712
813describe ( 'Serve' , ( ) => {
@@ -11,7 +16,7 @@ describe('Serve', () => {
1116 afterEach ( async ( ) => {
1217 if ( server ) {
1318 await new Promise < void > ( ( resolve , reject ) => {
14- server ! . close ( err => ( err ? reject ( err ) : resolve ( ) ) ) ;
19+ server ? .close ( err => ( err ? reject ( err ) : resolve ( ) ) ) ;
1520 } ) ;
1621 server = undefined ;
1722 }
@@ -20,15 +25,15 @@ describe('Serve', () => {
2025 // category: core
2126 it ( 'starts HTTP server on specified port' , async ( ) => {
2227 // Create a minimal handler to test server binding
23- const handler = ( _req : any , res : any ) => {
28+ const handler = ( _req : IncomingMessage , res : ServerResponse ) => {
2429 res . writeHead ( 200 , { 'Content-Type' : 'text/html' } ) ;
2530 res . end ( '<html><body>capsule</body></html>' ) ;
2631 } ;
2732
2833 server = createServer ( handler ) ;
2934
3035 await new Promise < void > ( resolve => {
31- server ! . listen ( 0 , '127.0.0.1' , ( ) => resolve ( ) ) ;
36+ server ? .listen ( 0 , '127.0.0.1' , ( ) => resolve ( ) ) ;
3237 } ) ;
3338
3439 const addr = server . address ( ) ;
@@ -44,7 +49,7 @@ describe('Serve', () => {
4449
4550 // category: core
4651 it ( 'accepts custom port via server.listen' , async ( ) => {
47- const handler = ( _req : any , res : any ) => {
52+ const handler = ( _req : IncomingMessage , res : ServerResponse ) => {
4853 res . writeHead ( 200 ) ;
4954 res . end ( 'ok' ) ;
5055 } ;
@@ -53,7 +58,7 @@ describe('Serve', () => {
5358
5459 // Use port 0 for random assignment
5560 await new Promise < void > ( resolve => {
56- server ! . listen ( 0 , '127.0.0.1' , ( ) => resolve ( ) ) ;
61+ server ? .listen ( 0 , '127.0.0.1' , ( ) => resolve ( ) ) ;
5762 } ) ;
5863
5964 const addr = server . address ( ) as { port : number } ;
@@ -66,23 +71,23 @@ describe('Serve', () => {
6671
6772 // category: core
6873 it ( 'handles graceful shutdown' , async ( ) => {
69- const handler = ( _req : any , res : any ) => {
74+ const handler = ( _req : IncomingMessage , res : ServerResponse ) => {
7075 res . writeHead ( 200 ) ;
7176 res . end ( 'ok' ) ;
7277 } ;
7378
7479 server = createServer ( handler ) ;
7580
7681 await new Promise < void > ( resolve => {
77- server ! . listen ( 0 , '127.0.0.1' , ( ) => resolve ( ) ) ;
82+ server ? .listen ( 0 , '127.0.0.1' , ( ) => resolve ( ) ) ;
7883 } ) ;
7984
8085 const addr = server . address ( ) as { port : number } ;
8186 const port = addr . port ;
8287
8388 // Close server (simulating SIGINT cleanup)
8489 await new Promise < void > ( ( resolve , reject ) => {
85- server ! . close ( err => ( err ? reject ( err ) : resolve ( ) ) ) ;
90+ server ? .close ( err => ( err ? reject ( err ) : resolve ( ) ) ) ;
8691 } ) ;
8792
8893 // Verify the port is released - a new server should be able to bind
@@ -105,8 +110,8 @@ describe('Serve', () => {
105110
106111 // category: core
107112 it ( 'responds with correct content-type for HTML' , async ( ) => {
108- const handler = ( _req : any , res : any ) => {
109- const url = new URL ( _req . url , `http://${ _req . headers . host } ` ) ;
113+ const handler = ( _req : IncomingMessage , res : ServerResponse ) => {
114+ const url = new URL ( _req . url ?? '/' , `http://${ _req . headers . host } ` ) ;
110115 if ( url . pathname === '/' ) {
111116 res . writeHead ( 200 , { 'Content-Type' : 'text/html' } ) ;
112117 res . end ( '<html></html>' ) ;
@@ -124,7 +129,7 @@ describe('Serve', () => {
124129
125130 server = createServer ( handler ) ;
126131 await new Promise < void > ( resolve => {
127- server ! . listen ( 0 , '127.0.0.1' , ( ) => resolve ( ) ) ;
132+ server ? .listen ( 0 , '127.0.0.1' , ( ) => resolve ( ) ) ;
128133 } ) ;
129134
130135 const addr = server . address ( ) as { port : number } ;
0 commit comments