$ErrorActionPreference = 'Stop' function Assert-Contains { param([string]$Content, [string]$Expected, [string]$Message) if ($Content -notmatch [regex]::Escape($Expected)) { throw $Message } } function Assert-NotContains { param([string]$Content, [string]$Unexpected, [string]$Message) if ($Content -match [regex]::Escape($Unexpected)) { throw $Message } } $root = Split-Path -Parent $PSScriptRoot $shellPath = Join-Path $root 'components/AuthPageShell.vue' if (-not (Test-Path -LiteralPath $shellPath)) { throw 'AuthPageShell is missing' } $shell = Get-Content -LiteralPath $shellPath -Raw -Encoding utf8 foreach ($required in @( 'class="auth-shell__header"', 'class="auth-shell__header-image"', 'a01-vnext-header-v1.png', 'mode="widthFix"', 'class="auth-shell__paper"', 'auth-page-paper.jpg', '', '', 'min-height: var(--app-viewport-height);' )) { Assert-Contains -Content $shell -Expected $required -Message "AuthPageShell is missing: $required" } foreach ($pageName in @('a01-entry.vue', 'a04-register.vue', 'a05-reset-password.vue', 'a06-auth-status.vue')) { $page = Get-Content -LiteralPath (Join-Path $root "pages/auth/$pageName") -Raw -Encoding utf8 Assert-Contains -Content $page -Expected '