refactor: 设计系统完整提取为 @stack/design-system 共享包(组件/tokens/类型唯一定义处,双端引用不再拷贝)
- 组件参数化适配双端:MemphisCard href/morph,EntryGuide 数据注入+linkChapter - RouteLine hover 跟随(站点 translateY(-3)、连线 CSS d 平滑插值、直线变斜线)随包回到 design-lab,shelf 场景接线演示 - tokens.css 显式 @source 包内源码——经 node_modules 解析时自动扫描漏类(text-mute 等静默丢失致 4% 画面偏差,已修复并验证) - E2E 新增 hover 跟随契约(静置 L 水平、hover 变斜线、双站点 -3px、卡片同步),28/28 全绿
This commit is contained in:
1 parent
c943a9e94d
commit
65df0ef1d7
40 files changed
+191
-736
No files matched your search
@@ -154,6 +154,27 @@ test.describe('RouteLine 规格契约', () => {
|
||||
expect(z).toBe('10')
|
||||
})
|
||||
|
||||
test('hover 卡片:线与站点跟随浮起(-3px 同步,直线变斜线)', async ({ page }) => {
|
||||
const get = () =>
|
||||
page.evaluate(() => {
|
||||
const svg = [...document.querySelectorAll('svg')].find((s) => s.getAttribute('width') === '1160')
|
||||
return {
|
||||
stations: [...svg.querySelectorAll('g[style]')].map((g) => (g as HTMLElement).style.transform),
|
||||
d25: [...svg.querySelectorAll('path')].map((el) => el.getAttribute('d') || '').find((d) => d.startsWith('M 630')),
|
||||
cardTranslate: getComputedStyle(document.querySelector('a[data-comp="course-card"][href="#ch2"]')).translate,
|
||||
}
|
||||
})
|
||||
const before = await get()
|
||||
await page.locator('div.absolute.left-\\[380px\\]').hover()
|
||||
await page.waitForTimeout(250)
|
||||
const after = await get()
|
||||
expect(before.d25).toBe('M 630 108 L 700 108') // 静置:几何水平(L 结构可平滑插值)
|
||||
expect(after.d25).toBe('M 630 105 L 700 108') // hover 卡2:源端随站点抬升,直线变斜线
|
||||
expect(before.stations.every((t) => t === 'translateY(0px)')).toBeTruthy()
|
||||
expect(after.stations.filter((t) => t === 'translateY(-3px)').length).toBe(2) // 源+目标站点跟随
|
||||
expect(after.cardTranslate).toBe('0px -3px') // 卡片本体同步浮起
|
||||
})
|
||||
|
||||
test('实线端点落在水平端口(M x y H 起、H x 止)', async ({ page }) => {
|
||||
const d = await page.locator('svg path[stroke-width="2.5"]').first().getAttribute('d')
|
||||
expect(d).toMatch(/^M [\d.]+ [\d.]+ H/)
|
||||
|
||||
Reference in new issue
Block a user