测试:隔离 Firefox 应用数据目录
前端验证 / verify (push) Failing after 15m3s

This commit is contained in:
cieanyau committed 2026-11-07 10:20:39 +08:00
1 parent cbf0ba30e7
commit d72a7e03d8
1 file changed
+24 -2
+24 -2
View File
@@ -4,6 +4,9 @@
*/ */
import assert from "node:assert/strict"; import assert from "node:assert/strict";
import { createHash } from "node:crypto"; 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 { test } from "node:test";
import { firefox } from "playwright"; import { firefox } from "playwright";
import { import {
@@ -548,8 +551,22 @@ test(
await routeHomeAccount(page.context()); await routeHomeAccount(page.context());
await login(page, "/"); await login(page, "/");
const chromium = await userIdChipGeometry(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 { 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({ const context = await browser.newContext({
viewport: { width: 1440, height: 900 }, viewport: { width: 1440, height: 900 },
serviceWorkers: "block", serviceWorkers: "block",
@@ -575,7 +592,12 @@ test(
assert.deepEqual(blocked, [], "Firefox must stay on local origins"); assert.deepEqual(blocked, [], "Firefox must stay on local origins");
return { chromium, firefox: gecko }; return { chromium, firefox: gecko };
} finally { } finally {
await browser.close(); await browser?.close();
await Promise.all(
[firefoxAppData, firefoxLocalAppData].map((directory) =>
rm(directory, { recursive: true, force: true }),
),
);
} }
}), }),
); );