@@ -56,7 +56,10 @@ export function click(elem: HTMLElement, x: number, y: number): Promise<MouseEve
5656 } ) ;
5757}
5858
59- export function drag ( elem : HTMLElement , from : { x : number ; y : number } , to : { x : number ; y : number } , time : number = 60 ) : Promise < MouseEvent > {
59+ export function drag ( elem : HTMLElement , from : { x : number ; y : number } , to : {
60+ x : number ;
61+ y : number
62+ } , time : number = 60 ) : Promise < MouseEvent > {
6063 return new Promise ( ( resolve ) => {
6164 let e = getElement ( elem , from . x , from . y ) ;
6265
@@ -84,7 +87,10 @@ export function drag(elem: HTMLElement, from: { x: number; y: number }, to: { x:
8487 } ) ;
8588}
8689
87- export function mousemove ( elem : HTMLElement , from : { x : number , y : number } , to : { x : number , y : number } ) : Promise < MouseEvent > {
90+ export function mousemove ( elem : HTMLElement , from : { x : number , y : number } , to : {
91+ x : number ,
92+ y : number
93+ } ) : Promise < MouseEvent > {
8894 return new Promise ( ( resolve ) => {
8995 let e = getElement ( elem , from . x , from . y ) ;
9096 let v = Math . max ( Math . abs ( to . x - from . x ) / 2 , Math . abs ( to . y - from . y ) / 2 ) ;
@@ -94,10 +100,13 @@ export function mousemove(elem: HTMLElement, from: { x: number, y: number }, to:
94100
95101 function callback ( evt : MouseEvent ) : void {
96102 if ( ++ evtNr == Math . floor ( v ) + 1 ) {
97- setTimeout ( function ( ) {
98- resolve ( evt ) ;
99- } , 50 ) ;
100103 elem . removeEventListener ( 'mousemove' , callback ) ;
104+ // The 75 ms timeout allows the browser's event loop and JavaScript engine enough time
105+ // to process all dispatched mousemove events before resolving the promise.
106+ // This delay is timing-critical: if too short, some events may not be handled;
107+ // if too long, tests slow down. The optimal value depends on browser internals and system performance.
108+ // Adjust for reliability in your environment.
109+ setTimeout ( ( ) => resolve ( evt ) , 75 ) ;
101110 }
102111 }
103112
@@ -135,7 +144,10 @@ export function triggerEvent(elem: HTMLElement, x: number, y: number, evt: strin
135144 dispatchEvent ( e . element , e . topleft , x , y , evt , d ) ;
136145}
137146
138- function getElement ( elem : HTMLElement , x : number , y : number ) : { element : Element ; topleft : { left : number ; top : number } } {
147+ function getElement ( elem : HTMLElement , x : number , y : number ) : {
148+ element : Element ;
149+ topleft : { left : number ; top : number }
150+ } {
139151 function getPosition ( div ) {
140152 var T = 0 ;
141153 var L = 0 ;
@@ -156,7 +168,10 @@ function getElement(elem: HTMLElement, x: number, y: number): { element: Element
156168 } ;
157169}
158170
159- function dispatchEvent ( elem : Element , tl : { top : number ; left : number } , x : number , y : number , evt : string , d ?: number ) {
171+ function dispatchEvent ( elem : Element , tl : {
172+ top : number ;
173+ left : number
174+ } , x : number , y : number , evt : string , d ?: number ) {
160175 let ev : any = new MouseEvent ( evt , {
161176 altKey : true ,
162177 bubbles : true ,
0 commit comments