From 93bdcb9708a31e57e1b424b2f13dc47c151407dd Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Thu, 22 Aug 2024 00:25:54 +0200 Subject: [PATCH] unflake --- tests/library/client-certificates.spec.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tests/library/client-certificates.spec.ts b/tests/library/client-certificates.spec.ts index 4922119ee7..a6f6628569 100644 --- a/tests/library/client-certificates.spec.ts +++ b/tests/library/client-certificates.spec.ts @@ -377,7 +377,7 @@ test.describe('browser', () => { await page.close(); }); - test('should handle TLS renegotiation with client certificates', async ({ browser, asset }) => { + test('should handle TLS renegotiation with client certificates', async ({ browser, asset, browserName, platform }) => { const server: https.Server = createHttpsServer({ key: fs.readFileSync(asset('client-certificates/server/server_key.pem')), cert: fs.readFileSync(asset('client-certificates/server/server_cert.pem')), @@ -390,6 +390,8 @@ test.describe('browser', () => { }); server.on('request', async (req, res) => { + if (!req.socket) + return; const renegotiate = () => new Promise((resolve, reject) => { (req.socket as tls.TLSSocket).renegotiate({ requestCert: true, @@ -409,10 +411,12 @@ test.describe('browser', () => { 'Content-Type': 'text/plain', 'Transfer-Encoding': 'chunked' }); + res.flushHeaders(); - req.on('data', data => { + await new Promise(resolve => req.once('data', data => { res.write(`server received: ${data.toString()}\n`); - }); + resolve(); + })); await renegotiate(); for (let i = 0; i < 4; i++) { @@ -458,12 +462,13 @@ test.describe('browser', () => { await new Promise(resolve => server.listen(0, 'localhost', resolve)); const port = (server.address() as import('net').AddressInfo).port; - const serverUrl = `https://localhost:${port}`; + const origin = 'https://' + (browserName === 'webkit' && platform === 'darwin' ? 'local.playwright' : 'localhost'); + const serverUrl = `${origin}:${port}`; const context = await browser.newContext({ ignoreHTTPSErrors: true, clientCertificates: [{ - origin: `https://localhost:${port}`, + origin, certPath: asset('client-certificates/client/trusted/cert.pem'), keyPath: asset('client-certificates/client/trusted/key.pem'), }],