@@ -198,6 +198,7 @@ describe('Page.click', function() {
198
198
'mouseover' ,
199
199
'mouseenter' ,
200
200
'mousemove' ,
201
+ 'mousemove' ,
201
202
'mousedown' ,
202
203
'mouseup' ,
203
204
'click' ,
@@ -596,6 +597,36 @@ describe('Page.click', function() {
596
597
expect ( clicked ) . toBe ( true ) ;
597
598
expect ( await page . evaluate ( ( ) => window . clicked ) ) . toBe ( true ) ;
598
599
} ) ;
600
+ it ( 'should fail when element is blocked on hover' , async ( { page, server} ) => {
601
+ await page . setContent ( `<style>
602
+ container { display: block; position: relative; width: 200px; height: 50px; }
603
+ div, button { position: absolute; left: 0; top: 0; bottom: 0; right: 0; }
604
+ div { pointer-events: none; }
605
+ container:hover div { pointer-events: auto; background: red; }
606
+ </style>
607
+ <container>
608
+ <button onclick="window.clicked=true">Click me</button>
609
+ <div></div>
610
+ </container>` ) ;
611
+ const error = await page . click ( 'button' , { timeout : 3000 } ) . catch ( e => e ) ;
612
+ expect ( error . message ) . toBe ( 'waiting for element to receive pointer events failed: timeout exceeded' ) ;
613
+ expect ( await page . evaluate ( ( ) => window . clicked ) ) . toBe ( undefined ) ;
614
+ } ) ;
615
+ it ( 'should wait while element is blocked on hover' , async ( { page, server} ) => {
616
+ await page . setContent ( `<style>
617
+ @keyframes move-out { from { marign-left: 0; } to { margin-left: 150px; } }
618
+ container { display: block; position: relative; width: 200px; height: 50px; }
619
+ div, button { position: absolute; left: 0; top: 0; bottom: 0; right: 0; }
620
+ div { pointer-events: none; }
621
+ container:hover div { pointer-events: auto; background: red; animation: 3s linear move-out; animation-fill-mode: forwards; }
622
+ </style>
623
+ <container>
624
+ <button onclick="window.clicked=true">Click me</button>
625
+ <div></div>
626
+ </container>` ) ;
627
+ await page . click ( 'button' ) ;
628
+ expect ( await page . evaluate ( ( ) => window . clicked ) ) . toBe ( true ) ;
629
+ } ) ;
599
630
} ) ;
600
631
601
632
describe ( 'Page.check' , function ( ) {
0 commit comments