@@ -355,4 +355,73 @@ describe("PDF Thumbnail View", () => {
355355 ) ;
356356 } ) ;
357357 } ) ;
358+
359+ describe ( "Menu keyboard navigation with multi-character keys (bug 2016212)" , ( ) => {
360+ let pages ;
361+
362+ beforeEach ( async ( ) => {
363+ pages = await loadAndWait (
364+ "page_with_number_and_link.pdf" ,
365+ "#viewsManagerSelectorButton" ,
366+ null ,
367+ null ,
368+ { enableSplitMerge : true }
369+ ) ;
370+ } ) ;
371+
372+ afterEach ( async ( ) => {
373+ await closePages ( pages ) ;
374+ } ) ;
375+
376+ it ( "must navigate menus with ArrowDown and Tab keys" , async ( ) => {
377+ await Promise . all (
378+ pages . map ( async ( [ browserName , page ] ) => {
379+ await page . click ( "#viewsManagerToggleButton" ) ;
380+ await waitForThumbnailVisible ( page , 1 ) ;
381+
382+ // Focus the views manager selector button
383+ await page . waitForSelector ( "#viewsManagerSelectorButton" , {
384+ visible : true ,
385+ } ) ;
386+ await page . focus ( "#viewsManagerSelectorButton" ) ;
387+
388+ // Open menu with Enter key
389+ await page . keyboard . press ( "Enter" ) ;
390+
391+ // Wait for menu to be expanded
392+ await waitForMenu ( page , "#viewsManagerSelectorButton" ) ;
393+
394+ // Check that focus moved to the first menu button (pages)
395+ await page . waitForSelector ( "#thumbnailsViewMenu:focus" , {
396+ visible : true ,
397+ } ) ;
398+
399+ // Press ArrowDown to navigate to second item
400+ await page . keyboard . press ( "ArrowDown" ) ;
401+
402+ // Should now be on outlines button
403+ await page . waitForSelector ( "#outlinesViewMenu:focus" , {
404+ visible : true ,
405+ } ) ;
406+
407+ // Press Tab to move to the manage button (should close views menu)
408+ await page . keyboard . press ( "Tab" ) ;
409+
410+ // Wait for views manager menu to be collapsed
411+ await waitForMenu ( page , "#viewsManagerSelectorButton" , false ) ;
412+
413+ // Focus should be on manage button
414+ await page . waitForSelector ( "#viewsManagerStatusActionButton:focus" , {
415+ visible : true ,
416+ } ) ;
417+
418+ // Open manage menu with Space key
419+ await page . keyboard . press ( " " ) ;
420+
421+ // Wait for manage menu to be expanded
422+ await waitForMenu ( page , "#viewsManagerStatusActionButton" ) ;
423+ } )
424+ ) ;
425+ } ) ;
426+ } ) ;
358427} ) ;
0 commit comments