2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ * *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ( c )  Microsoft  Corporation . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Licensed  under  the  Apache  License ,  Version  2.0  ( the  "License" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  you  may  not  use  this  file  except  in  compliance  with  the  License . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  You  may  obtain  a  copy  of  the  License  at 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  http : //www.apache.org/licenses/LICENSE-2.0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Unless  required  by  applicable  law  or  agreed  to  in  writing ,  software 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  distributed  under  the  License  is  distributed  on  an  "AS IS"  BASIS , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  WITHOUT  WARRANTIES  OR  CONDITIONS  OF  ANY  KIND ,  either  express  or  implied . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  See  the  License  for  the  specific  language  governing  permissions  and 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  limitations  under  the  License . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  {  test ,  expect  }  from  './inspectorTest' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test . describe ( 'cli codegen' ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test . skip ( ( {  mode  } )  = >  mode  !==  'default' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test ( 'should click locator.first' ,  async  ( {  page ,  openRecorder  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < button  onclick = "console.log('click1')" > Submit < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < button  onclick = "console.log('click2')" > Submit < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-24 18:01:48 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  locator  =  await  recorder . hoverOverElement ( 'button' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( locator ) . toBe ( ` getByRole('button', { name: 'Submit' }).first() ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ message ,  sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . waitForEvent ( 'console' ,  msg  = >  msg . type ( )  !==  'error' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'click' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-14 15:16:25 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      recorder . trustedClick ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . getByRole ( 'button' ,  {  name :  'Submit'  } ) . first ( ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . get_by_role ( "button" ,  name = "Submit" ) . first . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . get_by_role ( "button" ,  name = "Submit" ) . first . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-10 11:25:56 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . getByRole ( AriaRole . BUTTON ,  new  Page . GetByRoleOptions ( ) . setName ( "Submit" ) ) . first ( ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . GetByRole ( AriaRole . Button ,  new ( )  {  Name  =  "Submit"  } ) . First . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( message . text ( ) ) . toBe ( 'click1' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test ( 'should click locator.nth' ,  async  ( {  page ,  openRecorder  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < button  onclick = "console.log('click1')" > Submit < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < button  onclick = "console.log('click2')" > Submit < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-24 18:01:48 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  locator  =  await  recorder . hoverOverElement ( 'button >> nth=1' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( locator ) . toBe ( ` getByRole('button', { name: 'Submit' }).nth(1) ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ message ,  sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . waitForEvent ( 'console' ,  msg  = >  msg . type ( )  !==  'error' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'click' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-14 15:16:25 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      recorder . trustedClick ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . getByRole ( 'button' ,  {  name :  'Submit'  } ) . nth ( 1 ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . get_by_role ( "button" ,  name = "Submit" ) . nth ( 1 ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . get_by_role ( "button" ,  name = "Submit" ) . nth ( 1 ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-10 11:25:56 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . getByRole ( AriaRole . BUTTON ,  new  Page . GetByRoleOptions ( ) . setName ( "Submit" ) ) . nth ( 1 ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . GetByRole ( AriaRole . Button ,  new ( )  {  Name  =  "Submit"  } ) . Nth ( 1 ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( message . text ( ) ) . toBe ( 'click2' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test ( 'should generate frame locators' ,  async  ( {  page ,  openRecorder ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    / * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      iframe 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        div  Hello1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        iframe 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          div  Hello2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          iframe [ name = one ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            div  HelloNameOne 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          iframe [ name = two ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            dev  HelloNameTwo 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          iframe 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            dev  HelloAnonymous 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < iframe  id = frame1  srcdoc = "<div>Hello1</div><iframe srcdoc='<div>Hello2</div><iframe name=one></iframe><iframe name=two></iframe><iframe></iframe>'>" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ` , server.EMPTY_PAGE, 6);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  frameHello1  =  page . mainFrame ( ) . childFrames ( ) [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  frameHello2  =  frameHello1 . childFrames ( ) [ 0 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  frameOne  =  page . frame ( {  name :  'one'  } ) ! ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    await  frameOne . setContent ( ` <div>HelloNameOne</div> ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  frameTwo  =  page . frame ( {  name :  'two'  } ) ! ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    await  frameTwo . setContent ( ` <div>HelloNameTwo</div> ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  frameAnonymous  =  frameHello2 . childFrames ( ) . find ( f  = >  ! f . name ( ) ) ! ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    await  frameAnonymous . setContent ( ` <div>HelloNameAnonymous</div> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'Hello1' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      frameHello1 . click ( 'text=Hello1' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . frameLocator ( '#frame1' ) . getByText ( 'Hello1' ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . frameLocator ( "#frame1" ) . getByText ( "Hello1" ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . frame_locator ( "#frame1" ) . get_by_text ( "Hello1" ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . frame_locator ( "#frame1" ) . get_by_text ( "Hello1" ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . FrameLocator ( "#frame1" ) . GetByText ( "Hello1" ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'Hello2' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      frameHello2 . click ( 'text=Hello2' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . frameLocator ( '#frame1' ) . frameLocator ( 'iframe' ) . getByText ( 'Hello2' ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . frameLocator ( "#frame1" ) . frameLocator ( "iframe" ) . getByText ( "Hello2" ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . frame_locator ( "#frame1" ) . frame_locator ( "iframe" ) . get_by_text ( "Hello2" ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . frame_locator ( "#frame1" ) . frame_locator ( "iframe" ) . get_by_text ( "Hello2" ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . FrameLocator ( "#frame1" ) . FrameLocator ( "iframe" ) . GetByText ( "Hello2" ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'one' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      frameOne . click ( 'text=HelloNameOne' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-30 21:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . frameLocator ( '#frame1' ) . frameLocator ( 'iframe' ) . frameLocator ( 'iframe[name="one"]' ) . getByText ( 'HelloNameOne' ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-30 21:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . frameLocator ( "#frame1" ) . frameLocator ( "iframe" ) . frameLocator ( "iframe[name=\\" one \ \ "]" ) . getByText ( "HelloNameOne" ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-30 21:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . frame_locator ( "#frame1" ) . frame_locator ( "iframe" ) . frame_locator ( "iframe[name=\\" one \ \ "]" ) . get_by_text ( "HelloNameOne" ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-30 21:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . frame_locator ( "#frame1" ) . frame_locator ( "iframe" ) . frame_locator ( "iframe[name=\\" one \ \ "]" ) . get_by_text ( "HelloNameOne" ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . FrameLocator ( "#frame1" ) . FrameLocator ( "iframe" ) . FrameLocator ( "iframe[name=\\" one \ \ "]" ) . GetByText ( "HelloNameOne" ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-30 21:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'HelloNameAnonymous' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      frameAnonymous . click ( 'text=HelloNameAnonymous' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-30 21:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . frameLocator ( '#frame1' ) . frameLocator ( 'iframe' ) . frameLocator ( 'iframe >> nth=2' ) . getByText ( 'HelloNameAnonymous' ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . frameLocator ( "#frame1" ) . frameLocator ( "iframe" ) . frameLocator ( "iframe >> nth=2" ) . getByText ( "HelloNameAnonymous" ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    page . frame_locator ( "#frame1" ) . frame_locator ( "iframe" ) . frame_locator ( "iframe >> nth=2" ) . get_by_text ( "HelloNameAnonymous" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  page . frame_locator ( "#frame1" ) . frame_locator ( "iframe" ) . frame_locator ( "iframe >> nth=2" ) . get_by_text ( "HelloNameAnonymous" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . FrameLocator ( "#frame1" ) . FrameLocator ( "iframe" ) . FrameLocator ( "iframe >> nth=2" ) . GetByText ( "HelloNameAnonymous" ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2023-10-30 21:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test ( 'should generate frame locators with special characters in name attribute' ,  async  ( {  page ,  openRecorder ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < iframe  srcdoc = "<button>Click me</button>" > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ` , server.EMPTY_PAGE, 2);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  page . $eval ( 'iframe' ,  ( frame : HTMLIFrameElement )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      frame . name  =  'foo<bar\'"`>' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'Click me' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . frameLocator ( 'iframe[name="foo<bar\'\\"`>"]' ) . getByRole ( 'button' ,  {  name :  'Click me'  } ) . click ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  await  page . frameLocator ( 'iframe[name="foo\\\\<bar\\\\\\' \ \ \ \ "\\\\\`\\\\>" ] ').getByRole(' button ', { name: ' Click  me '  } ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-30 21:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . frameLocator ( "iframe[name=\\" foo \ \ \ \ < bar \ \ \ \ ' \ \ \ \ \ \ "\\\\\`\\\\>\\" ] ").getByRole(AriaRole.BUTTON, new FrameLocator.GetByRoleOptions().setName(" Click  me " ) ) .click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-30 21:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . frame_locator ( "iframe[name=\\" foo \ \ \ \ < bar \ \ \ \ ' \ \ \ \ \ \ "\\\\\`\\\\>\\" ] ").get_by_role(" button ", name=" Click  me " ) .click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-30 21:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . frame_locator ( "iframe[name=\\" foo \ \ \ \ < bar \ \ \ \ ' \ \ \ \ \ \ "\\\\\`\\\\>\\" ] ").get_by_role(" button ", name=" Click  me " ) .click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . FrameLocator ( "iframe[name=\\" foo \ \ \ \ < bar \ \ \ \ ' \ \ \ \ \ \ "\\\\\`\\\\>\\" ] ").GetByRole(AriaRole.Button, new() { Name = " Click  me "  } ) .ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  test ( 'should generate frame locators with title attribute' ,  async  ( {  page ,  openRecorder ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < iframe  title = "hello world"  srcdoc = "<button>Click me</button>" > < / iframe > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ` , server.EMPTY_PAGE, 1);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'Click me' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . frameLocator ( '[title="hello world"]' ) . getByRole ( 'button' ,  {  name :  'Click me'  } ) . click ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.frameLocator('iframe[title="hello world"]').getByRole('button', { name: 'Click me' }).click(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Java' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` page.frameLocator( \ "iframe[title= \\ \ "hello world \\ \ "] \ ").getByRole(AriaRole.BUTTON, new FrameLocator.GetByRoleOptions().setName( \ "Click me \ ")).click(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Python' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` page.frame_locator( \ "iframe[title= \\ \ "hello world \\ \ "] \ ").get_by_role( \ "button \ ", name= \ "Click me \ ").click() ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Python Async' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.frame_locator("iframe[title= \\ \ "hello world \\ \ "]").get_by_role("button", name="Click me").click() ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'C#' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.FrameLocator("iframe[title= \\ \ "hello world \\ \ "]").GetByRole(AriaRole.Button, new() { Name = "Click me" }).ClickAsync(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test ( 'should generate frame locators with name attribute' ,  async  ( {  page ,  openRecorder ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < iframe  name = "hello world"  srcdoc = "<button>Click me</button>" > < / iframe > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ` , server.EMPTY_PAGE, 1);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'Click me' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . frameLocator ( '[name="hello world"]' ) . getByRole ( 'button' ,  {  name :  'Click me'  } ) . click ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.frameLocator('iframe[name="hello world"]').getByRole('button', { name: 'Click me' }).click(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Java' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` page.frameLocator( \ "iframe[name= \\ \ "hello world \\ \ "] \ ").getByRole(AriaRole.BUTTON, new FrameLocator.GetByRoleOptions().setName( \ "Click me \ ")).click(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Python' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` page.frame_locator( \ "iframe[name= \\ \ "hello world \\ \ "] \ ").get_by_role( \ "button \ ", name= \ "Click me \ ").click() ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Python Async' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.frame_locator("iframe[name= \\ \ "hello world \\ \ "]").get_by_role("button", name="Click me").click() ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'C#' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.FrameLocator("iframe[name= \\ \ "hello world \\ \ "]").GetByRole(AriaRole.Button, new() { Name = "Click me" }).ClickAsync(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test ( 'should generate frame locators with id attribute' ,  async  ( {  page ,  openRecorder ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < iframe  id = "hello-world"  srcdoc = "<button>Click me</button>" > < / iframe > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ` , server.EMPTY_PAGE, 1);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'Click me' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . frameLocator ( '[id="hello-world"]' ) . getByRole ( 'button' ,  {  name :  'Click me'  } ) . click ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.frameLocator('#hello-world').getByRole('button', { name: 'Click me' }).click(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Java' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` page.frameLocator( \ "#hello-world \ ").getByRole(AriaRole.BUTTON, new FrameLocator.GetByRoleOptions().setName( \ "Click me \ ")).click(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Python' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` page.frame_locator( \ "#hello-world \ ").get_by_role( \ "button \ ", name= \ "Click me \ ").click() ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Python Async' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.frame_locator("#hello-world").get_by_role("button", name="Click me").click() ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'C#' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.FrameLocator("#hello-world").GetByRole(AriaRole.Button, new() { Name = "Click me" }).ClickAsync(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test ( 'should generate frame locators with testId' ,  async  ( {  page ,  openRecorder ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < iframe  data-testid = "my-testid"  srcdoc = "<button>Click me</button>" > < / iframe > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ` , server.EMPTY_PAGE, 1);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'my-testid' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . frameLocator ( 'iframe[data-testid="my-testid"]' ) . getByRole ( 'button' ,  {  name :  'Click me'  } ) . click ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.frameLocator('[data-testid="my-testid"]').getByRole('button', { name: 'Click me' }).click(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Java' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` page.frameLocator( \ "[data-testid= \\ \ "my-testid \\ \ "] \ ").getByRole(AriaRole.BUTTON, new FrameLocator.GetByRoleOptions().setName( \ "Click me \ ")).click(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Python' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` page.frame_locator( \ "[data-testid= \\ \ "my-testid \\ \ "] \ ").get_by_role( \ "button \ ", name= \ "Click me \ ").click() ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'Python Async' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.frame_locator("[data-testid= \\ \ "my-testid \\ \ "]").get_by_role("button", name="Click me").click() ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( sources . get ( 'C#' ) ! . text ) . toContain ( 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-11 21:53:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ` await page.FrameLocator("[data-testid= \\ \ "my-testid \\ \ "]").GetByRole(AriaRole.Button, new() { Name = "Click me" }).ClickAsync(); ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  test ( 'should generate role locators undef frame locators' ,  async  ( {  page ,  openRecorder ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` <iframe id=frame1 srcdoc="<button>Submit</button>"> ` ,  server . EMPTY_PAGE ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  frame  =  page . mainFrame ( ) . childFrames ( ) [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'click' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      frame . click ( 'button' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . frameLocator ( '#frame1' ) . getByRole ( 'button' ,  {  name :  'Submit'  } ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-10 11:25:56 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . frameLocator ( "#frame1" ) . getByRole ( AriaRole . BUTTON ,  new  FrameLocator . GetByRoleOptions ( ) . setName ( "Submit" ) ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . frame_locator ( "#frame1" ) . get_by_role ( "button" ,  name = "Submit" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . frame_locator ( "#frame1" ) . get_by_role ( "button" ,  name = "Submit" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . FrameLocator ( "#frame1" ) . GetByRole ( AriaRole . Button ,  new ( )  {  Name  =  "Submit"  } ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test ( 'should generate getByTestId' ,  async  ( {  page ,  openRecorder  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` <div data-testid=testid onclick="console.log('click')">Submit</div> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-24 18:01:48 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  locator  =  await  recorder . hoverOverElement ( 'div' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( locator ) . toBe ( ` getByTestId('testid') ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ message ,  sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . waitForEvent ( 'console' ,  msg  = >  msg . type ( )  !==  'error' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'click' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-14 15:16:25 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      recorder . trustedClick ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . getByTestId ( 'testid' ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . get_by_test_id ( "testid" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . get_by_test_id ( "testid" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . getByTestId ( "testid" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . GetByTestId ( "testid" ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( message . text ( ) ) . toBe ( 'click' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-04 09:29:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  test ( 'should generate getByPlaceholder' ,  async  ( {  page ,  openRecorder  } )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` <input placeholder="Country"></input> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-24 18:01:48 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  locator  =  await  recorder . hoverOverElement ( 'input' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( locator ) . toBe ( ` getByPlaceholder('Country') ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'click' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-14 15:16:25 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      recorder . trustedClick ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-04 09:29:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . getByPlaceholder ( 'Country' ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-04 09:29:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . get_by_placeholder ( "Country" ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-04 09:29:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . get_by_placeholder ( "Country" ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-04 09:29:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . getByPlaceholder ( "Country" ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . GetByPlaceholder ( "Country" ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test ( 'should generate getByAltText' ,  async  ( {  page ,  openRecorder  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` <input alt="Country"></input> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-24 18:01:48 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  locator  =  await  recorder . hoverOverElement ( 'input' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( locator ) . toBe ( ` getByAltText('Country') ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'click' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-14 15:16:25 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      recorder . trustedClick ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . getByAltText ( 'Country' ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . get_by_alt_text ( "Country" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . get_by_alt_text ( "Country" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . getByAltText ( "Country" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . GetByAltText ( "Country" ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-10-03 16:14:02 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  test ( 'should generate getByLabel' ,  async  ( {  page ,  openRecorder  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` <label for=target>Country</label><input id=target> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-24 18:01:48 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  locator  =  await  recorder . hoverOverElement ( 'input' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( locator ) . toBe ( ` getByLabel('Country') ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'click' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-14 15:16:25 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      recorder . trustedClick ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . getByLabel ( 'Country' ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . get_by_label ( "Country" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . get_by_label ( "Country" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . getByLabel ( "Country" ) . click ( ) ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . GetByLabel ( "Country" ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-18 16:09:54 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  test ( 'should generate getByLabel without regex' ,  async  ( {  page ,  openRecorder  } )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` <label for=target>Coun"try</label><input id=target> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-24 18:01:48 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  locator  =  await  recorder . hoverOverElement ( 'input' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( locator ) . toBe ( ` getByLabel('Coun"try') ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ sources ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'click' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-14 15:16:25 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      recorder . trustedClick ( ) , 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'JavaScript' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-18 16:09:54 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . getByLabel ( 'Coun\"try' ) . click ( ) ; ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-18 16:09:54 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    page . get_by_label ( "Coun\\" try " ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Python Async' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-18 16:09:54 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . get_by_label ( "Coun\\" try " ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'Java' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-18 16:09:54 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      page . getByLabel ( "Coun\\" try " ) . click ( ) ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-23 09:31:30 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect . soft ( sources . get ( 'C#' ) ! . text ) . toContain ( ` 
 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-15 10:24:26 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await  page . GetByLabel ( "Coun\\" try " ) . ClickAsync ( ) ; ` );
  
						 
					
						
							
								
									
										
										
										
											2022-10-05 11:02:15 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-03 13:41:51 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  test ( 'should consume pointer events' ,  async  ( {  page ,  openRecorder  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  recorder  =  await  openRecorder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . setContentAndWait ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < button  onclick = "console.log('clicked')" > Submit < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  button  =  document . querySelector ( 'button' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  log  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( const  eventName  of  [ 'mousedown' ,  'mousemove' ,  'mouseup' ,  'pointerdown' ,  'pointermove' ,  'pointerup' ,  'click' ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          button . addEventListener ( eventName ,  e  = >  log . push ( e . type ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < / script > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  recorder . hoverOverElement ( 'button' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( await  page . evaluate ( 'log' ) ) . toEqual ( [ 'pointermove' ,  'mousemove' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  [ message ]  =  await  Promise . all ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . waitForEvent ( 'console' ,  msg  = >  msg . type ( )  !==  'error' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . waitForOutput ( 'JavaScript' ,  'click' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      recorder . trustedClick ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( message . text ( ) ) . toBe ( 'clicked' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( await  page . evaluate ( 'log' ) ) . toEqual ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      'pointermove' ,  'mousemove' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      'pointermove' ,  'mousemove' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      'pointerdown' ,  'mousedown' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      'pointerup' ,  'mouseup' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      'click' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-04 19:27:45 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;