safety-eval-service-frontend/docs/test-reports/测试用例/test-enterprise-info-ui-che...

88 lines
4.0 KiB
JavaScript
Raw Normal View History

2026-06-23 18:07:30 +08:00
/**
* 企业信息管理 - 页面 UI / 字段展示 自动化检查
* 运行: node scripts/test-enterprise-info-ui-check.mjs
*/
import fs from "node:fs";
import path from "node:path";
const ROOT = path.resolve(import.meta.dirname, "..");
const PAGE_DIR = path.join(ROOT, "src/pages/Container/EnterpriseInfo");
const UTILS = path.join(ROOT, "src/utils");
const checks = [];
function pass(id, name, ok, detail = "") {
checks.push({ id, name, status: ok ? "PASS" : "FAIL", detail });
}
function read(rel) {
return fs.readFileSync(path.join(ROOT, rel), "utf8");
}
function fileExists(rel) {
return fs.existsSync(path.join(ROOT, rel));
}
// ── 公共能力 ──
pass("UI-COMMON-01", "mockUpload 默认地址", fileExists("src/utils/mockUpload.js"));
pass("UI-COMMON-02", "enterpriseForm 下拉适配", fileExists("src/utils/enterpriseForm.js"));
pass("UI-COMMON-03", "DEFAULT_UPLOAD_FILE_URL 配置",
read("src/utils/mockUpload.js").includes("gd-hbimg.huaban.com"));
// ── 各页面 ──
const pages = [
["OrgInfo", "机构信息"],
["DepartmentPosition", "部门岗位"],
["PersonnelInfo/List", "人员信息"],
["PersonnelChange", "人员变更"],
["ResignationApply", "离职申请"],
["QualificationCert", "资质证书"],
["EquipInfo", "装备信息"],
];
pages.forEach(([rel, label]) => {
const content = read(`src/pages/Container/EnterpriseInfo/${rel}/index.js`);
pass(`UI-PAGE-${rel}-01`, `${label}-页面存在`, content.length > 100);
pass(`UI-PAGE-${rel}-02`, `${label}-使用 PageHeader`, content.includes("PageHeader"));
const usesVerticalForm = content.includes('layout="vertical"');
const usesBrokenLabelCol = /labelCol=\{\{\s*span:\s*24/.test(content);
const usesFormBuilderModal = /Modal[\s\S]*FormBuilder/.test(content);
pass(`UI-PAGE-${rel}-03`, `${label}-弹窗表单布局`, usesVerticalForm || !usesFormBuilderModal || !usesBrokenLabelCol,
usesFormBuilderModal && !usesVerticalForm && usesBrokenLabelCol ? "Modal 内 FormBuilder labelCol=24 导致输入框不可见" : "");
});
// ── 人员:部门岗位下拉 ──
const staffPage = read("src/pages/Container/EnterpriseInfo/PersonnelInfo/List/index.js");
pass("UI-STAFF-01", "人员-部门 Select", staffPage.includes("deptId") && staffPage.includes("Select"));
pass("UI-STAFF-02", "人员-岗位 Select", staffPage.includes("positionId") && staffPage.includes("Select"));
pass("UI-STAFF-03", "人员-列表部门列", staffPage.includes('dataIndex: "deptName"'));
pass("UI-STAFF-04", "人员-重置密码", staffPage.includes("onResetPassword"));
// ── 离职 ──
const resignPage = read("src/pages/Container/EnterpriseInfo/ResignationApply/index.js");
pass("UI-RESIGN-01", "离职-审核状态列", resignPage.includes("auditStatus"));
pass("UI-RESIGN-02", "离职-用户名列", resignPage.includes('dataIndex: "account"'));
pass("UI-RESIGN-03", "离职-默认上传", resignPage.includes("resolveUploadFileId") || resignPage.includes("mockUpload"));
// ── 变更次数样式 ──
const changePage = read("src/pages/Container/EnterpriseInfo/PersonnelChange/index.js");
pass("UI-CHANGE-01", "变更-次数样式", changePage.includes("CHANGE_COUNT_STYLE"));
pass("UI-CHANGE-02", "变更-从 record 渲染", changePage.includes("getChangeCount(record)"));
pass("UI-CHANGE-03", "变更-就职/审核状态", changePage.includes("getEmploymentStatusLabel") && changePage.includes("getResignAuditStatusLabel"));
pass("UI-RESIGN-04", "离职-从 record 渲染审核状态", resignPage.includes("getResignAuditStatusLabel(record)"));
pass("UI-RESIGN-05", "离职-纯文本状态", !resignPage.includes("<Tag"));
// ── 输出 ──
let passed = 0;
let failed = 0;
console.log("\n========== 企业信息 UI 静态检查 ==========\n");
checks.forEach((c) => {
const icon = c.status === "PASS" ? "✓" : "✗";
if (c.status === "PASS") passed += 1;
else failed += 1;
console.log(`${icon} [${c.status}] ${c.id} ${c.name}${c.detail ? `${c.detail}` : ""}`);
});
console.log(`\n合计: ${checks.length} 通过: ${passed} 失败: ${failed}\n`);
process.exit(failed > 0 ? 1 : 0);