Files
Literature-Management/tests/unit/main/window-defaults.test.ts
2026-10-21 14:42:59 +08:00

61 lines
2.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// tests/unit/main/window-defaults.test.ts
//
// 守「窗口初始尺寸」契约(audit r176,2026-10-19):
//
// 1) 默认宽度 1280 → 1440(用户报「软件的默认界面宽度可以再稍微宽一些」)。
// 锁死 1440 是为了防回退 —— 这个值用户看不见代码,改回去不会有任何
// 报错,只能靠测试记住。
// 2) 尺寸关系的合法性:min ≤ default。min > default 的组合会让「缩到最小」
// 操作被 Chromium 静默顶回,用户体感是 bug 而不是设计。
// 3) MIN_WINDOW_WIDTH 必须 ≤ 1366 —— 1366×768 是还相当常见的小屏;
// 若 min 超过屏宽,这类用户根本没法把窗口收到自己想要的窄度。
// 4) src/main/window.ts 必须真的引用这些常量(而不是自己又写了一份
// 字面量)—— 否则「常量改了但窗口没用上」这种漂移会静默发生。
import { readFileSync } from 'fs';
import { join } from 'path';
import { describe, expect, it } from 'vitest';
import {
DEFAULT_WINDOW_WIDTH,
DEFAULT_WINDOW_HEIGHT,
MIN_WINDOW_WIDTH,
MIN_WINDOW_HEIGHT,
} from '../../../src/main/window-defaults';
const ROOT = process.cwd();
function read(rel: string): string {
return readFileSync(join(ROOT, rel), 'utf8');
}
describe('窗口初始尺寸(window-defaults)', () => {
it('默认宽度是 1440(比上一版 1280 宽)', () => {
expect(DEFAULT_WINDOW_WIDTH).toBe(1440);
});
it('默认高度维持 800 —— 本轮只放宽宽度', () => {
expect(DEFAULT_WINDOW_HEIGHT).toBe(800);
});
it('min 尺寸关系合法:min ≤ default', () => {
expect(MIN_WINDOW_WIDTH).toBeLessThanOrEqual(DEFAULT_WINDOW_WIDTH);
expect(MIN_WINDOW_HEIGHT).toBeLessThanOrEqual(DEFAULT_WINDOW_HEIGHT);
expect(MIN_WINDOW_WIDTH).toBeGreaterThan(0);
expect(MIN_WINDOW_HEIGHT).toBeGreaterThan(0);
});
it('最小宽度不超过 1366 —— 常见小屏用户也要能收窄窗口', () => {
expect(MIN_WINDOW_WIDTH).toBeLessThanOrEqual(1366);
});
it('窗口创建处真的用的是这些常量(没有另写一份字面量)', () => {
const src = read('src/main/window.ts');
expect(src).toContain('width: DEFAULT_WINDOW_WIDTH');
expect(src).toContain('height: DEFAULT_WINDOW_HEIGHT');
expect(src).toContain('minWidth: MIN_WINDOW_WIDTH');
expect(src).toContain('minHeight: MIN_WINDOW_HEIGHT');
// 旧的字面量不该残留在窗口创建处
expect(src).not.toMatch(/width:\s*1280\b/);
expect(src).not.toMatch(/width:\s*1440\b/);
});
});