task-243(admin.html观感对齐): 壳层换皮蓝白浅色(浅色侧栏252px/顶栏76px/角色胶囊/次级退出)
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import test from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import { readSource } from './helpers.ts'
|
||||
|
||||
// module 13 task 243:壳层换皮成 admin.html 蓝白浅色 —— 侧栏 252px 浅底、顶栏 76px、
|
||||
// 角色胶囊 + 次级退出按钮、去掉顶栏重复 logo、菜单激活态浅蓝渐变+左蓝条。
|
||||
|
||||
test('test_task_243_shell_normal_primary_path', () => {
|
||||
const css = readSource('src/styles/main.css')
|
||||
assert.match(css, /\.admin-sidebar\s*\{[^}]*flex:\s*0\s*0\s*252px/, '侧栏宽度应为 252px')
|
||||
assert.match(css, /\.admin-topbar\s*\{[^}]*min-height:\s*76px/, '顶栏高度应为 76px')
|
||||
assert.match(css, /linear-gradient\(180deg,\s*var\(--admin-sidebar\)\s*0%,/, '侧栏应为浅色渐变底')
|
||||
})
|
||||
|
||||
test('test_task_243_shell_normal_variant_input', () => {
|
||||
// 正常变体:菜单激活态为浅蓝渐变 + inset 蓝条,不再是靛蓝渐变。
|
||||
const css = readSource('src/styles/main.css')
|
||||
assert.match(css, /inset 3px 0 0 #5f85ad/, '激活态需含左侧 3px 蓝条')
|
||||
assert.match(css, /linear-gradient\(90deg,\s*#dce9f5,\s*#edf4fa\)/, '激活态需为浅蓝渐变')
|
||||
assert.equal(/#6366f1|rgba\(99,\s*102,\s*241/.test(css), false, '壳层不得残留 indigo 主色')
|
||||
})
|
||||
|
||||
test('test_task_243_shell_normal_repeated_operation_is_idempotent', () => {
|
||||
const css = readSource('src/styles/main.css')
|
||||
const first = /\.admin-topbar\s*\{[^}]*min-height:\s*76px/.test(css)
|
||||
const second = /\.admin-topbar\s*\{[^}]*min-height:\s*76px/.test(css)
|
||||
assert.equal(first, true)
|
||||
assert.equal(first, second)
|
||||
})
|
||||
|
||||
test('test_task_243_shell_boundary_empty_input', () => {
|
||||
// 边界:保留折叠与窄屏适配;collapse 按钮仍在布局中。
|
||||
const css = readSource('src/styles/main.css')
|
||||
assert.match(css, /is-collapsed/)
|
||||
assert.match(css, /@media \(max-width:\s*820px\)/)
|
||||
const layout = readSource('src/layout/AdminLayout.vue')
|
||||
assert.match(layout, /sidebar-collapse/)
|
||||
})
|
||||
|
||||
test('test_task_243_shell_boundary_single_item', () => {
|
||||
// 边界:顶栏不再放第二个 logo;用户角色以胶囊呈现。
|
||||
const layout = readSource('src/layout/AdminLayout.vue')
|
||||
assert.equal(/admin-topbar-logo/.test(layout), false, '顶栏不应再出现 logo 元素')
|
||||
assert.match(layout, /admin-user-role/, '需有角色胶囊类')
|
||||
assert.match(layout, /admin-user-logout/, '退出按钮需为次级胶囊化按钮')
|
||||
})
|
||||
|
||||
test('test_task_243_shell_boundary_limit_or_missing_field', () => {
|
||||
const css = readSource('src/styles/main.css')
|
||||
assert.match(css, /\.admin-user-role\s*\{[^}]*border-radius:\s*999px/, '角色应为胶囊')
|
||||
assert.match(css, /\.admin-kicker\s*\{[^}]*font-size:\s*10px/, 'kicker 应为 10px')
|
||||
assert.match(css, /\.admin-brand-copy strong\s*\{[^}]*color:\s*var\(--admin-text\)/, '品牌名应使用浅色文本 token')
|
||||
})
|
||||
|
||||
test('test_task_243_shell_invalid_input_rejected', () => {
|
||||
// 异常:旧壳层暗色/白字样式不得残留(会令浅色侧栏不可读)。
|
||||
const css = readSource('src/styles/main.css')
|
||||
assert.equal(/#aeb8cc|#929db4|#b9c2d5/.test(css), false, '壳层不得残留原深色侧栏的白灰文字色')
|
||||
assert.equal(/#192132|#121827/.test(css), false, '不得残留深色侧栏底色')
|
||||
})
|
||||
|
||||
test('test_task_243_shell_dependency_failure_returns_actionable_message', () => {
|
||||
// 依赖失败:侧栏文本/强调色 token 已落盘并被引用(防硬编码漂移)。
|
||||
const css = readSource('src/styles/main.css')
|
||||
assert.match(css, /--admin-sidebar-text:\s*#536a81/)
|
||||
assert.match(css, /--admin-primary-strong:\s*#2f5d8b/)
|
||||
assert.match(css, /var\(--admin-sidebar-text\)/)
|
||||
assert.match(css, /var\(--admin-primary-strong\)/)
|
||||
})
|
||||
Reference in New Issue
Block a user