forked from jiaoly/financial_system
52 lines
2.4 KiB
TypeScript
52 lines
2.4 KiB
TypeScript
declare const process: { cwd(): string };
|
|
declare function require(name: string): {
|
|
readFileSync?: (path: string, encoding: string) => string;
|
|
join?: (...parts: string[]) => string;
|
|
};
|
|
|
|
const { readFileSync } = require("node:fs");
|
|
const { join } = require("node:path");
|
|
|
|
if (!readFileSync || !join) {
|
|
throw new Error("测试运行环境缺少文件读取能力");
|
|
}
|
|
|
|
const css = readFileSync(join(process.cwd(), "src/assets/styles.css"), "utf-8");
|
|
|
|
const rootBlock = cssBlock(":root");
|
|
assertIncludes(rootBlock, "--card-border: 1px solid var(--line);");
|
|
assertIncludes(rootBlock, "--card-shadow: 0 6px 16px rgba(var(--primary-rgb), 0.035);");
|
|
assertIncludes(rootBlock, "--card-inner-border: 1px solid var(--line-soft);");
|
|
assertIncludes(rootBlock, "--card-inner-bg: var(--surface);");
|
|
assertIncludes(rootBlock, "--card-inner-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.56);");
|
|
|
|
const mainCardBlock = cssBlock(".panel,\\s*\\n\\.action-card,\\s*\\n\\.salary-profile-summary-strip,\\s*\\n\\.organization-summary-strip");
|
|
assertIncludes(mainCardBlock, "border: var(--card-border);");
|
|
assertIncludes(mainCardBlock, "background: var(--card);");
|
|
assertIncludes(mainCardBlock, "box-shadow: var(--card-shadow);");
|
|
|
|
const summaryStripBlock = cssBlock(".summary-strip");
|
|
assertIncludes(summaryStripBlock, "border: var(--card-border);");
|
|
assertIncludes(summaryStripBlock, "background: var(--card);");
|
|
assertIncludes(summaryStripBlock, "box-shadow: var(--card-shadow);");
|
|
|
|
const innerCardBlock = cssBlock(".summary-metric,\\s*\\n\\.compact-stat,\\s*\\n\\.salary-profile-summary-item,\\s*\\n\\.organization-summary-strip div,\\s*\\n\\.organization-node-summary div,\\s*\\n\\.workflow-steps span,\\s*\\n\\.recent-item,\\s*\\n\\.salary-profile-modal-section,\\s*\\n\\.report-total-item,\\s*\\n\\.report-inline-metrics span,\\s*\\n\\.report-attendance-card");
|
|
assertIncludes(innerCardBlock, "border: var(--card-inner-border);");
|
|
assertIncludes(innerCardBlock, "background: var(--card-inner-bg);");
|
|
assertIncludes(innerCardBlock, "box-shadow: var(--card-inner-shadow);");
|
|
|
|
function cssBlock(selector: string): string {
|
|
const pattern = new RegExp(`${selector}\\s*\\{([\\s\\S]*?)\\n\\}`, "m");
|
|
const match = css.match(pattern);
|
|
if (!match) {
|
|
throw new Error(`缺少样式块 ${selector}`);
|
|
}
|
|
return match[1];
|
|
}
|
|
|
|
function assertIncludes(content: string, expected: string): void {
|
|
if (!content.includes(expected)) {
|
|
throw new Error(`期望包含 ${expected}`);
|
|
}
|
|
}
|