{
  "totalPassed": 34,
  "totalFailed": 0,
  "totalIssues": 0,
  "totalImprovements": 6,
  "passed": [
    "worker navigates /worker/dashboard",
    "worker navigates /worker/jobs",
    "worker navigates /worker/applications",
    "worker navigates /worker/accepted",
    "worker navigates /worker/messages",
    "worker navigates /worker/notifications",
    "worker navigates /worker/profile",
    "worker navigates /worker/portfolio",
    "worker navigates /worker/verification",
    "worker navigates /worker/ratings",
    "worker navigates /worker/availability",
    "customer navigates /customer/dashboard",
    "customer navigates /customer/jobs",
    "customer navigates /customer/workers",
    "customer navigates /customer/jobs/create",
    "customer navigates /customer/saved-workers",
    "customer navigates /customer/messages",
    "customer navigates /customer/notifications",
    "customer navigates /customer/reviews",
    "customer navigates /customer/profile",
    "WORKER session modal on invalid token load",
    "WORKER session modal on invalid token mid-session",
    "WORKER cross-tab logout shows modal",
    "WORKER session modal dismisses on go to login",
    "CUSTOMER session modal on invalid token load",
    "CUSTOMER session modal on invalid token mid-session",
    "CUSTOMER cross-tab logout shows modal",
    "CUSTOMER session modal dismisses on go to login",
    "Worker blocked from customer portal",
    "Customer blocked from worker portal",
    "Unauthenticated worker redirected to login",
    "Unauthenticated customer redirected to login",
    "Login redirects back to worker dashboard",
    "Re-login after session expired works"
  ],
  "failed": [],
  "issues": [],
  "improvements": [
    {
      "area": "session",
      "description": "Add token refresh before showing session-expired modal (access tokens expire in 15m)"
    },
    {
      "area": "session",
      "description": "Block all portal navigation while session-expired modal is open (currently only blocks sidebar in some cases)"
    },
    {
      "area": "session",
      "description": "Clear ehandyhire:session-revoked from localStorage after handling to avoid stale signals"
    },
    {
      "area": "ux",
      "description": "Session modal could use router.push instead of Link for more reliable dismiss + navigation"
    },
    {
      "area": "pwa",
      "description": "Add missing icon-192.png referenced in manifest"
    },
    {
      "area": "testing",
      "description": "Add Playwright to devDependencies and wire npm run test:portals"
    }
  ],
  "consoleErrorCount": 1,
  "networkErrorCount": 1,
  "sampleConsoleErrors": [
    "Failed to load resource: the server responded with a status of 401 (Unauthorized)"
  ],
  "sampleNetworkErrors": [
    {
      "status": 401,
      "url": "http://localhost:4000/api/auth/me"
    }
  ]
}