@@ -173,6 +173,41 @@ testAgainstRunningApps({ withEnv: [appConfigs.envs.withSessionTasks] })(
173173 expect ( tab2CacheInfo . currentSessionId ) . toBe ( user2SessionInfo . sessionId ) ;
174174 expect ( tab2CacheInfo . cacheSize ) . toBeGreaterThan ( 0 ) ;
175175
176+ const tokenFetchRequests : Array < { sessionId : string ; url : string } > = [ ] ;
177+ await context . route ( '**/v1/client/sessions/*/tokens*' , async route => {
178+ const url = route . request ( ) . url ( ) ;
179+ const sessionIdMatch = url . match ( / s e s s i o n s \/ ( [ ^ / ] + ) \/ t o k e n s / ) ;
180+ const sessionId = sessionIdMatch ?. [ 1 ] || 'unknown' ;
181+ tokenFetchRequests . push ( { sessionId, url } ) ;
182+ await route . continue ( ) ;
183+ } ) ;
184+
185+ const tokenIsolation = await page2 . evaluate (
186+ async ( { user1SessionId, user2SessionId } ) => {
187+ const clerk = ( window as any ) . Clerk ;
188+
189+ await clerk . setActive ( { session : user1SessionId } ) ;
190+ const user1Token = await clerk . session ?. getToken ( ) ;
191+
192+ await clerk . setActive ( { session : user2SessionId } ) ;
193+ const user2Token = await clerk . session ?. getToken ( ) ;
194+
195+ return {
196+ tokensAreDifferent : user1Token !== user2Token ,
197+ user1Token,
198+ user2Token,
199+ } ;
200+ } ,
201+ { user1SessionId : user1SessionInfo . sessionId , user2SessionId : user2SessionInfo . sessionId } ,
202+ ) ;
203+
204+ expect ( tokenIsolation . tokensAreDifferent ) . toBe ( true ) ;
205+ expect ( tokenIsolation . user1Token ) . toBeTruthy ( ) ;
206+ expect ( tokenIsolation . user2Token ) . toBeTruthy ( ) ;
207+ expect ( tokenFetchRequests . length ) . toBe ( 0 ) ;
208+
209+ await context . unroute ( '**/v1/client/sessions/*/tokens*' ) ;
210+
176211 // In multi-session apps, each tab can have a different active session
177212 const tab1FinalInfo = await page1 . evaluate ( ( ) => {
178213 const clerk = ( window as any ) . Clerk ;
0 commit comments