@@ -2819,4 +2819,93 @@ describe("Reorganize Pages View", () => {
28192819 ) ;
28202820 } ) ;
28212821 } ) ;
2822+
2823+ describe ( "New badge (bug 2026564)" , ( ) => {
2824+ let pages ;
2825+
2826+ beforeEach ( async ( ) => {
2827+ pages = await loadAndWait (
2828+ "page_with_number.pdf" ,
2829+ "#viewsManagerToggleButton" ,
2830+ "page-fit" ,
2831+ null ,
2832+ { enableSplitMerge : true , enableNewBadge : true }
2833+ ) ;
2834+ } ) ;
2835+
2836+ afterEach ( async ( ) => {
2837+ await closePages ( pages ) ;
2838+ } ) ;
2839+
2840+ it ( "should hide the new badge when a page is selected and show it again when deselected" , async ( ) => {
2841+ await Promise . all (
2842+ pages . map ( async ( [ browserName , page ] ) => {
2843+ await waitForThumbnailVisible ( page , 1 ) ;
2844+
2845+ // The badge must be visible initially.
2846+ await page . waitForSelector ( ".newBadge" , { visible : true } ) ;
2847+
2848+ // Select page 1 via its checkbox.
2849+ await waitAndClick (
2850+ page ,
2851+ `.thumbnail:has(${ getThumbnailSelector ( 1 ) } ) input`
2852+ ) ;
2853+
2854+ // The badge must be hidden after selection.
2855+ await page . waitForSelector ( ".newBadge" , { hidden : true } ) ;
2856+
2857+ // Deselect page 1.
2858+ await waitAndClick (
2859+ page ,
2860+ `.thumbnail:has(${ getThumbnailSelector ( 1 ) } ) input`
2861+ ) ;
2862+
2863+ // The badge must be visible again after deselection.
2864+ await page . waitForSelector ( ".newBadge" , { visible : true } ) ;
2865+ } )
2866+ ) ;
2867+ } ) ;
2868+
2869+ it ( "should hide the new badge when dragging an unselected page and restore it after" , async ( ) => {
2870+ await Promise . all (
2871+ pages . map ( async ( [ browserName , page ] ) => {
2872+ await waitForThumbnailVisible ( page , 1 ) ;
2873+
2874+ // The badge must be visible initially.
2875+ await page . waitForSelector ( ".newBadge" , { visible : true } ) ;
2876+
2877+ // Watch for the badge being hidden during the drag.
2878+ const handleBadgeHidden = await createPromise ( page , resolve => {
2879+ const observer = new MutationObserver ( ( ) => {
2880+ const badge = document . querySelector ( ".newBadge" ) ;
2881+ if ( badge ?. classList . contains ( "hidden" ) ) {
2882+ observer . disconnect ( ) ;
2883+ resolve ( ) ;
2884+ }
2885+ } ) ;
2886+ observer . observe ( document . querySelector ( ".newBadge" ) , {
2887+ attributes : true ,
2888+ attributeFilter : [ "class" ] ,
2889+ } ) ;
2890+ } ) ;
2891+
2892+ const rect1 = await getRect ( page , getThumbnailSelector ( 1 ) ) ;
2893+ const rect2 = await getRect ( page , getThumbnailSelector ( 2 ) ) ;
2894+
2895+ await dragAndDrop (
2896+ page ,
2897+ getThumbnailSelector ( 1 ) ,
2898+ [ [ 0 , rect2 . y - rect1 . y + rect2 . height / 2 ] ] ,
2899+ 10
2900+ ) ;
2901+
2902+ // The badge must have been hidden at some point during the drag.
2903+ await awaitPromise ( handleBadgeHidden ) ;
2904+
2905+ // The badge must be visible again after the drag ends.
2906+ await page . waitForSelector ( ".newBadge" , { visible : true } ) ;
2907+ } )
2908+ ) ;
2909+ } ) ;
2910+ } ) ;
28222911} ) ;
0 commit comments