2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								/ * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Copyright  2018  Google  Inc .  All  rights  reserved . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Modifications  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  as  it ,  expect  }  from  './pageTest' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								it ( 'should have a nice preview' ,  async  ( {  page ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . goto ( ` ${ server . PREFIX } /dom.html ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  outer  =  page . locator ( '#outer' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  inner  =  outer . locator ( '#inner' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  check  =  page . locator ( '#check' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  text  =  await  inner . evaluateHandle ( e  = >  e . firstChild ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . evaluate ( ( )  = >  1 ) ;   // Give them a chance to calculate the preview.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-16 14:24:10 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  expect . soft ( String ( outer ) ) . toBe ( ` locator('#outer') ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect . soft ( String ( inner ) ) . toBe ( ` locator('#outer').locator('#inner') ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect . soft ( String ( text ) ) . toBe ( ` JSHandle@#text=Text,↵more text ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect . soft ( String ( check ) ) . toBe ( ` locator('#check') ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								it ( 'getAttribute should work' ,  async  ( {  page ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . goto ( ` ${ server . PREFIX } /dom.html ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  locator  =  page . locator ( '#outer' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  locator . getAttribute ( 'name' ) ) . toBe ( 'value' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  locator . getAttribute ( 'foo' ) ) . toBe ( null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . getAttribute ( '#outer' ,  'name' ) ) . toBe ( 'value' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . getAttribute ( '#outer' ,  'foo' ) ) . toBe ( null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								it ( 'inputValue should work' ,  async  ( {  page ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . goto ( ` ${ server . PREFIX } /dom.html ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-03 10:22:40 -05:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  await  page . selectOption ( '#select' ,  'foo' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . inputValue ( '#select' ) ) . toBe ( 'foo' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  await  page . fill ( '#textarea' ,  'text value' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . inputValue ( '#textarea' ) ) . toBe ( 'text value' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . fill ( '#input' ,  'input value' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . inputValue ( '#input' ) ) . toBe ( 'input value' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-29 14:09:35 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  const  locator  =  page . locator ( '#input' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  locator . inputValue ( ) ) . toBe ( 'input value' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-24 20:51:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  expect ( await  page . inputValue ( '#inner' ) . catch ( e  = >  e . message ) ) . toContain ( 'Node is not an <input>, <textarea> or <select> element' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-29 14:09:35 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  const  locator2  =  page . locator ( '#inner' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-24 20:51:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  expect ( await  locator2 . inputValue ( ) . catch ( e  = >  e . message ) ) . toContain ( 'Node is not an <input>, <textarea> or <select> element' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								it ( 'innerHTML should work' ,  async  ( {  page ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . goto ( ` ${ server . PREFIX } /dom.html ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-29 14:09:35 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  const  locator  =  page . locator ( '#outer' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  locator . innerHTML ( ) ) . toBe ( '<div id="inner">Text,\nmore text</div>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . innerHTML ( '#outer' ) ) . toBe ( '<div id="inner">Text,\nmore text</div>' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								it ( 'innerText should work' ,  async  ( {  page ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . goto ( ` ${ server . PREFIX } /dom.html ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-29 14:09:35 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  const  locator  =  page . locator ( '#inner' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  locator . innerText ( ) ) . toBe ( 'Text, more text' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . innerText ( '#inner' ) ) . toBe ( 'Text, more text' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								it ( 'innerText should throw' ,  async  ( {  page ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . setContent ( ` <svg>text</svg> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  error1  =  await  page . innerText ( 'svg' ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-24 20:51:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  expect ( error1 . message ) . toContain ( 'Node is not an HTMLElement' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-29 14:09:35 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  const  locator  =  page . locator ( 'svg' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  error2  =  await  locator . innerText ( ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-24 20:51:09 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  expect ( error2 . message ) . toContain ( 'Node is not an HTMLElement' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-24 18:55:45 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								it ( 'innerText should produce log' ,  async  ( {  page ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . setContent ( ` <div>Hello</div> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  locator  =  page . locator ( 'span' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  error  =  await  locator . innerText ( {  timeout : 1000  } ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-04 15:19:16 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  expect ( error . message ) . toContain ( 'waiting for locator(\'span\')' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-24 18:55:45 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								it ( 'textContent should work' ,  async  ( {  page ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . goto ( ` ${ server . PREFIX } /dom.html ` ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-29 14:09:35 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  const  locator  =  page . locator ( '#inner' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  locator . textContent ( ) ) . toBe ( 'Text,\nmore text' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . textContent ( '#inner' ) ) . toBe ( 'Text,\nmore text' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								it ( 'isEnabled and isDisabled should work' ,  async  ( {  page  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . setContent ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    < button  disabled > button1 < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    < button > button2 < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    < div > div < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  ` );
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  div  =  page . locator ( 'div' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  div . isEnabled ( ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  div . isDisabled ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isEnabled ( 'div' ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isDisabled ( 'div' ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  button1  =  page . locator ( ':text("button1")' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  button1 . isEnabled ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  button1 . isDisabled ( ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isEnabled ( ':text("button1")' ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isDisabled ( ':text("button1")' ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  button2  =  page . locator ( ':text("button2")' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  button2 . isEnabled ( ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  button2 . isDisabled ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isEnabled ( ':text("button2")' ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isDisabled ( ':text("button2")' ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								it ( 'isEditable should work' ,  async  ( {  page  } )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-22 11:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  await  page . setContent ( ` 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    < input  id = input1  disabled > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    < textarea > < / textarea > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    < input  id = input2 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    < div  contenteditable = "true" > < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    < span  id = span1  role = textbox  aria-readonly = true > < / span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    < span  id = span2  role = textbox > < / span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    < button > button < / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  ` );
 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  await  page . $eval ( 'textarea' ,  t  = >  t . readOnly  =  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  input1  =  page . locator ( '#input1' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  input1 . isEditable ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isEditable ( '#input1' ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  input2  =  page . locator ( '#input2' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  input2 . isEditable ( ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isEditable ( '#input2' ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  textarea  =  page . locator ( 'textarea' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  textarea . isEditable ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isEditable ( 'textarea' ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-22 11:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  expect ( await  page . locator ( 'div' ) . isEditable ( ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . locator ( '#span1' ) . isEditable ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . locator ( '#span2' ) . isEditable ( ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  error  =  await  page . locator ( 'button' ) . isEditable ( ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( error . message ) . toContain ( 'Element is not an <input>, <textarea>, <select> or [contenteditable] and does not have a role allowing [aria-readonly]' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-27 18:58:08 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								it ( 'isChecked should work' ,  async  ( {  page  } )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-22 21:37:20 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  await  page . setContent ( ` <input type='checkbox' checked><div>Not a checkbox</div> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  element  =  page . locator ( 'input' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  element . isChecked ( ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isChecked ( 'input' ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  element . evaluate ( input  = >  ( input  as  HTMLInputElement ) . checked  =  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  element . isChecked ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . isChecked ( 'input' ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  error  =  await  page . isChecked ( 'div' ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( error . message ) . toContain ( 'Not a checkbox or radio button' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-29 14:09:35 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-10 18:56:45 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								it ( 'isChecked should work for indeterminate input' ,  async  ( {  page  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  it . info ( ) . annotations . push ( {  type :  'issue' ,  description :  'https://github.com/microsoft/playwright/issues/20190'  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . setContent ( ` <input type="checkbox" checked> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . locator ( 'input' ) . evaluate ( ( e : HTMLInputElement )  = >  e . indeterminate  =  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . locator ( 'input' ) . isChecked ( ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  expect ( page . locator ( 'input' ) ) . toBeChecked ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . locator ( 'input' ) . uncheck ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . locator ( 'input' ) . isChecked ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  expect ( page . locator ( 'input' ) ) . not . toBeChecked ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-27 18:58:08 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								it ( 'allTextContents should work' ,  async  ( {  page  } )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-29 14:09:35 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  await  page . setContent ( ` <div>A</div><div>B</div><div>C</div> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . locator ( 'div' ) . allTextContents ( ) ) . toEqual ( [ 'A' ,  'B' ,  'C' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-27 18:58:08 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								it ( 'allInnerTexts should work' ,  async  ( {  page  } )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-29 14:09:35 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								  await  page . setContent ( ` <div>A</div><div>B</div><div>C</div> ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( await  page . locator ( 'div' ) . allInnerTexts ( ) ) . toEqual ( [ 'A' ,  'B' ,  'C' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 13:04:15 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-26 07:58:58 -08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								it ( 'should return page' ,  async  ( {  page ,  server  } )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  await  page . goto ( server . PREFIX  +  '/frames/two-frames.html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  outer  =  page . locator ( '#outer' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( outer . page ( ) ) . toBe ( page ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  inner  =  outer . locator ( '#inner' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( inner . page ( ) ) . toBe ( page ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const  inFrame  =  page . frames ( ) [ 1 ] . locator ( 'div' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  expect ( inFrame . page ( ) ) . toBe ( page ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} ) ;