import { readFileSync } from 'node:fs'; import { describe, expect, it } from 'vitest'; /** * 选中资源工具条上的分隔线分组回归钉子。 * * 成因:共享工具条 `ImageCanvasSelectedLayerToolbarView.tsx` 会在 `showQuickEdit` 时于 * 「快速编辑」之后输出一条分隔线,同时为 `extraActions` 自动生成一条前置分隔线 * (`const extraActionDivider = extraActions ? … : null`)。AGC 资源卡是"快速编辑可用 + * 中间那些动作未接通不渲染"的组合,两条于是直接相邻,用户看到两条竖线。 * * 当前实现直接按动作组是否存在输出分隔线,避免相邻分隔线产生。这条用例钉住当前 * 条件分组,避免后续重构时再次出现空动作组之间的重复分隔线。 */ describe('选中资源工具条的分隔线去重', () => { const sharedToolbarSource = () => readFileSync( new URL( '../../../src/components/image-editor/ImageCanvasSelectedLayerToolbarView.tsx', import.meta.url, ), 'utf8', ); it('分隔线由动作组条件控制,不依赖相邻分隔线的 CSS 去重', () => { const source = sharedToolbarSource(); expect(source).toContain('const showQuickEdit = isActionSupported('); expect(source).toContain('const hasEditingActions ='); expect(source).toContain( '{showQuickEdit && hasEditingActions ? divider : null}', ); expect(source).toContain( '{(showQuickEdit || hasEditingActions || canRedraw || hasExtraActions) &&', ); }); });