@@ -12,6 +12,17 @@ export default defineTestHandler(
1212 const query = "foo=bar&hello=world" ;
1313 const url = `${ protocol } ${ location . host } ${ base } /_ws?${ query } ` ;
1414
15+ // Measure how long a step takes and log it with a `123.4 ms` suffix.
16+ const timings : Record < string , number > = { } ;
17+ const time = async < T > ( name : string , fn : ( ) => Promise < T > ) : Promise < T > => {
18+ const start = performance . now ( ) ;
19+ const result = await fn ( ) ;
20+ const ms = performance . now ( ) - start ;
21+ timings [ name ] = ms ;
22+ log ( `${ name } : ${ ms . toFixed ( 1 ) } ms` ) ;
23+ return result ;
24+ } ;
25+
1526 log ( "Connecting to " + url ) ;
1627 const ws = new WebSocket ( url ) ;
1728
@@ -43,24 +54,28 @@ export default defineTestHandler(
4354 return reply ;
4455 } ;
4556
46- await new Promise < void > ( ( resolve , reject ) => {
47- ws . addEventListener ( "open" , ( ) => resolve ( ) ) ;
48- ws . addEventListener ( "error" , ( ) => reject ( new Error ( "WebSocket error" ) ) ) ;
49- } ) ;
50- log ( "Connected" ) ;
57+ await time (
58+ "connect" ,
59+ ( ) =>
60+ new Promise < void > ( ( resolve , reject ) => {
61+ ws . addEventListener ( "open" , ( ) => resolve ( ) ) ;
62+ ws . addEventListener ( "error" , ( ) => reject ( new Error ( "WebSocket error" ) ) ) ;
63+ } ) ,
64+ ) ;
5165
5266 // 1. ping/pong
53- const pong = await send ( "ping" ) ;
54- log ( "ping -> " + pong ) ;
67+ const pong = await time ( "ping" , ( ) => send ( "ping" ) ) ;
5568 assert ( pong === "pong" , `Unexpected ping response: ${ pong } ` ) ;
5669
5770 // 2. query params round-trip
58- const paramsRaw = await send ( "params" ) ;
59- log ( "params -> " + paramsRaw ) ;
71+ const paramsRaw = await time ( "params" , ( ) => send ( "params" ) ) ;
6072 const params = JSON . parse ( paramsRaw ) ;
6173 assert ( params . foo === "bar" , `Unexpected foo param: ${ params . foo } ` ) ;
6274 assert ( params . hello === "world" , `Unexpected hello param: ${ params . hello } ` ) ;
6375
76+ const total = Object . values ( timings ) . reduce ( ( a , b ) => a + b , 0 ) ;
77+ log ( `total: ${ total . toFixed ( 1 ) } ms` ) ;
78+
6479 ws . close ( ) ;
6580 } ,
6681) ;
0 commit comments