fix: 补齐候选诊断环境与证据保护(09-06-release-gate-integrity)
这个提交包含在:
@@ -0,0 +1,38 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { createRequire } from "node:module";
|
||||
import { mkdirSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
|
||||
import * as fs from "node:fs";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import vm from "node:vm";
|
||||
import test from "node:test";
|
||||
|
||||
const require = createRequire(new URL("../../../client/package.json", import.meta.url));
|
||||
const ts = require("typescript");
|
||||
for (const configured of [false, true]) test(`截图输出按 spec/加载隔离,配置输出根=${configured}`, context => {
|
||||
const root = mkdtempSync(path.join(os.tmpdir(), "hyb-visual-path-test-"));
|
||||
context.after(() => rmSync(root, { recursive: true, force: true }));
|
||||
mkdirSync(path.join(root, "client"));
|
||||
const outputRoot = path.join(root, configured ? "report-visual" : "output/playwright");
|
||||
const directories = [];
|
||||
for (const [file, marker, output] of [
|
||||
["internal-readiness-ui.spec.ts", "const WECOM_UA", "[SCREENSHOT_DIR]"],
|
||||
["pc-finance-admin-visual-wave4.spec.ts", "const visualUser", "[outputDir, taskOutputDir]"],
|
||||
]) {
|
||||
const source = readFileSync(new URL(`../../../client/tests/e2e/${file}`, import.meta.url), "utf8");
|
||||
assert.ok(source.includes(marker));
|
||||
const prefix = source.slice(0, source.indexOf(marker));
|
||||
assert.ok(!prefix.includes("07-18-small-team-internal-readiness"));
|
||||
const script = ts.transpileModule(prefix + `\nglobalThis.observed = ${output};`, { compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2022, esModuleInterop: true } }).outputText;
|
||||
for (let attempt = 0; attempt < 2; attempt += 1) {
|
||||
const sandbox = { exports: {}, process: { cwd: () => path.join(root, "client"), env: configured ? { QA_VISUAL_OUTPUT_DIR: outputRoot } : {} }, require: name => name === "node:fs" ? fs : name === "node:path" ? path : { test: { use() {} } } };
|
||||
vm.runInNewContext(script, sandbox);
|
||||
for (const directory of sandbox.observed) {
|
||||
assert.ok(directory.startsWith(`${outputRoot}${path.sep}`));
|
||||
assert.ok(!directory.includes("07-18-small-team-internal-readiness"));
|
||||
assert.ok(!directories.includes(directory));
|
||||
directories.push(directory);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
在新工单中引用
屏蔽一个用户