From bf8c7822f57e9ba4bb7b66e689b1a16dd5bacc3a Mon Sep 17 00:00:00 2001 From: Suzumiya Date: Wed, 7 Oct 2026 01:52:17 +0800 Subject: [PATCH] =?UTF-8?q?test(=E6=97=8F=E8=B0=B1):=20=E6=A8=AA=E7=89=88?= =?UTF-8?q?=E6=96=AD=E8=A8=80=E9=92=89=E5=88=B0=E5=90=8C=E4=BB=A3=E5=90=8C?= =?UTF-8?q?=20left=EF=BC=8C=E5=B9=B6=E5=9B=BA=E5=AE=9A=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E7=AB=AF=E7=B4=A7=E5=87=91=E5=8D=A1=E7=9C=81=E4=BD=9C=E8=80=85?= =?UTF-8?q?=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GameDistributionPages.test.tsx | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/components/game-distribution/GameDistributionPages.test.tsx b/src/components/game-distribution/GameDistributionPages.test.tsx index 59202243e..b209e230d 100644 --- a/src/components/game-distribution/GameDistributionPages.test.tsx +++ b/src/components/game-distribution/GameDistributionPages.test.tsx @@ -3162,15 +3162,22 @@ describe('GameLineagePage 筛选器 / 主干线 / 信息面板(文档对齐) '创作族谱树', )) as HTMLElement; const view = readCanvasViewport(canvas); - // 窄屏图谱视图是**横版**:代际沿 x 推进,且不再渲染左侧代际轴(角标承担代际信息)。 + // 窄屏图谱视图是**横版**:代际沿 x 推进(同代同 left、兄弟靠 top 分开), + // 且不再渲染左侧代际轴(角标承担代际信息)。 expect(canvas.querySelector('.game-lineage-canvas__axis')).toBeNull(); - expect( - new Set( - [...canvas.querySelectorAll('.game-lineage-node')].map((card) => - Number.parseFloat((card as HTMLElement).style.left), - ), - ).size, - ).toBeGreaterThan(1); + const cards = [...canvas.querySelectorAll('.game-lineage-node')].map( + (card) => card as HTMLElement, + ); + const generationOne = cards.filter( + (card) => card.getAttribute('data-generation') === '1', + ); + expect(generationOne.length).toBeGreaterThanOrEqual(2); + expect(new Set(generationOne.map((card) => card.style.left)).size).toBe( + 1, + ); + expect(new Set(generationOne.map((card) => card.style.top)).size).toBe( + generationOne.length, + ); expect(Math.round(view.scale * 100)).not.toBe(100); expect(canvas.querySelector('.game-lineage-zoom')?.textContent).toBe( `${Math.round(view.scale * 100)}%`, @@ -3185,6 +3192,15 @@ describe('GameLineagePage 筛选器 / 主干线 / 信息面板(文档对齐) expect( visible.some((card) => card.getAttribute('data-generation') === '0'), ).toBe(true); + // 移动端紧凑卡片按既有设计**省掉作者行**(CSS `.game-lineage-node--compact`:卡片更小、 + // 字段更少)。作者名在桌面画布、大纲行与详情页都有;这条断言把这个差异固定下来, + // 避免它再次变成「实现与断言不同步」。 + expect( + canvas.querySelectorAll('.game-lineage-node--compact').length, + ).toBe(cards.length); + expect(canvas.querySelectorAll('.game-lineage-node__author').length).toBe( + 0, + ); } finally { widthSpy.mockRestore(); heightSpy.mockRestore();