@@ -2908,4 +2908,83 @@ describe("Reorganize Pages View", () => {
29082908 ) ;
29092909 } ) ;
29102910 } ) ;
2911+
2912+ describe ( "Current page indicator (bug 2026639)" , ( ) => {
2913+ let pages ;
2914+
2915+ beforeEach ( async ( ) => {
2916+ pages = await loadAndWait (
2917+ "page_with_number.pdf" ,
2918+ "#viewsManagerToggleButton" ,
2919+ "page-fit" ,
2920+ null ,
2921+ { enableSplitMerge : true }
2922+ ) ;
2923+ } ) ;
2924+
2925+ afterEach ( async ( ) => {
2926+ await closePages ( pages ) ;
2927+ } ) ;
2928+
2929+ it ( "should have only one current page after repeated cut/undo operations" , async ( ) => {
2930+ await Promise . all (
2931+ pages . map ( async ( [ browserName , page ] ) => {
2932+ await waitForThumbnailVisible ( page , 1 ) ;
2933+ await page . waitForSelector ( "#viewsManagerStatusActionButton" , {
2934+ visible : true ,
2935+ } ) ;
2936+
2937+ const countCurrentThumbnails = ( ) =>
2938+ page . evaluate (
2939+ ( ) =>
2940+ document . querySelectorAll (
2941+ '.thumbnailImageContainer[aria-current="page"]'
2942+ ) . length
2943+ ) ;
2944+
2945+ // Copy page 1 and paste it after page 3.
2946+ await waitAndClick (
2947+ page ,
2948+ `.thumbnail:has(${ getThumbnailSelector ( 1 ) } ) input`
2949+ ) ;
2950+ let handlePagesEdited = await waitForPagesEdited ( page , "copy" ) ;
2951+ await waitAndClick ( page , "#viewsManagerStatusActionButton" ) ;
2952+ await waitAndClick ( page , "#viewsManagerStatusActionCopy" ) ;
2953+ await awaitPromise ( handlePagesEdited ) ;
2954+
2955+ handlePagesEdited = await waitForPagesEdited ( page ) ;
2956+ await waitAndClick ( page , `${ getThumbnailSelector ( 3 ) } +button` ) ;
2957+ await awaitPromise ( handlePagesEdited ) ;
2958+
2959+ // Repeat cut/undo three times and check the current indicator each
2960+ // time.
2961+ for ( let i = 0 ; i < 3 ; i ++ ) {
2962+ await waitAndClick (
2963+ page ,
2964+ `.thumbnail:has(${ getThumbnailSelector ( 1 ) } ) input`
2965+ ) ;
2966+ handlePagesEdited = await waitForPagesEdited ( page , "cut" ) ;
2967+ await waitAndClick ( page , "#viewsManagerStatusActionButton" ) ;
2968+ await waitAndClick ( page , "#viewsManagerStatusActionCut" ) ;
2969+ await awaitPromise ( handlePagesEdited ) ;
2970+
2971+ expect ( await countCurrentThumbnails ( ) )
2972+ . withContext ( `In ${ browserName } , after cut #${ i + 1 } ` )
2973+ . toBe ( 1 ) ;
2974+
2975+ await page . waitForSelector ( "#viewsManagerStatusUndo" , {
2976+ visible : true ,
2977+ } ) ;
2978+ handlePagesEdited = await waitForPagesEdited ( page , "cancelDelete" ) ;
2979+ await waitAndClick ( page , "#viewsManagerStatusUndoButton" ) ;
2980+ await awaitPromise ( handlePagesEdited ) ;
2981+
2982+ expect ( await countCurrentThumbnails ( ) )
2983+ . withContext ( `In ${ browserName } , after undo #${ i + 1 } ` )
2984+ . toBe ( 1 ) ;
2985+ }
2986+ } )
2987+ ) ;
2988+ } ) ;
2989+ } ) ;
29112990} ) ;
0 commit comments