servicepilot-ui-flow.ps1 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. param(
  2. [string]$BaseUrl = "http://127.0.0.1:4301"
  3. )
  4. $ErrorActionPreference = "Stop"
  5. $artifactDir = Join-Path $PSScriptRoot "artifacts"
  6. New-Item -ItemType Directory -Path $artifactDir -Force | Out-Null
  7. $cases = @(
  8. @{ Id = "AUTO-001"; Route = "/dashboard" },
  9. @{ Id = "AUTO-002"; Route = "/tickets" },
  10. @{ Id = "AUTO-003"; Route = "/sla" },
  11. @{ Id = "AUTO-004"; Route = "/knowledge" },
  12. @{ Id = "AUTO-005"; Route = "/files" },
  13. @{ Id = "AUTO-006"; Route = "/reviews" },
  14. @{ Id = "AUTO-007"; Route = "/test-plan" }
  15. )
  16. $results = @()
  17. foreach ($case in $cases) {
  18. $url = "$BaseUrl$($case.Route)"
  19. $response = Invoke-WebRequest -Uri $url -UseBasicParsing
  20. if ($response.StatusCode -ne 200) {
  21. throw "$($case.Id) $($case.Route) unexpected HTTP status: $($response.StatusCode)"
  22. }
  23. $safeName = $case.Route.TrimStart("/").Replace("/", "_")
  24. if ([string]::IsNullOrWhiteSpace($safeName)) {
  25. $safeName = "home"
  26. }
  27. $screenshot = Join-Path $artifactDir "$($case.Id)-$safeName.png"
  28. npx.cmd --yes playwright screenshot --viewport-size=1440,1000 $url $screenshot | Out-Host
  29. if (!(Test-Path $screenshot)) {
  30. throw "$($case.Id) $($case.Route) screenshot was not created"
  31. }
  32. $fileInfo = Get-Item $screenshot
  33. if ($fileInfo.Length -lt 10240) {
  34. throw "$($case.Id) $($case.Route) screenshot file is too small"
  35. }
  36. $results += [pscustomobject]@{
  37. id = $case.Id
  38. route = $case.Route
  39. status = $response.StatusCode
  40. result = "PASS"
  41. screenshot = $screenshot
  42. }
  43. Write-Host "$($case.Id) $($case.Route) PASS"
  44. }
  45. $results | ConvertTo-Json -Depth 4 | Set-Content -Path (Join-Path $artifactDir "auto-test-result.json") -Encoding UTF8