@@ -417,6 +417,39 @@ describe('HTMLAnchorElement', () => {
417
417
expect ( newWindow . closed ) . toBe ( true ) ;
418
418
} ) ;
419
419
420
+ it ( 'Navigates the browser when a "click" event bubbles up to an element.' , async ( ) => {
421
+ const browser = new Browser ( ) ;
422
+ const page = browser . newPage ( ) ;
423
+ const window = page . mainFrame . window ;
424
+
425
+ vi . spyOn ( Fetch . prototype , 'send' ) . mockImplementation ( function ( ) : Promise < Response > {
426
+ return Promise . resolve ( < Response > {
427
+ text : ( ) => Promise . resolve ( 'Test' )
428
+ } ) ;
429
+ } ) ;
430
+
431
+ const divElement = window . document . createElement ( 'div' ) ;
432
+ const anchorElement = < HTMLAnchorElement > window . document . createElement ( 'a' ) ;
433
+ anchorElement . href = 'https://www.example.com' ;
434
+ anchorElement . appendChild ( divElement ) ;
435
+ window . document . body . appendChild ( anchorElement ) ;
436
+
437
+ divElement . dispatchEvent ( new MouseEvent ( 'click' , { bubbles : true , cancelable : true } ) ) ;
438
+
439
+ const newWindow = page . mainFrame . window ;
440
+
441
+ expect ( newWindow === window ) . toBe ( false ) ;
442
+ expect ( newWindow . location . href ) . toBe ( 'https://www.example.com/' ) ;
443
+
444
+ await browser . waitUntilComplete ( ) ;
445
+
446
+ expect ( newWindow . document . body . innerHTML ) . toBe ( 'Test' ) ;
447
+
448
+ newWindow . close ( ) ;
449
+
450
+ expect ( newWindow . closed ) . toBe ( true ) ;
451
+ } ) ;
452
+
420
453
it ( 'Navigates the browser when a "click" event is dispatched on an element with target "_blank".' , async ( ) => {
421
454
const browser = new Browser ( ) ;
422
455
const page = browser . newPage ( ) ;
0 commit comments