Files
danyang-match/ui-tests/admin-redesign-contracts.mjs
T

48 lines
1.6 KiB
JavaScript
Raw Normal View History

2026-09-11 17:02:42 +08:00
import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import { resolve } from 'node:path'
const root = resolve(import.meta.dirname, '..')
const read = (file) => readFileSync(resolve(root, file), 'utf8')
const theme = read('admin-web/src/theme/index.css')
const layout = read('admin-web/src/layouts/MainLayout.vue')
for (const token of ['--admin-sidebar-bg', '--admin-page-bg', '--admin-primary', '--admin-card-radius']) {
assert.ok(theme.includes(token), `缺少管理端令牌 ${token}`)
}
for (const group of [
'工作台',
'用户与资料审核',
'匹配与活动服务',
'公益咨询与转介',
'服务站、预约与专项服务',
'Banner 与内容运营',
'举报、申诉与审计',
'组织、人员与权限',
'数据统计',
]) {
assert.ok(layout.includes(group), `缺少菜单组 ${group}`)
}
assert.ok(layout.includes('/brand/logo-mark.png'), '管理端未使用正式品牌标志')
assert.ok(layout.includes('globalSearch'), '管理端顶部搜索没有可操作状态')
assert.ok(layout.includes('showNotifications'), '管理端通知入口没有可操作反馈')
2026-09-11 17:27:12 +08:00
for (const file of [
'admin-web/src/views/LoginView.vue',
'admin-web/src/views/DashboardView.vue',
'admin-web/src/modules/user/UserManagementView.vue',
'admin-web/src/modules/user/UserDetailView.vue',
'admin-web/src/modules/review/ReviewView.vue',
]) {
const source = read(file)
assert.ok(
source.includes('page-shell') || source.includes('login-shell'),
`${file} 未接入样板布局`,
)
assert.doesNotMatch(source, /[\u{1F300}-\u{1FAFF}]/u, `${file} 仍包含 Emoji`)
}
2026-09-11 17:02:42 +08:00
console.log('Admin redesign contracts passed')