@@ -461,7 +461,7 @@ test.describe('browser', () => {
461
461
} ) ;
462
462
463
463
await new Promise < void > ( resolve => server . listen ( 0 , 'localhost' , resolve ) ) ;
464
- const port = ( server . address ( ) as import ( ' net' ) . AddressInfo ) . port ;
464
+ const port = ( server . address ( ) as net . AddressInfo ) . port ;
465
465
const origin = 'https://' + ( browserName === 'webkit' && platform === 'darwin' ? 'local.playwright' : 'localhost' ) ;
466
466
const serverUrl = `${ origin } :${ port } ` ;
467
467
@@ -671,6 +671,39 @@ test.describe('browser', () => {
671
671
await page . close ( ) ;
672
672
} ) ;
673
673
674
+ test ( 'should handle rejected certificate in handshake with HTTP/2' , async ( { browser, asset, browserName, platform } ) => {
675
+ const server : http2 . Http2SecureServer = createHttp2Server ( {
676
+ key : fs . readFileSync ( asset ( 'client-certificates/server/server_key.pem' ) ) ,
677
+ cert : fs . readFileSync ( asset ( 'client-certificates/server/server_cert.pem' ) ) ,
678
+ ca : [ fs . readFileSync ( asset ( 'client-certificates/server/server_cert.pem' ) ) ] ,
679
+ requestCert : true ,
680
+ } , async ( req : http2 . Http2ServerRequest , res : http2 . Http2ServerResponse ) => {
681
+ res . writeHead ( 200 , { 'Content-Type' : 'text/html' } ) ;
682
+ res . end ( 'Hello world' ) ;
683
+ } ) ;
684
+
685
+ await new Promise < void > ( resolve => server . listen ( 0 , 'localhost' , resolve ) ) ;
686
+ const port = ( server . address ( ) as net . AddressInfo ) . port ;
687
+ const serverUrl = 'https://' + ( browserName === 'webkit' && platform === 'darwin' ? 'local.playwright' : 'localhost' ) + ':' + port ;
688
+
689
+ const context = await browser . newContext ( {
690
+ ignoreHTTPSErrors : true ,
691
+ clientCertificates : [ {
692
+ origin : 'https://just-there-that-the-client-certificates-proxy-server-is-getting-launched.com' ,
693
+ certPath : asset ( 'client-certificates/client/trusted/cert.pem' ) ,
694
+ keyPath : asset ( 'client-certificates/client/trusted/key.pem' ) ,
695
+ } ] ,
696
+ } ) ;
697
+
698
+ const page = await context . newPage ( ) ;
699
+
700
+ // This was triggering an unhandled error before.
701
+ await page . goto ( serverUrl ) . catch ( e => e ) ;
702
+
703
+ await context . close ( ) ;
704
+ await new Promise < void > ( resolve => server . close ( ( ) => resolve ( ) ) ) ;
705
+ } ) ;
706
+
674
707
test . describe ( 'persistentContext' , ( ) => {
675
708
test ( 'validate input' , async ( { launchPersistent } ) => {
676
709
test . slow ( ) ;
0 commit comments