diff --git a/tests/review-style-layout.e2e.test.mjs b/tests/review-style-layout.e2e.test.mjs index fd4652d..63167e3 100644 --- a/tests/review-style-layout.e2e.test.mjs +++ b/tests/review-style-layout.e2e.test.mjs @@ -4,6 +4,9 @@ */ import assert from "node:assert/strict"; import { createHash } from "node:crypto"; +import { mkdtemp, rm } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; import { test } from "node:test"; import { firefox } from "playwright"; import { @@ -548,8 +551,22 @@ test( await routeHomeAccount(page.context()); await login(page, "/"); const chromium = await userIdChipGeometry(page); - const browser = await firefox.launch(); + const firefoxAppData = await mkdtemp( + join(tmpdir(), "console-playwright-firefox-app-"), + ), + firefoxLocalAppData = await mkdtemp( + join(tmpdir(), "console-playwright-firefox-local-"), + ); + let browser; try { + // Firefox must not inspect a developer's personal app-data directory before using its test profile. + browser = await firefox.launch({ + env: { + ...process.env, + MOZ_APP_DATA: firefoxAppData, + MOZ_LOCAL_APP_DATA: firefoxLocalAppData, + }, + }); const context = await browser.newContext({ viewport: { width: 1440, height: 900 }, serviceWorkers: "block", @@ -575,7 +592,12 @@ test( assert.deepEqual(blocked, [], "Firefox must stay on local origins"); return { chromium, firefox: gecko }; } finally { - await browser.close(); + await browser?.close(); + await Promise.all( + [firefoxAppData, firefoxLocalAppData].map((directory) => + rm(directory, { recursive: true, force: true }), + ), + ); } }), );