@@ -14,6 +14,7 @@ import {
1414 triggerFocus
1515} from '@angular/cdk/testing' ;
1616import { TestElement } from '../test-element' ;
17+ import { ElementDimensions } from '../element-dimensions' ;
1718
1819function isTextInput ( element : Element ) : element is HTMLInputElement | HTMLTextAreaElement {
1920 return element . nodeName . toLowerCase ( ) === 'input' ||
@@ -41,9 +42,14 @@ export class UnitTestElement implements TestElement {
4142 await this . _stabilize ( ) ;
4243 }
4344
44- async click ( ) : Promise < void > {
45+ async click ( relativeX = 0 , relativeY = 0 ) : Promise < void > {
4546 await this . _stabilize ( ) ;
46- dispatchMouseEvent ( this . element , 'click' ) ;
47+ const { left, top} = this . element . getBoundingClientRect ( ) ;
48+ const pageX = left + relativeX ;
49+ const pageY = top + relativeY ;
50+ dispatchMouseEvent ( this . element , 'mousedown' , pageX , pageY ) ;
51+ dispatchMouseEvent ( this . element , 'mouseup' , pageX , pageY ) ;
52+ dispatchMouseEvent ( this . element , 'click' , pageX , pageY ) ;
4753 await this . _stabilize ( ) ;
4854 }
4955
@@ -105,4 +111,9 @@ export class UnitTestElement implements TestElement {
105111 await this . _stabilize ( ) ;
106112 return this . element . classList . contains ( name ) ;
107113 }
114+
115+ async getDimensions ( ) : Promise < ElementDimensions > {
116+ await this . _stabilize ( ) ;
117+ return this . element . getBoundingClientRect ( ) ;
118+ }
108119}
0 commit comments