package Ġio . github . tm creative 1 . play w right . remote . page Ċ Ċ import Ġio . github . tm creative 1 . play w right . remote . base . Base Test Ċ import Ġio . github . tm creative 1 . play w right . remote . engine . handle . element . api . I Element Handle Ċ import Ġio . github . tm creative 1 . play w right . remote . engine . handle . js . api . IJ SH andle Ċ import Ġio . github . tm creative 1 . play w right . remote . engine . options . Drag And Drop Options Ċ import Ġio . github . tm creative 1 . play w right . remote . engine . options . Position Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠTest Page Drag Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġcorrect Ġwork Ġif Ġthe Ġdrag Ġis Ġcancelled `() Ġ{ ĊĠĠĠĠĠĠĠ Ġpage . navigate ("${ http Server . prefix With Domain }/ drag - n - drop . html ") ĊĠĠĠĠĠĠĠ Ġval Ġjs Script Ġ= Ġ""" () Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġdocument . body . addEventListener (' drag start ', Ġevent Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġevent . preventDefault (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġ}, Ġfalse ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġpage . evaluate ( js Script ) ĊĠĠĠĠĠĠĠ Ġpage . hover ("# source ") ĊĠĠĠĠĠĠĠ Ġpage . mouse (). down () ĊĠĠĠĠĠĠĠ Ġpage . hover ("# target ") ĊĠĠĠĠĠĠĠ Ġpage . mouse (). up () ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage . eval On Selector ("# target ", Ġ" target Ġ=> Ġtarget . contains ( document . querySelector ('# source ')) ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġcorrect Ġwork Ġif Ġthe Ġdrag Ġevent Ġis Ġcaptured Ġbut Ġnot Ġcancelled `() Ġ{ ĊĠĠĠĠĠĠĠ Ġpage . navigate ("${ http Server . prefix With Domain }/ drag - n - drop . html ") ĊĠĠĠĠĠĠĠ Ġval Ġjs Script Ġ= Ġ""" () Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġdocument . body . addEventListener (' drag start ', Ġevent Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġevent . stop Immediate Propagation (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġ}, Ġfalse ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġpage . evaluate ( js Script ) ĊĠĠĠĠĠĠĠ Ġpage . hover ("# source ") ĊĠĠĠĠĠĠĠ Ġpage . mouse (). down () ĊĠĠĠĠĠĠĠ Ġpage . hover ("# target ") ĊĠĠĠĠĠĠĠ Ġpage . mouse (). up () ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage . eval On Selector ("# target ", Ġ" target Ġ=> Ġtarget . contains ( document . querySelector ('# source ')) ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġto Ġable Ġto Ġdrag Ġthe Ġmouse Ġin Ġframe `() Ġ{ ĊĠĠĠĠĠĠĠ Ġpage . navigate ("${ http Server . prefix With Domain }/ frames / one - frame . html ") ĊĠĠĠĠĠĠĠ Ġval Ġevents Handle Ġ= Ġtrack Events ( page . frames ()[ 1 ]. querySelector (" html ") !! ) ĊĠĠĠĠĠĠĠ Ġpage . mouse (). move ( 3 0 . 0 , Ġ 3 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġpage . mouse (). down () ĊĠĠĠĠĠĠĠ Ġpage . mouse (). move ( 6 0 . 0 , Ġ 6 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġpage . mouse (). up () ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf (" mousemove ", Ġ" mousedown ", Ġ" mousemove ", Ġ" mouseup "), Ġevents Handle . json Value ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġcorrect Ġwork Ġof Ġdrag Ġand Ġdrop Ġmethod `() Ġ{ ĊĠĠĠĠĠĠĠ Ġpage . navigate ("${ http Server . prefix With Domain }/ drag - n - drop . html ") ĊĠĠĠĠĠĠĠ Ġpage . drag And Drop ("# source ", Ġ"# target ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage . eval On Selector ("# target ", Ġ" target Ġ=> Ġtarget . contains ( document . querySelector ('# source ')) ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġto Ġallow Ġspecifying Ġthe Ġposition `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġ""" < div Ġstyle =' width : 1 0 0 px ; height : 1 0 0 px ; background : red ;' Ġid =' red '> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| </ div > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|< div Ġstyle =' width : 1 0 0 px ; height : 1 0 0 px ; background : blue ;' Ġid =' blue '> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| </ div > ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġpage . setContent ( content ) ĊĠĠĠĠĠĠĠ Ġval Ġjs Script Ġ= Ġ""" () Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġconst Ġevents Ġ= Ġ[]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġdocument . getElementById (' red '). addEventListener (' mousedown ', Ġevent Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġevents . push ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠ Ġtype : Ġ' mousedown ', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠ Ġx : Ġevent . offset X , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠ Ġy : Ġevent . offset Y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġ}); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġdocument . getElementById (' blue '). addEventListener (' mouseup ', Ġevent Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġevents . push ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠ Ġtype : Ġ' mouseup ', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠ Ġx : Ġevent . offset X , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠĠ Ġy : Ġevent . offset Y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġ}); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġreturn Ġevents ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġval Ġevents Handle Ġ= Ġpage . evaluate Handle ( js Script ) ĊĠĠĠĠĠĠĠ Ġpage . drag And Drop ("# red ", Ġ"# blue ", ĠDrag And Drop Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . source Position Ġ= ĠPosition ( 3 4 . 0 , Ġ 7 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . target Position Ġ= ĠPosition ( 1 0 . 0 , Ġ 2 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġevents Handle . json Value () ĊĠĠĠĠĠĠĠ Ġassert Json Equals (" [{ type : Ġ\" mousedown \", Ġx : Ġ 3 4 , Ġy : Ġ 7 },{ type : Ġ\" mouseup \", Ġx : Ġ 1 0 , Ġy : Ġ 2 0 } ]", Ġjson ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtrack Events ( target : ĠI Element Handle ): ĠI J SH andle Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjs Script Ġ= Ġ""" target Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġconst Ġevents Ġ= Ġ[]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġfor Ġ( const Ġevent Ġof Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ' mousedown ', Ġ' mousemove ', Ġ' mouseup ', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ' drag start ', Ġ' drag end ', Ġ' drag over ', Ġ' drag enter ', Ġ' drag leave ', Ġ' dr age x it ', ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġ' drop ']) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠ Ġtarget . addEventListener ( event , Ġ() Ġ=> Ġevents . push ( event ), Ġfalse ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġreturn Ġevents ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġreturn Ġtarget . evaluate Handle ( js Script ) ĊĠĠĠ Ġ} Ċ }