2020-10-29 16:12:30 -07: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 . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-25 15:05:50 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  {  browserTest  as  it ,  expect  }  from  '../config/browserTest' ;  
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-25 16:47:04 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it . skip ( ( {  mode  } )  = >  mode . startsWith ( 'service' ) ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-26 12:45:53 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it . use ( {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  launchOptions : async  ( {  launchOptions  } ,  use )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  use ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      . . . launchOptions , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      proxy :  {  server :  'per-context'  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it . beforeEach ( ( {  server  } )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  server . setRoute ( '/target.html' ,  async  ( req ,  res )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    res . end ( '<html><title>Served by the proxy</title></html>' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-27 18:00:06 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should throw for missing global proxy on Chromium Windows' ,  async  ( {  browserName ,  platform ,  browserType ,  server  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-04-30 00:02:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  it . skip ( browserName  !==  'chromium'  ||  platform  !==  'win32' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 17:50:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  let  browser ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    browser  =  await  browserType . launch ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      proxy : undefined , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  error  =  await  browser . newContext ( {  proxy :  {  server :  ` localhost: ${ server . PORT } `  }  } ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( error . toString ( ) ) . toContain ( 'Browser needs to be launched with the global proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  browser . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-28 07:31:30 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should work when passing the proxy only on the context level' ,  async  ( {  browserName ,  platform ,  browserType ,  server ,  proxyServer  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-04-30 00:02:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  // Currently an upstream bug in the network stack of Chromium which leads that
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // the wrong proxy gets used in the BrowserContext.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  it . fixme ( browserName  ===  'chromium'  &&  platform  ===  'win32' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 17:50:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  let  browser ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    browser  =  await  browserType . launch ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      proxy : undefined , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  context  =  await  browser . newContext ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      proxy :  {  server :  ` localhost: ${ proxyServer . PORT } `  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 17:50:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-30 00:02:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 17:50:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  page . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( proxyServer . requestUrls ) . toContain ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-19 17:50:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  browser . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-30 00:02:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should throw for bad server value' ,  async  ( {  contextFactory  } )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  error  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    // @ts-expect-error server must be a string
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    proxy :  {  server : 123  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( error . message ) . toContain ( 'proxy.server: expected string, got number' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should use proxy' ,  async  ( {  contextFactory ,  server ,  proxyServer  } )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxy :  {  server :  ` localhost: ${ proxyServer . PORT } `  } 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  await  page . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  expect ( proxyServer . requestUrls ) . toContain ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-23 09:22:49 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								it ( 'should set cookie for top-level domain' ,  async  ( {  contextFactory ,  server ,  proxyServer ,  browserName ,  isLinux  } )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  it . fixme ( browserName  ===  'webkit'  &&  isLinux ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-27 21:52:34 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:41:23 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ,  {  allowConnectRequests : true  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-23 09:22:49 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    proxy :  {  server :  ` localhost: ${ proxyServer . PORT } `  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  server . setRoute ( '/empty.html' ,  ( req ,  res )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    res . setHeader ( 'Set-Cookie' ,  ` name=val; Domain=codes; Path=/; ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    res . end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  await  context . request . get ( 'http://codes/empty.html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  [ cookie ]  =  await  context . cookies ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( cookie ) . toBeTruthy ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( cookie . name ) . toBe ( 'name' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( cookie . value ) . toBe ( 'val' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-10 14:01:56 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it . describe ( 'should proxy local network requests' ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  ( const  additionalBypass  of  [ false ,  true ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    it . describe ( additionalBypass  ?  'with other bypasses'  :  'by default' ,  ( )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  ( const  params  of  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          target :  'localhost' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          description :  'localhost' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          target :  '127.0.0.1' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          description :  'loopback address' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          target :  '169.254.3.4' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          description :  'link-local' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ] )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        it ( ` ${ params . description } ` ,  async  ( {  platform ,  browserName ,  contextFactory ,  server ,  proxyServer  } )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-23 14:27:30 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          it . skip ( browserName  ===  'webkit'  &&  platform  ===  'darwin'  &&  [ 'localhost' ,  '127.0.0.1' ] . includes ( params . target )  &&  additionalBypass ,  'Mac webkit does not proxy localhost when bypass rules are set' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-10 14:01:56 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  path  =  ` /target- ${ additionalBypass } - ${ params . target } .html ` ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          server . setRoute ( path ,  async  ( req ,  res )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            res . end ( '<html><title>Served by the proxy</title></html>' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-23 14:27:30 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          const  url  =  ` http:// ${ params . target } :55555 ${ path } ` ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-10 14:01:56 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            proxy :  {  server :  ` localhost: ${ proxyServer . PORT } ` ,  bypass : additionalBypass  ?  '1.non.existent.domain.for.the.test'  :  undefined  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          await  page . goto ( url ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          expect ( proxyServer . requestUrls ) . toContain ( url ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          await  page . goto ( 'http://1.non.existent.domain.for.the.test/foo.html' ) . catch ( ( )  = >  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( additionalBypass ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            expect ( proxyServer . requestUrls ) . not . toContain ( 'http://1.non.existent.domain.for.the.test/foo.html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            expect ( proxyServer . requestUrls ) . toContain ( 'http://1.non.existent.domain.for.the.test/foo.html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          await  context . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-13 12:10:09 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should use ipv6 proxy' ,  async  ( {  contextFactory ,  server ,  proxyServer ,  browserName  } )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  it . fail ( browserName  ===  'firefox' ,  'page.goto: NS_ERROR_UNKNOWN_HOST' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-20 02:03:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  it . fail ( ! ! process . env . INSIDE_DOCKER ,  'docker does not support IPv6 by default' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-13 12:10:09 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    proxy :  {  server :  ` [0:0:0:0:0:0:0:1]: ${ proxyServer . PORT } `  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  await  page . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( proxyServer . requestUrls ) . toContain ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should use proxy twice' ,  async  ( {  contextFactory ,  server ,  proxyServer  } )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxy :  {  server :  ` localhost: ${ proxyServer . PORT } `  } 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  await  page . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  expect ( proxyServer . requestUrls ) . toContain ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  await  page . goto ( 'http://non-existent-2.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  expect ( proxyServer . requestUrls ) . toContain ( 'http://non-existent-2.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-27 18:58:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should use proxy for second page' ,  async  ( {  contextFactory ,  server ,  proxyServer  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxy :  {  server :  ` localhost: ${ proxyServer . PORT } `  } 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  await  page . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  expect ( proxyServer . requestUrls ) . toContain ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  page2  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . requestUrls  =  [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  await  page2 . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  expect ( proxyServer . requestUrls ) . toContain ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  expect ( await  page2 . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-24 06:34:37 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should use proxy for https urls' ,  async  ( {  contextFactory ,  httpsServer ,  proxyServer  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-08-19 07:36:03 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  httpsServer . setRoute ( '/target.html' ,  async  ( req ,  res )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    res . end ( '<html><title>Served by https server via proxy</title></html>' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 07:36:03 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:41:23 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( httpsServer . PORT ,  {  allowConnectRequests : true  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 07:36:03 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ignoreHTTPSErrors : true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    proxy :  {  server :  ` localhost: ${ proxyServer . PORT } `  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  await  page . goto ( 'https://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  expect ( proxyServer . connectHosts ) . toContain ( 'non-existent.com:443' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( await  page . title ( ) ) . toBe ( 'Served by https server via proxy' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 07:36:03 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-27 18:58:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should work with IP:PORT notion' ,  async  ( {  contextFactory ,  server ,  proxyServer  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxy :  {  server :  ` 127.0.0.1: ${ proxyServer . PORT } `  } 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  await  page . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  expect ( proxyServer . requestUrls ) . toContain ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-27 18:58:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should throw for socks5 authentication' ,  async  ( {  contextFactory  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  error  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-08 12:07:45 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxy :  {  server :  ` socks5://localhost:1234 ` ,  username :  'user' ,  password :  'secret'  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( error . message ) . toContain ( 'Browser does not support socks5 proxy authentication' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-27 18:58:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should throw for socks4 authentication' ,  async  ( {  contextFactory  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  error  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-02-08 12:07:45 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxy :  {  server :  ` socks4://localhost:1234 ` ,  username :  'user' ,  password :  'secret'  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( error . message ) . toContain ( 'Socks4 proxy protocol does not support authentication' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-27 18:58:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should authenticate' ,  async  ( {  contextFactory ,  server ,  proxyServer  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let  auth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  proxyServer . setAuthHandler ( req  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    auth  =  req . headers [ 'proxy-authorization' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ! ! auth ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxy :  {  server :  ` localhost: ${ proxyServer . PORT } ` ,  username :  'user' ,  password :  'secret'  } 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  await  page . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  expect ( proxyServer . requestUrls ) . toContain ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( auth ) . toBe ( 'Basic '  +  Buffer . from ( 'user:secret' ) . toString ( 'base64' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-27 18:58:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should authenticate with empty password' ,  async  ( {  contextFactory ,  server ,  proxyServer  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let  auth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  proxyServer . setAuthHandler ( req  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    auth  =  req . headers [ 'proxy-authorization' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ! ! auth ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-21 11:47:13 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxy :  {  server :  ` localhost: ${ proxyServer . PORT } ` ,  username :  'user' ,  password :  ''  } 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-21 11:47:13 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-21 11:47:13 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  page . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  expect ( auth ) . toBe ( 'Basic '  +  Buffer . from ( 'user:' ) . toString ( 'base64' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-21 11:47:13 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-27 18:58:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should isolate proxy credentials between contexts' ,  async  ( {  contextFactory ,  server ,  browserName ,  proxyServer  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let  auth ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  proxyServer . setAuthHandler ( req  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    auth  =  req . headers [ 'proxy-authorization' ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ! ! auth ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-21 14:39:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      proxy :  {  server :  ` localhost: ${ proxyServer . PORT } ` ,  username :  'user1' ,  password :  'secret1'  } 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-21 14:39:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  page . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( auth ) . toBe ( 'Basic '  +  Buffer . from ( 'user1:secret1' ) . toString ( 'base64' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-21 14:39:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  context . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  auth  =  undefined ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-21 14:39:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      proxy :  {  server :  ` localhost: ${ proxyServer . PORT } ` ,  username :  'user2' ,  password :  'secret2'  } 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-21 14:39:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  page . goto ( 'http://non-existent.com/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( auth ) . toBe ( 'Basic '  +  Buffer . from ( 'user2:secret2' ) . toString ( 'base64' ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-21 14:39:11 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  context . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-29 10:45:31 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should exclude patterns' ,  async  ( {  contextFactory ,  server ,  proxyServer  } )  = >  {  
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  proxyServer . forwardTo ( server . PORT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  // FYI: using long and weird domain names to avoid ATT DNS hijacking
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // that resolves everything to some weird search results page.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  //
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // @see https://gist.github.com/CollinChaffin/24f6c9652efb3d6d5ef2f5502720ef00
 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-19 13:34:32 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxy :  {  server :  ` localhost: ${ proxyServer . PORT } ` ,  bypass :  '1.non.existent.domain.for.the.test, 2.non.existent.domain.for.the.test, .another.test'  } 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-30 13:08:18 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  nonFaviconUrls  =  ( )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  proxyServer . requestUrls . filter ( u  = >  ! u . includes ( 'favicon' ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-29 10:45:31 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxyServer . requestUrls  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  page . goto ( 'http://0.non.existent.domain.for.the.test/target.html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( proxyServer . requestUrls ) . toContain ( 'http://0.non.existent.domain.for.the.test/target.html' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    await  page . close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    proxyServer . requestUrls  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  error  =  await  page . goto ( 'http://1.non.existent.domain.for.the.test/target.html' ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-30 13:08:18 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( nonFaviconUrls ( ) ) . toEqual ( [ ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    expect ( error . message ) . toBeTruthy ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-29 10:45:31 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-29 10:45:31 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxyServer . requestUrls  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  error  =  await  page . goto ( 'http://2.non.existent.domain.for.the.test/target.html' ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-30 13:08:18 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( nonFaviconUrls ( ) ) . toEqual ( [ ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    expect ( error . message ) . toBeTruthy ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-29 10:45:31 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-29 10:45:31 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxyServer . requestUrls  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  error  =  await  page . goto ( 'http://foo.is.the.another.test/target.html' ) . catch ( e  = >  e ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-30 13:08:18 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( nonFaviconUrls ( ) ) . toEqual ( [ ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    expect ( error . message ) . toBeTruthy ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-29 10:45:31 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-30 13:08:18 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-05 10:04:20 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-29 10:45:31 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    proxyServer . requestUrls  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    await  page . goto ( 'http://3.non.existent.domain.for.the.test/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-30 13:08:18 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( nonFaviconUrls ( ) ) . toContain ( 'http://3.non.existent.domain.for.the.test/target.html' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    expect ( await  page . title ( ) ) . toBe ( 'Served by the proxy' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-29 10:45:31 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await  page . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should use socks proxy' ,  async  ( {  contextFactory ,  socksPort  } )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    proxy :  {  server :  ` socks5://localhost: ${ socksPort } `  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  await  page . goto ( 'http://non-existent.com' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( await  page . title ( ) ) . toBe ( 'Served by the SOCKS proxy' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'should use socks proxy in second page' ,  async  ( {  contextFactory ,  socksPort  } )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    proxy :  {  server :  ` socks5://localhost: ${ socksPort } `  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  page  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  await  page . goto ( 'http://non-existent.com' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( await  page . title ( ) ) . toBe ( 'Served by the SOCKS proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  page2  =  await  context . newPage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  await  page2 . goto ( 'http://non-existent.com' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  expect ( await  page2 . title ( ) ) . toBe ( 'Served by the SOCKS proxy' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 17:47:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								it ( 'does launch without a port' ,  async  ( {  contextFactory  } )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  context  =  await  contextFactory ( { 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    proxy :  {  server :  'http://localhost'  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-05 18:48:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  await  context . close ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-29 16:12:30 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;