41 lines
2.9 KiB
PowerShell
41 lines
2.9 KiB
PowerShell
$ErrorActionPreference = 'Stop'
|
|
|
|
$root = Split-Path -Parent $PSScriptRoot
|
|
|
|
function Read-Page([string]$Path) {
|
|
Get-Content -LiteralPath (Join-Path $root $Path) -Raw -Encoding utf8
|
|
}
|
|
|
|
function Assert-Match {
|
|
param([string]$Content, [string]$Pattern, [string]$Message)
|
|
if ($Content -notmatch $Pattern) { throw $Message }
|
|
}
|
|
|
|
$pages = @{
|
|
G05 = Read-Page 'pages/genealogy/g05-genealogy-overview.vue'
|
|
G06 = Read-Page 'pages/genealogy/g06-search-genealogies.vue'
|
|
G09 = Read-Page 'pages/genealogy/g09-my-applications.vue'
|
|
G10 = Read-Page 'pages/genealogy/g10-application-review.vue'
|
|
G11 = Read-Page 'pages/genealogy/g11-genealogy-settings.vue'
|
|
G12 = Read-Page 'pages/genealogy/g12-generation-poems.vue'
|
|
}
|
|
|
|
foreach ($entry in $pages.GetEnumerator()) {
|
|
Assert-Match -Content $entry.Value -Pattern 'import AppLoading from [''"]@/components/AppLoading\.vue[''"]' -Message "$($entry.Key) must import AppLoading"
|
|
}
|
|
|
|
Assert-Match -Content $pages.G05 -Pattern '(?s)<view\s+v-else-if="overviewState === ''loading''"\s+class="overview-state overview-state--loading">.*?<AppLoading[^>]+description="[^"]+"\s*/>.*?</view>' -Message 'G05 must render AppLoading inside its transparent framed loading state'
|
|
Assert-Match -Content $pages.G06 -Pattern '<AppLoading\s+v-if="searchState === ''loading''"\s+variant="section"[^>]+description="[^"]+"\s*/>' -Message 'G06 search results must render the section AppLoading variant'
|
|
Assert-Match -Content $pages.G06 -Pattern 'requestedState === ''loading''' -Message 'G06 must expose its section loading state for visual review'
|
|
Assert-Match -Content $pages.G09 -Pattern '<AppLoading\s+v-else-if="applicationState === ''loading''"[^>]+description="[^"]+"\s*/>' -Message 'G09 must render a page AppLoading branch'
|
|
Assert-Match -Content $pages.G10 -Pattern '<AppLoading\s+v-else-if="reviewState === ''loading''"[^>]+description="[^"]+"\s*/>' -Message 'G10 must render a page AppLoading branch'
|
|
Assert-Match -Content $pages.G11 -Pattern '<AppLoading\s+v-if="settingsState === ''loading''"[^>]+description="[^"]+"\s*/>' -Message 'G11 must render a page AppLoading branch'
|
|
Assert-Match -Content $pages.G12 -Pattern '<AppLoading\s+v-if="poemState === ''loading''"[^>]+description="[^"]+"\s*/>' -Message 'G12 must render a page AppLoading branch'
|
|
Assert-Match -Content $pages.G10 -Pattern 'if \(query\.state === ''loading''\) \{ reviewState\.value = ''loading''; return \}' -Message 'G10 must preserve its loading presentation state'
|
|
Assert-Match -Content $pages.G11 -Pattern 'query\.state === ''loading'' \? ''loading''' -Message 'G11 must preserve its loading presentation state'
|
|
Assert-Match -Content $pages.G12 -Pattern 'query\.state === ''loading'' \? ''loading''' -Message 'G12 must preserve its loading presentation state'
|
|
|
|
if ($pages.G06 -match 'class="search-status search-loading"') { throw 'G06 must not retain its duplicated text-only search loader' }
|
|
|
|
Write-Output 'G-SERIES-APP-LOADING-CONTRACT PASS'
|