Skip to content

Commit

Permalink
Merge pull request #18401 from timvandermeij/test-orphaned-browsers
Browse files Browse the repository at this point in the history
Fix orphaned browser processes due to uncaught exceptions in the tests
  • Loading branch information
timvandermeij authored Jul 6, 2024
2 parents db91156 + 3afe2d3 commit fe69243
Showing 1 changed file with 23 additions and 17 deletions.
40 changes: 23 additions & 17 deletions test/test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -970,8 +970,6 @@ async function startBrowsers({ baseUrl, initializeSession }) {
await puppeteer.trimCache();

const browserNames = options.noChrome ? ["firefox"] : ["firefox", "chrome"];

sessions = [];
for (const browserName of browserNames) {
// The session must be pushed first and augmented with the browser once
// it's initialized. The reason for this is that browser initialization
Expand Down Expand Up @@ -1078,25 +1076,33 @@ async function main() {
stats = [];
}

if (options.downloadOnly) {
await ensurePDFsDownloaded();
} else if (options.unitTest) {
// Allows linked PDF files in unit-tests as well.
await ensurePDFsDownloaded();
startUnitTest("/test/unit/unit_test.html", "unit");
} else if (options.fontTest) {
startUnitTest("/test/font/font_test.html", "font");
} else if (options.integration) {
// Allows linked PDF files in integration-tests as well.
await ensurePDFsDownloaded();
startIntegrationTest();
} else {
startRefTest(options.masterMode, options.reftest);
try {
if (options.downloadOnly) {
await ensurePDFsDownloaded();
} else if (options.unitTest) {
// Allows linked PDF files in unit-tests as well.
await ensurePDFsDownloaded();
await startUnitTest("/test/unit/unit_test.html", "unit");
} else if (options.fontTest) {
await startUnitTest("/test/font/font_test.html", "font");
} else if (options.integration) {
// Allows linked PDF files in integration-tests as well.
await ensurePDFsDownloaded();
await startIntegrationTest();
} else {
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 sessions;
var sessions = [];
var onAllSessionsClosed;
var host = "127.0.0.1";
var options = parseOptions();
Expand Down

0 comments on commit fe69243

Please sign in to comment.