Skip to content

Commit ecc36a8

Browse files
committed
test(notes): restore viewport in knowledge page tests
1 parent 882a61e commit ecc36a8

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

‎app/src/pages/KnowledgePage.test.tsx‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,16 @@ function withSystemMock() {
6363
});
6464
}
6565

66+
// jsdom 的 innerWidth 是 window **自有访问器**(get/set,configurable)——保存原描述符,
67+
// afterEach 精确还原;只写回数值会把访问器换成**只读数据属性**(后续用例赋值即 TypeError)。
68+
const originalInnerWidth = Object.getOwnPropertyDescriptor(window, "innerWidth");
69+
6670
beforeEach(() => {
6771
// 批 3 T5:体系列阈值 860→1100(规格 §6.2)——本仓 jsdom 默认视口恰为 1024,
6872
// 落到阈值之下会**自动折叠左列**,system-global 便不再渲染。本文件测的是
6973
// 「未折叠」三栏形态 ⇒ 显式声明默认窗宽 1280(规格 §1 决策 17)。
7074
// 先例:SelectionActionMenu.test.tsx 同样显式声明 innerWidth。
71-
window.innerWidth = 1280;
75+
Object.defineProperty(window, "innerWidth", { configurable: true, value: 1280 });
7276
invokeMock.mockReset();
7377
invokeMock.mockImplementation(async (cmd: string) => {
7478
switch (cmd) {
@@ -82,7 +86,12 @@ beforeEach(() => {
8286
});
8387
});
8488

85-
afterEach(() => cleanup());
89+
afterEach(() => {
90+
cleanup();
91+
// 视口必须复原(先例 SelectionActionMenu.test.tsx 在 afterEach 还原视口):不复原则
92+
// 同环境下后续用例跑在 1280——「窄窗自动折叠」那条路径被静默掩盖(假绿风险)。
93+
if (originalInnerWidth) Object.defineProperty(window, "innerWidth", originalInnerWidth);
94+
});
8695

8796
describe("KnowledgePage 空态", () => {
8897
it("空态显示示例体系入口", async () => {

0 commit comments

Comments
 (0)