@@ -213,6 +213,54 @@ describe('Data Modeling tab', function () {
213213 . waitForDisplayed ( { reverse : true } ) ;
214214 } ) ;
215215
216+ it ( 'allows undo after opening a diagram' , async function ( ) {
217+ const dataModelName = 'Test Data Model - Undo After Open' ;
218+ await setupDiagram ( browser , {
219+ diagramName : dataModelName ,
220+ connectionName : DEFAULT_CONNECTION_NAME_1 ,
221+ databaseName : 'test' ,
222+ } ) ;
223+
224+ const dataModelEditor = browser . $ ( Selectors . DataModelEditor ) ;
225+ await dataModelEditor . waitForDisplayed ( ) ;
226+
227+ const testCollection1 = browser . $ (
228+ Selectors . DataModelPreviewCollection ( 'test.testCollection-one' )
229+ ) ;
230+ const startPosition = await testCollection1 . getLocation ( ) ;
231+ const nodeSize = await testCollection1 . getSize ( ) ;
232+
233+ await browser
234+ . action ( 'pointer' )
235+ . move ( {
236+ x : Math . round ( startPosition . x + nodeSize . width / 2 ) ,
237+ y : Math . round ( startPosition . y + nodeSize . height / 2 ) ,
238+ } )
239+ . down ( { button : 0 } ) // Left mouse button
240+ . move ( { x : 100 , y : 0 , duration : 1000 , origin : 'pointer' } )
241+ . pause ( 1000 )
242+ . move ( { x : 100 , y : 0 , duration : 1000 , origin : 'pointer' } )
243+ . up ( { button : 0 } ) // Release the left mouse button
244+ . perform ( ) ;
245+ await browser . waitForAnimations ( dataModelEditor ) ;
246+
247+ // Open the saved diagram in new tab
248+ await browser . openNewTab ( ) ;
249+ await browser . clickVisible ( Selectors . DataModelsListItem ( dataModelName ) ) ;
250+ await browser . $ ( Selectors . DataModelEditor ) . waitForDisplayed ( ) ;
251+
252+ // Ensure that undo button is enabled
253+ await browser . waitForAriaDisabled ( Selectors . DataModelUndoButton , false ) ;
254+
255+ // Undo the change
256+ await browser . clickVisible ( Selectors . DataModelUndoButton ) ;
257+ await browser . waitForAnimations ( dataModelEditor ) ;
258+
259+ // Ensure that undo button is now disabled and redo is enabled
260+ await browser . waitForAriaDisabled ( Selectors . DataModelUndoButton , true ) ;
261+ await browser . waitForAriaDisabled ( Selectors . DataModelRedoButton , false ) ;
262+ } ) ;
263+
216264 it ( 'exports the data model to JSON' , async function ( ) {
217265 const dataModelName = 'Test Export Model - JSON' ;
218266 exportFileName = `${ dataModelName } .json` ;
0 commit comments