47 lines
1.8 KiB
PowerShell
47 lines
1.8 KiB
PowerShell
$ErrorActionPreference = 'Stop'
|
|
$root = Split-Path -Parent $PSScriptRoot
|
|
$page = Get-Content -LiteralPath (Join-Path $root 'pages/tree/t01-tree-overview.vue') -Raw -Encoding utf8
|
|
|
|
foreach ($required in @(
|
|
'import AppButton from "@/components/AppButton.vue"',
|
|
'<AppButton',
|
|
'type="secondary"',
|
|
'@click="toMember"',
|
|
'@click="toAddRelative"',
|
|
't01-member-node-standard.png',
|
|
't01-member-node-selected.png',
|
|
't01-state-panel.png',
|
|
't01-member-drawer.png',
|
|
'lineage-connector--root',
|
|
'lineage-pan-cue',
|
|
'const initialScrollLeft = ref(90)'
|
|
)) {
|
|
if ($page -notmatch [regex]::Escape($required)) { throw "T01 member action asset missing: $required" }
|
|
}
|
|
|
|
foreach ($forbidden in @(
|
|
'a01-primary-button-v2.png',
|
|
'a01-secondary-button-v2.png'
|
|
)) {
|
|
if ($page -match [regex]::Escape($forbidden)) { throw "T01 must consume AppButton instead of legacy action asset: $forbidden" }
|
|
}
|
|
|
|
foreach ($rule in @(
|
|
'(?s)\.tree-toolbar__title text:last-child\s*\{[^}]*font-size:\s*22rpx;',
|
|
'(?s)\.tree-toolbar__actions\s*\{[^}]*font-size:\s*23rpx;',
|
|
'(?s)\.generation-band\s*\{[^}]*font-size:\s*22rpx;',
|
|
'(?s)\.node-relation\s*\{[^}]*font-size:\s*21rpx;',
|
|
'(?s)\.node-years\s*\{[^}]*font-size:\s*20rpx;',
|
|
'(?s)\.tree-state-card__copy\s*\{[^}]*font-size:\s*24rpx;',
|
|
'(?s)\.sheet-meta\s*\{[^}]*font-size:\s*22rpx;',
|
|
'(?s)\.generation-rail\s*\{[^}]*width:\s*190rpx;',
|
|
'(?s)\.tree-scroll--lineage\s*\{[^}]*width:\s*calc\(100% - 190rpx\);[^}]*margin-left:\s*190rpx;',
|
|
'(?s)\.member-sheet\s*\{[^}]*height:\s*240rpx;',
|
|
'(?s)\.sheet-actions\s*\{[^}]*right:\s*0;[^}]*bottom:\s*24rpx;[^}]*left:\s*0;[^}]*justify-content:\s*center;',
|
|
'(?s)\.sheet-action\s*\{[^}]*width:\s*250rpx;[^}]*min-height:\s*88rpx;'
|
|
)) {
|
|
if ($page -notmatch $rule) { throw "T01 readable visual rule missing: $rule" }
|
|
}
|
|
|
|
Write-Output 'T01-ALL-STATES-VISUAL-CONTRACT PASS'
|