chore: add ESRP CDN for browser downloads (#33585)

This commit is contained in:
Max Schmitt 2024-11-14 16:19:42 +01:00 committed by GitHub
parent b8f824ca6b
commit 358fad45cd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 9 deletions

View File

@ -36,7 +36,7 @@ export async function downloadBrowserWithProgressBar(title: string, browserDirec
const zipPath = path.join(os.tmpdir(), downloadFileName);
try {
const retryCount = 3;
const retryCount = 5;
for (let attempt = 1; attempt <= retryCount; ++attempt) {
debugLogger.log('install', `downloading ${title} - attempt #${attempt}`);
const url = downloadURLs[(attempt - 1) % downloadURLs.length];

View File

@ -37,16 +37,23 @@ const PACKAGE_PATH = path.join(__dirname, '..', '..', '..');
const BIN_PATH = path.join(__dirname, '..', '..', '..', 'bin');
const PLAYWRIGHT_CDN_MIRRORS = [
'https://playwright.azureedge.net/dbazure/download/playwright', // ESRP CDN
'https://playwright.download.prss.microsoft.com/dbazure/download/playwright', // Directly hit ESRP CDN
// Old endpoints which hit the Storage Bucket directly:
'https://playwright.azureedge.net',
'https://playwright-akamai.azureedge.net',
'https://playwright-verizon.azureedge.net',
'https://playwright-akamai.azureedge.net', // Actually Edgio which will be retired Q4 2025.
'https://playwright-verizon.azureedge.net', // Actually Edgio which will be retired Q4 2025.
];
if (process.env.PW_TEST_CDN_THAT_SHOULD_WORK) {
for (let i = 0; i < PLAYWRIGHT_CDN_MIRRORS.length; i++) {
const cdn = PLAYWRIGHT_CDN_MIRRORS[i];
if (cdn !== process.env.PW_TEST_CDN_THAT_SHOULD_WORK)
PLAYWRIGHT_CDN_MIRRORS[i] = cdn + '.does-not-resolve.playwright.dev';
if (cdn !== process.env.PW_TEST_CDN_THAT_SHOULD_WORK) {
const parsedCDN = new URL(cdn);
parsedCDN.hostname = parsedCDN.hostname + '.does-not-resolve.playwright.dev';
PLAYWRIGHT_CDN_MIRRORS[i] = parsedCDN.toString();
}
}
}

View File

@ -19,6 +19,8 @@ import net from 'net';
import type { AddressInfo } from 'net';
const CDNS = [
'https://playwright.azureedge.net/dbazure/download/playwright', // ESRP
'https://playwright.download.prss.microsoft.com/dbazure/download/playwright', // ESRP Fallback
'https://playwright.azureedge.net',
'https://playwright-akamai.azureedge.net',
'https://playwright-verizon.azureedge.net',
@ -90,8 +92,8 @@ test(`npx playwright install should not hang when CDN closes the connection`, as
},
expectToExitWithError: true
});
expect(retryCount).toBe(3);
expect([...result.matchAll(/Download failed: server closed connection/g)]).toHaveLength(3);
expect(retryCount).toBe(5);
expect([...result.matchAll(/Download failed: server closed connection/g)]).toHaveLength(5);
} finally {
await new Promise(resolve => server.close(resolve));
}
@ -120,8 +122,8 @@ test(`npx playwright install should not hang when CDN TCP connection stalls`, as
},
expectToExitWithError: true
});
expect(retryCount).toBe(3);
expect([...result.matchAll(/timed out after/g)]).toHaveLength(3);
expect(retryCount).toBe(5);
expect([...result.matchAll(/timed out after/g)]).toHaveLength(5);
} finally {
for (const socket of socketsToDestroy)
socket.destroy();