@@ -9,6 +9,15 @@ import { createSdkTestContext } from "./harness/sdkTestContext.js";
99describe ( "Client session management" , async ( ) => {
1010 const { copilotClient : client } = await createSdkTestContext ( ) ;
1111
12+ async function waitFor ( predicate : ( ) => Promise < boolean > , timeoutMs = 10_000 ) : Promise < void > {
13+ const deadline = Date . now ( ) + timeoutMs ;
14+ while ( Date . now ( ) < deadline ) {
15+ if ( await predicate ( ) ) return ;
16+ await new Promise ( ( resolve ) => setTimeout ( resolve , 50 ) ) ;
17+ }
18+ throw new Error ( `Condition was not met within ${ timeoutMs } ms` ) ;
19+ }
20+
1221 async function assertFailure (
1322 action : ( ) => Promise < unknown > ,
1423 expectedMessage : string
@@ -20,17 +29,25 @@ describe("Client session management", async () => {
2029 } ) ;
2130 }
2231
32+ it ( "should get null last session id before any sessions exist" , async ( ) => {
33+ await client . start ( ) ;
34+
35+ const result = await client . getLastSessionId ( ) ;
36+ expect ( result ) . toBeFalsy ( ) ;
37+ } ) ;
38+
2339 it ( "should delete session by id" , async ( ) => {
2440 const session = await client . createSession ( { onPermissionRequest : approveAll } ) ;
2541 const sessionId = session . sessionId ;
2642
27- await session . sendAndWait ( { prompt : "Say OK." } ) ;
43+ await session . sendAndWait ( { prompt : "Say DELETE_SESSION_OK exactly." } ) ;
44+ await waitFor ( async ( ) => ( await client . listSessions ( ) ) . some ( ( s ) => s . sessionId === sessionId ) ) ;
2845 await session . disconnect ( ) ;
2946 await client . deleteSession ( sessionId ) ;
3047
3148 const metadata = await client . getSessionMetadata ( sessionId ) ;
3249 expect ( metadata ) . toBeFalsy ( ) ;
33- } ) ;
50+ } , 60_000 ) ;
3451
3552 it ( "should report error when deleting unknown session id" , async ( ) => {
3653 await client . start ( ) ;
@@ -42,13 +59,6 @@ describe("Client session management", async () => {
4259 ) ;
4360 } ) ;
4461
45- it ( "should get null last session id before any sessions exist" , async ( ) => {
46- await client . start ( ) ;
47-
48- const result = await client . getLastSessionId ( ) ;
49- expect ( result ) . toBeFalsy ( ) ;
50- } ) ;
51-
5262 it ( "should track last session id after session created" , async ( ) => {
5363 const session = await client . createSession ( { onPermissionRequest : approveAll } ) ;
5464 await session . sendAndWait ( { prompt : "Say OK." } ) ;
0 commit comments