diff --git a/src/page.ts b/src/page.ts index 8aa2198..d1e92f3 100644 --- a/src/page.ts +++ b/src/page.ts @@ -384,11 +384,10 @@ export class Page extends EventTarget { if (index > -1) { this.#browser.pages.splice(index, 1); } + await this.#celestial.close(); return; } - await this.#celestial.close(); - throw new Error(`Page has already been closed or doesn't exist (${res})`); } diff --git a/tests/leak_test.ts b/tests/leak_test.ts new file mode 100644 index 0000000..27ee665 --- /dev/null +++ b/tests/leak_test.ts @@ -0,0 +1,11 @@ +import { launch } from "../mod.ts"; + +const browser = await launch(); + +addEventListener("unload", async () => { + await browser.close(); +}); + +Deno.test("Opening and closing a page without closing the browser isn't leak", async () => { + await using _ = await browser.newPage(); +});