{"version":3,"file":"browser.test.d.ts","sourceRoot":"","sources":["../../../src/core/web-research/browser.test.ts"],"names":[],"mappings":"","sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { PlaywrightBrowserRenderer } from \"./browser.js\";\n\nconst executable = process.env.JENSEN_PLAYWRIGHT_EXECUTABLE_PATH;\nconst browserIt = executable ? it : it.skip;\n\ndescribe(\"isolated browser renderer\", () => {\n\tbrowserIt(\"executes inline JavaScript while blocking page network and dismissing dialogs\", async () => {\n\t\tconst renderer = new PlaywrightBrowserRenderer(executable, 5000);\n\t\tconst html = await renderer.renderHtml(`\n      <html><body><main id=\"app\">static</main>\n      <script>\n        document.querySelector('#app').textContent = 'rendered evidence';\n        fetch('https://example.com/private').catch(() => {\n          document.querySelector('#app').dataset.network = 'blocked';\n        });\n        alert('dismiss me');\n      </script></body></html>\n    `);\n\t\texpect(html).toContain(\"rendered evidence\");\n\t\texpect(html).not.toContain(\"example domain\");\n\t});\n\n\tbrowserIt(\"uses a fresh context for every render\", async () => {\n\t\tconst renderer = new PlaywrightBrowserRenderer(executable, 5000);\n\t\tawait renderer.renderHtml(\"<script>globalThis.__jensenLeak = 'secret'</script>\");\n\t\tconst next = await renderer.renderHtml(\n\t\t\t\"<main id='state'></main><script>document.querySelector('#state').textContent = String(globalThis.__jensenLeak)</script>\",\n\t\t);\n\t\texpect(next).toContain(\">undefined<\");\n\t\texpect(next).not.toContain(\">secret<\");\n\t});\n\n\tit(\"honors cancellation before browser launch\", async () => {\n\t\tconst renderer = new PlaywrightBrowserRenderer(executable ?? \"/missing\", 1000);\n\t\tconst controller = new AbortController();\n\t\tcontroller.abort();\n\t\tawait expect(renderer.renderHtml(\"<p>unused</p>\", controller.signal)).rejects.toMatchObject({ code: \"ABORTED\" });\n\t});\n});\n"]}