@@ -188,6 +188,60 @@ export async function stubFreighterConnected(page: Page, address: string) {
188188 } , address ) ;
189189}
190190
191+ export async function stubFreighterDisconnected ( page : Page ) {
192+ await page . addInitScript ( ( ) => {
193+ const stub = { connected : false } ;
194+ ( window as unknown as Record < string , unknown > ) . __freighterStub = stub ;
195+
196+ window . addEventListener ( "message" , ( event ) => {
197+ if (
198+ event . source !== window ||
199+ ! event . data ||
200+ event . data . source !== "FREIGHTER_EXTERNAL_MSG_REQUEST"
201+ ) {
202+ return ;
203+ }
204+
205+ const { messageId, type } = event . data as { messageId : number ; type : string } ;
206+
207+ let response : Record < string , unknown > = {
208+ source : "FREIGHTER_EXTERNAL_MSG_RESPONSE" ,
209+ messagedId : messageId ,
210+ } ;
211+
212+ switch ( type ) {
213+ case "REQUEST_ALLOWED_STATUS" :
214+ case "SET_ALLOWED_STATUS" :
215+ response = { ...response , isAllowed : false } ;
216+ break ;
217+ case "REQUEST_PUBLIC_KEY" :
218+ case "REQUEST_ACCESS" :
219+ response = { ...response , publicKey : "" } ;
220+ break ;
221+ case "REQUEST_CONNECTION_STATUS" :
222+ response = { ...response , isConnected : false } ;
223+ break ;
224+ case "REQUEST_NETWORK_DETAILS" :
225+ response = {
226+ ...response ,
227+ networkDetails : {
228+ network : "TESTNET" ,
229+ networkName : "Test SDF Network" ,
230+ networkUrl : "https://horizon-testnet.stellar.org" ,
231+ networkPassphrase : "Test SDF Network ; September 2015" ,
232+ sorobanRpcUrl : "https://soroban-testnet.stellar.org" ,
233+ } ,
234+ } ;
235+ break ;
236+ default :
237+ return ;
238+ }
239+
240+ window . postMessage ( response , window . location . origin ) ;
241+ } ) ;
242+ } ) ;
243+ }
244+
191245type Fixtures = {
192246 /** Page with API routes intercepted — no wallet connected */
193247 appPage : Page ;
0 commit comments