071faa482c
纳入 AGC Cargo workspace 的统一 rustfmt 检查与格式化入口 完成项目 TypeScript/Prettier 与 Rust 全量格式化 修复 Pingora expected executable 门禁的空白敏感误报 同步开发运维文档与 AGC skill pack 格式化忽略规则
51 lines
1.8 KiB
TypeScript
51 lines
1.8 KiB
TypeScript
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
const themePath = path.resolve(process.cwd(), 'packages/shared/src/theme.css');
|
|
|
|
function getCssBlock(source: string, selector: string) {
|
|
const selectorIndex = source.indexOf(selector);
|
|
expect(selectorIndex, `${selector} should exist`).toBeGreaterThanOrEqual(0);
|
|
|
|
const openBraceIndex = source.indexOf('{', selectorIndex);
|
|
let depth = 0;
|
|
for (let index = openBraceIndex; index < source.length; index += 1) {
|
|
const char = source[index];
|
|
if (char === '{') {
|
|
depth += 1;
|
|
} else if (char === '}') {
|
|
depth -= 1;
|
|
if (depth === 0) {
|
|
return source.slice(openBraceIndex + 1, index);
|
|
}
|
|
}
|
|
}
|
|
|
|
throw new Error(`${selector} block is not closed`);
|
|
}
|
|
|
|
describe('shared platform theme', () => {
|
|
it('exposes the shared platform font stack without fixing its cascade position', () => {
|
|
const css = fs.readFileSync(themePath, 'utf8');
|
|
const platformTheme = getCssBlock(css, '.platform-theme');
|
|
|
|
expect(platformTheme).toContain("--platform-font-family: 'Inter'");
|
|
expect(css).not.toContain('.platform-theme,\n.platform-theme *');
|
|
});
|
|
|
|
it('keeps the light and dark semantic color contracts', () => {
|
|
const css = fs.readFileSync(themePath, 'utf8');
|
|
const light = getCssBlock(css, '.platform-theme--light');
|
|
const dark = getCssBlock(css, '.platform-theme--dark');
|
|
|
|
expect(light).toContain('--platform-accent: #c7653d;');
|
|
expect(light).toContain('linear-gradient(135deg, #df7f40, #b95d3a)');
|
|
expect(light).toContain('--platform-text-strong: #3d1f10;');
|
|
expect(dark).toContain('--platform-accent: #5b6cff;');
|
|
expect(dark).toContain('linear-gradient(135deg, #5b6cff, #3dd9ff)');
|
|
expect(dark).toContain('--platform-text-strong: #ffffff;');
|
|
});
|
|
});
|