@@ -394,4 +394,61 @@ describe("cursor visualization", () => {
394394 // Verify no cursor position in result
395395 expect ( result . currentMousePosition ) . toBeUndefined ( )
396396 } )
397+
398+ describe ( "getViewportSize" , ( ) => {
399+ it ( "falls back to configured viewport when no page or last viewport is available" , ( ) => {
400+ const localCtx : any = {
401+ globalState : {
402+ get : vi . fn ( ( key : string ) => {
403+ if ( key === "browserViewportSize" ) return "1024x768"
404+ return undefined
405+ } ) ,
406+ update : vi . fn ( ) ,
407+ } ,
408+ globalStorageUri : { fsPath : "/mock/global/storage/path" } ,
409+ extensionUri : { fsPath : "/mock/extension/path" } ,
410+ }
411+
412+ const session = new BrowserSession ( localCtx )
413+ const vp = ( session as any ) . getViewportSize ( )
414+ expect ( vp ) . toEqual ( { width : 1024 , height : 768 } )
415+ } )
416+
417+ it ( "returns live page viewport when available and updates lastViewport cache" , ( ) => {
418+ const localCtx : any = {
419+ globalState : {
420+ get : vi . fn ( ) ,
421+ update : vi . fn ( ) ,
422+ } ,
423+ globalStorageUri : { fsPath : "/mock/global/storage/path" } ,
424+ extensionUri : { fsPath : "/mock/extension/path" } ,
425+ }
426+ const session = new BrowserSession ( localCtx )
427+ ; ( session as any ) . page = {
428+ viewport : vi . fn ( ) . mockReturnValue ( { width : 1111 , height : 555 } ) ,
429+ }
430+
431+ const vp = ( session as any ) . getViewportSize ( )
432+ expect ( vp ) . toEqual ( { width : 1111 , height : 555 } )
433+ expect ( ( session as any ) . lastViewportWidth ) . toBe ( 1111 )
434+ expect ( ( session as any ) . lastViewportHeight ) . toBe ( 555 )
435+ } )
436+
437+ it ( "returns cached last viewport when page no longer exists" , ( ) => {
438+ const localCtx : any = {
439+ globalState : {
440+ get : vi . fn ( ) ,
441+ update : vi . fn ( ) ,
442+ } ,
443+ globalStorageUri : { fsPath : "/mock/global/storage/path" } ,
444+ extensionUri : { fsPath : "/mock/extension/path" } ,
445+ }
446+ const session = new BrowserSession ( localCtx )
447+ ; ( session as any ) . lastViewportWidth = 800
448+ ; ( session as any ) . lastViewportHeight = 600
449+
450+ const vp = ( session as any ) . getViewportSize ( )
451+ expect ( vp ) . toEqual ( { width : 800 , height : 600 } )
452+ } )
453+ } )
397454} )
0 commit comments