@@ -3688,4 +3688,130 @@ describe("FreeText Editor", () => {
36883688 ) ;
36893689 } ) ;
36903690 } ) ;
3691+
3692+ describe ( "Undo deletion popup has the expected behaviour" , ( ) => {
3693+ let pages ;
3694+
3695+ beforeEach ( async ( ) => {
3696+ pages = await loadAndWait ( "tracemonkey.pdf" , ".annotationEditorLayer" ) ;
3697+ } ) ;
3698+
3699+ afterEach ( async ( ) => {
3700+ await closePages ( pages ) ;
3701+ } ) ;
3702+
3703+ it ( "must check that deleting a FreeText editor can be undone using the undo button" , async ( ) => {
3704+ await Promise . all (
3705+ pages . map ( async ( [ browserName , page ] ) => {
3706+ await switchToFreeText ( page ) ;
3707+
3708+ const rect = await getRect ( page , ".annotationEditorLayer" ) ;
3709+ const data = "Hello PDF.js World !!" ;
3710+ await page . mouse . click ( rect . x + 100 , rect . y + 100 ) ;
3711+ await page . waitForSelector ( getEditorSelector ( 0 ) , {
3712+ visible : true ,
3713+ } ) ;
3714+ await page . type ( `${ getEditorSelector ( 0 ) } .internal` , data ) ;
3715+
3716+ // Commit.
3717+ await page . keyboard . press ( "Escape" ) ;
3718+ await page . waitForSelector (
3719+ `${ getEditorSelector ( 0 ) } .overlay.enabled`
3720+ ) ;
3721+ await waitForSerialized ( page , 1 ) ;
3722+
3723+ await page . waitForSelector ( `${ getEditorSelector ( 0 ) } button.delete` ) ;
3724+ await page . click ( `${ getEditorSelector ( 0 ) } button.delete` ) ;
3725+ await waitForSerialized ( page , 0 ) ;
3726+
3727+ await page . waitForSelector ( "#editorUndoBar:not([hidden])" ) ;
3728+ await page . click ( "#editorUndoBarUndoButton" ) ;
3729+ await waitForSerialized ( page , 1 ) ;
3730+ await page . waitForSelector ( getEditorSelector ( 0 ) ) ;
3731+ } )
3732+ ) ;
3733+ } ) ;
3734+
3735+ it ( "must check that the undo deletion popup displays the correct message" , async ( ) => {
3736+ await Promise . all (
3737+ pages . map ( async ( [ browserName , page ] ) => {
3738+ await switchToFreeText ( page ) ;
3739+
3740+ const rect = await getRect ( page , ".annotationEditorLayer" ) ;
3741+ const data = "Hello PDF.js World !!" ;
3742+ await page . mouse . click ( rect . x + 100 , rect . y + 100 ) ;
3743+ await page . waitForSelector ( getEditorSelector ( 0 ) , {
3744+ visible : true ,
3745+ } ) ;
3746+ await page . type ( `${ getEditorSelector ( 0 ) } .internal` , data ) ;
3747+
3748+ // Commit.
3749+ await page . keyboard . press ( "Escape" ) ;
3750+ await page . waitForSelector (
3751+ `${ getEditorSelector ( 0 ) } .overlay.enabled`
3752+ ) ;
3753+ await waitForSerialized ( page , 1 ) ;
3754+
3755+ await page . waitForSelector ( `${ getEditorSelector ( 0 ) } button.delete` ) ;
3756+ await page . click ( `${ getEditorSelector ( 0 ) } button.delete` ) ;
3757+ await waitForSerialized ( page , 0 ) ;
3758+
3759+ await page . waitForFunction ( ( ) => {
3760+ const messageElement = document . querySelector (
3761+ "#editorUndoBarMessage"
3762+ ) ;
3763+ return messageElement && messageElement . textContent . trim ( ) !== "" ;
3764+ } ) ;
3765+ const message = await page . waitForSelector ( "#editorUndoBarMessage" ) ;
3766+ const messageText = await page . evaluate (
3767+ el => el . textContent ,
3768+ message
3769+ ) ;
3770+ expect ( messageText ) . toContain ( "Text removed" ) ;
3771+ } )
3772+ ) ;
3773+ } ) ;
3774+
3775+ it ( "must check that the popup disappears when a new textbox is created" , async ( ) => {
3776+ await Promise . all (
3777+ pages . map ( async ( [ browserName , page ] ) => {
3778+ await switchToFreeText ( page ) ;
3779+
3780+ let rect = await getRect ( page , ".annotationEditorLayer" ) ;
3781+ const data = "Hello PDF.js World !!" ;
3782+ await page . mouse . click ( rect . x + 100 , rect . y + 100 ) ;
3783+ await page . waitForSelector ( getEditorSelector ( 0 ) , {
3784+ visible : true ,
3785+ } ) ;
3786+ await page . type ( `${ getEditorSelector ( 0 ) } .internal` , data ) ;
3787+
3788+ await page . keyboard . press ( "Escape" ) ;
3789+ await page . waitForSelector (
3790+ `${ getEditorSelector ( 0 ) } .overlay.enabled`
3791+ ) ;
3792+ await waitForSerialized ( page , 1 ) ;
3793+
3794+ await page . waitForSelector ( `${ getEditorSelector ( 0 ) } button.delete` ) ;
3795+ await page . click ( `${ getEditorSelector ( 0 ) } button.delete` ) ;
3796+ await waitForSerialized ( page , 0 ) ;
3797+
3798+ await page . waitForSelector ( "#editorUndoBar:not([hidden])" ) ;
3799+ rect = await getRect ( page , ".annotationEditorLayer" ) ;
3800+ const newData = "This is a new text box!" ;
3801+ await page . mouse . click ( rect . x + 150 , rect . y + 150 ) ;
3802+ await page . waitForSelector ( getEditorSelector ( 1 ) , {
3803+ visible : true ,
3804+ } ) ;
3805+ await page . type ( `${ getEditorSelector ( 1 ) } .internal` , newData ) ;
3806+
3807+ await page . keyboard . press ( "Escape" ) ;
3808+ await page . waitForSelector (
3809+ `${ getEditorSelector ( 1 ) } .overlay.enabled`
3810+ ) ;
3811+ await waitForSerialized ( page , 1 ) ;
3812+ await page . waitForSelector ( "#editorUndoBar" , { hidden : true } ) ;
3813+ } )
3814+ ) ;
3815+ } ) ;
3816+ } ) ;
36913817} ) ;
0 commit comments