Merge pull request #18401 from timvandermeij/test-orphaned-browsers

Fix orphaned browser processes due to uncaught exceptions in the tests
This commit is contained in:
Tim van der Meij 2024-07-06 15:43:26 +02:00 committed by GitHub
commit fe692435d3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -970,8 +970,6 @@ async function startBrowsers({ baseUrl, initializeSession }) {
await puppeteer.trimCache(); await puppeteer.trimCache();
const browserNames = options.noChrome ? ["firefox"] : ["firefox", "chrome"]; const browserNames = options.noChrome ? ["firefox"] : ["firefox", "chrome"];
sessions = [];
for (const browserName of browserNames) { for (const browserName of browserNames) {
// The session must be pushed first and augmented with the browser once // The session must be pushed first and augmented with the browser once
// it's initialized. The reason for this is that browser initialization // it's initialized. The reason for this is that browser initialization
@ -1078,25 +1076,33 @@ async function main() {
stats = []; stats = [];
} }
try {
if (options.downloadOnly) { if (options.downloadOnly) {
await ensurePDFsDownloaded(); await ensurePDFsDownloaded();
} else if (options.unitTest) { } else if (options.unitTest) {
// Allows linked PDF files in unit-tests as well. // Allows linked PDF files in unit-tests as well.
await ensurePDFsDownloaded(); await ensurePDFsDownloaded();
startUnitTest("/test/unit/unit_test.html", "unit"); await startUnitTest("/test/unit/unit_test.html", "unit");
} else if (options.fontTest) { } else if (options.fontTest) {
startUnitTest("/test/font/font_test.html", "font"); await startUnitTest("/test/font/font_test.html", "font");
} else if (options.integration) { } else if (options.integration) {
// Allows linked PDF files in integration-tests as well. // Allows linked PDF files in integration-tests as well.
await ensurePDFsDownloaded(); await ensurePDFsDownloaded();
startIntegrationTest(); await startIntegrationTest();
} else { } else {
startRefTest(options.masterMode, options.reftest); await startRefTest(options.masterMode, options.reftest);
}
} catch (e) {
// Close the browsers if uncaught exceptions occur, otherwise the spawned
// processes can become orphaned and keep running after `test.mjs` exits
// because the teardown logic of the tests did not get a chance to run.
console.error(e);
await Promise.all(sessions.map(session => closeSession(session.name)));
} }
} }
var server; var server;
var sessions; var sessions = [];
var onAllSessionsClosed; var onAllSessionsClosed;
var host = "127.0.0.1"; var host = "127.0.0.1";
var options = parseOptions(); var options = parseOptions();