diff --git a/browser_patches/firefox/juggler/protocol/PageHandler.js b/browser_patches/firefox/juggler/protocol/PageHandler.js index 573df5a14c..bab151b392 100644 --- a/browser_patches/firefox/juggler/protocol/PageHandler.js +++ b/browser_patches/firefox/juggler/protocol/PageHandler.js @@ -257,11 +257,10 @@ class PageHandler { } async ['Heap.collectGarbage']() { - await new Promise((resolve) => { - Cu.schedulePreciseGC(() => { - resolve(); - }); - }); + Services.obs.notifyObservers(null, "child-gc-request"); + Cu.forceGC(); + Services.obs.notifyObservers(null, "child-cc-request"); + Cu.forceCC(); } async ['Network.getResponseBody']({requestId}) { diff --git a/tests/page/page-force-gc.spec.ts b/tests/page/page-force-gc.spec.ts index 92a0b370bd..507c4b52e6 100644 --- a/tests/page/page-force-gc.spec.ts +++ b/tests/page/page-force-gc.spec.ts @@ -16,12 +16,12 @@ import { test as it, expect } from './pageTest'; -it('should work', async function({ page, browserName }) { +it.only('should work', async function({ page, browserName }) { await page.evaluate(() => { - globalThis.thing = {}; - globalThis.something = new WeakRef(globalThis.thing); + globalThis.objectToDestroy = {}; + globalThis.weakRef = new WeakRef(globalThis.objectToDestroy); }); - await page.evaluate(() => globalThis.thing = null); + await page.evaluate(() => globalThis.objectToDestroy = null); await page.forceGarbageCollection(); - expect(await page.evaluate(() => globalThis.something.deref())).toBe(undefined); + expect(await page.evaluate(() => globalThis.weakRef.deref())).toBe(undefined); });