61 lines
2.5 KiB
TypeScript
61 lines
2.5 KiB
TypeScript
// 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/);
|
||
});
|
||
});
|