feat: spacing tokens, actionable failure copy, unified focus ring, 44px touch targets, press feedback
ci / gitleaks (push) Successful in 8s
ci / docker (push) Successful in 3m36s

This commit is contained in:
2026-09-23 06:45:51 +08:00
parent 058f353965
commit 629e054823
25 changed files with 251 additions and 181 deletions
+21
View File
@@ -0,0 +1,21 @@
import { describe, it, expect } from 'vitest'
import { failureHint } from './failureHint'
describe('failureHint', () => {
it('uses network hint without error', () => {
expect(failureHint('保存失败')).toBe('保存失败,请检查网络后重试')
})
it('classifies TypeError as network', () => {
const e = new TypeError('Failed to fetch')
expect(failureHint('请求失败', e)).toBe('请求失败,请检查网络后重试')
})
it('classifies 401 as auth', () => {
expect(failureHint('加载失败', { status: 401 })).toBe('加载失败,请重新登录后再试')
})
it('classifies 5xx as server', () => {
expect(failureHint('保存失败', { status: 502 })).toBe('保存失败,服务器出错,请稍后重试')
})
it('keeps Chinese server detail', () => {
expect(failureHint('保存失败', new Error('重复规则冲突'))).toBe('保存失败:重复规则冲突')
})
})