diff --git a/server/monitor-types/real-browser-monitor-type.js b/server/monitor-types/real-browser-monitor-type.js index 32fa36f1a..189eb30e7 100644 --- a/server/monitor-types/real-browser-monitor-type.js +++ b/server/monitor-types/real-browser-monitor-type.js @@ -243,6 +243,20 @@ async function testRemoteBrowser(remoteBrowserURL) { throw new Error(e.message); } } + +/** + * Cleanup function to terminate all browser processes and clear cache after each monitoring check. + * @param {import ("playwright-core").Page} page The page to close + * @returns {Promise} + */ +async function cleanupBrowser(page) { + if (page) { + await page.context().clearCookies(); + await page.context().clearPermissions(); + await page.close(); + } +} + class RealBrowserMonitorType extends MonitorType { name = "real-browser"; @@ -280,7 +294,7 @@ class RealBrowserMonitorType extends MonitorType { path: path.join(Database.screenshotDir, filename), }); - await context.close(); + await cleanupBrowser(page); // Ensure cleanup is called after each monitoring check if (res.status() >= 200 && res.status() < 400) { heartbeat.status = UP;