{
  "config": {
    "argv": [
      "/usr/bin/node",
      "/app/node_modules/.bin/playwright",
      "test",
      "--project=ui",
      "--output=/workspace/artifacts/prod-manual-20261024/us-preview/test-output"
    ],
    "configFile": "/app/playwright.config.ts",
    "rootDir": "/app",
    "failOnFlakyTests": false,
    "forbidOnly": false,
    "fullyParallel": false,
    "globalSetup": null,
    "globalTeardown": null,
    "globalTimeout": 0,
    "grep": {},
    "grepInvert": null,
    "maxFailures": 0,
    "metadata": {
      "actualWorkers": 32
    },
    "preserveOutput": "always",
    "projects": [
      {
        "outputDir": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 32
        },
        "id": "ui",
        "name": "ui",
        "testDir": "/app/tests/ui",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      },
      {
        "outputDir": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 32
        },
        "id": "api",
        "name": "api",
        "testDir": "/app/tests/api",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      }
    ],
    "filteredProjects": [
      {
        "grep": {},
        "grepInvert": null,
        "outputDir": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 32
        },
        "name": "ui",
        "testDir": "/app/tests/ui",
        "snapshotDir": "/app/tests/ui",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000,
        "use": {
          "browserName": "chromium",
          "baseURL": "https://us.elect.info",
          "extraHTTPHeaders": {},
          "screenshot": "on",
          "video": "on-first-retry",
          "trace": "on-first-retry"
        },
        "dependencies": [],
        "ignoreSnapshots": false,
        "__projectId": "ui"
      }
    ],
    "quiet": false,
    "reporter": [
      [
        "html",
        {
          "outputFolder": "/workspace/artifacts/prod-manual-20261024/us-preview/reports/html",
          "open": "never"
        }
      ],
      [
        "json",
        {
          "outputFile": "/workspace/artifacts/prod-manual-20261024/us-preview/reports/results.json"
        }
      ],
      [
        "list",
        null
      ]
    ],
    "reportSlowTests": {
      "max": 5,
      "threshold": 300000
    },
    "shard": null,
    "tags": [],
    "updateSnapshots": "default",
    "updateSourceMethod": "patch",
    "version": "1.64.1",
    "workers": 32,
    "webServer": null
  },
  "suites": [
    {
      "title": "tests/ui/auth.spec.ts",
      "file": "tests/ui/auth.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "sign-in and premium sections",
          "file": "tests/ui/auth.spec.ts",
          "line": 30,
          "column": 6,
          "specs": [
            {
              "title": "/auth/whoami returns well-formed JSON",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 96,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:32:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:32:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.272Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-facd1-mi-returns-well-formed-JSON-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 32,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 128,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:32:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:32:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:09.073Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-facd1-mi-returns-well-formed-JSON-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-facd1-mi-returns-well-formed-JSON-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 35,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 93,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:32:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:32:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:09.970Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-facd1-mi-returns-well-formed-JSON-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-34adcfbb6e371e5c1571",
              "file": "tests/ui/auth.spec.ts",
              "line": 31,
              "column": 7
            },
            {
              "title": "a forged identity header grants nothing where Authentik is off",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 38,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 242,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:51:17",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 17,
                          "line": 51
                        },
                        "snippet": "\u001b[0m \u001b[90m 49 |\u001b[39m       headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@elect.info'\u001b[39m }\u001b[33m,\u001b[39m\n \u001b[90m 50 |\u001b[39m     })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 51 |\u001b[39m     \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 52 |\u001b[39m     test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the header'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m     expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 54 |\u001b[39m     expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 17,
                            "line": 51
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  49 |       headers: { 'X-authentik-email': 'someone@elect.info' },\n  50 |     });\n> 51 |     const me = (await res.json()) as WhoAmI;\n     |                 ^\n  52 |     test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the header');\n  53 |     expect(me.email).toBe('');\n  54 |     expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:51:17"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.748Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-80e77-hing-where-Authentik-is-off-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 17,
                        "line": 51
                      }
                    },
                    {
                      "workerIndex": 41,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 246,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:51:17",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 17,
                          "line": 51
                        },
                        "snippet": "\u001b[0m \u001b[90m 49 |\u001b[39m       headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@elect.info'\u001b[39m }\u001b[33m,\u001b[39m\n \u001b[90m 50 |\u001b[39m     })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 51 |\u001b[39m     \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 52 |\u001b[39m     test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the header'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m     expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 54 |\u001b[39m     expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 17,
                            "line": 51
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  49 |       headers: { 'X-authentik-email': 'someone@elect.info' },\n  50 |     });\n> 51 |     const me = (await res.json()) as WhoAmI;\n     |                 ^\n  52 |     test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the header');\n  53 |     expect(me.email).toBe('');\n  54 |     expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:51:17"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:11.621Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-80e77-hing-where-Authentik-is-off-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-80e77-hing-where-Authentik-is-off-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 17,
                        "line": 51
                      }
                    },
                    {
                      "workerIndex": 43,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 225,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:51:17",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 17,
                          "line": 51
                        },
                        "snippet": "\u001b[0m \u001b[90m 49 |\u001b[39m       headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@elect.info'\u001b[39m }\u001b[33m,\u001b[39m\n \u001b[90m 50 |\u001b[39m     })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 51 |\u001b[39m     \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 52 |\u001b[39m     test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the header'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m     expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 54 |\u001b[39m     expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 17,
                            "line": 51
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  49 |       headers: { 'X-authentik-email': 'someone@elect.info' },\n  50 |     });\n> 51 |     const me = (await res.json()) as WhoAmI;\n     |                 ^\n  52 |     test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the header');\n  53 |     expect(me.email).toBe('');\n  54 |     expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:51:17"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:12.458Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-80e77-hing-where-Authentik-is-off-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 17,
                        "line": 51
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-d16713a710dd32aba362",
              "file": "tests/ui/auth.spec.ts",
              "line": 47,
              "column": 7
            },
            {
              "title": "a forged elect-info-premium group header grants nothing where Authentik is off",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 189,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.262Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-41d16-hing-where-Authentik-is-off-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 309,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:13.989Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-41d16-hing-where-Authentik-is-off-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-41d16-hing-where-Authentik-is-off-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 48,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 275,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:14.880Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-41d16-hing-where-Authentik-is-off-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-8b08522ffb6040767729",
              "file": "tests/ui/auth.spec.ts",
              "line": 58,
              "column": 9
            },
            {
              "title": "a forged ei-voter-viewers group header grants nothing where Authentik is off",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 49,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 183,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.711Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-bd21a-hing-where-Authentik-is-off-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 51,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 280,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:16.424Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-bd21a-hing-where-Authentik-is-off-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-bd21a-hing-where-Authentik-is-off-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 52,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 192,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:17.275Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-bd21a-hing-where-Authentik-is-off-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-331a481ae815f21adbb5",
              "file": "tests/ui/auth.spec.ts",
              "line": 58,
              "column": 9
            },
            {
              "title": "a forged ei-donor-viewers group header grants nothing where Authentik is off",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 53,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 222,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:18.024Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-2af15-hing-where-Authentik-is-off-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 54,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 193,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:18.771Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-2af15-hing-where-Authentik-is-off-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-2af15-hing-where-Authentik-is-off-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 55,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 178,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:19.497Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-2af15-hing-where-Authentik-is-off-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-627faecc86d75e536556",
              "file": "tests/ui/auth.spec.ts",
              "line": 58,
              "column": 9
            },
            {
              "title": "a forged ei-block-viewers group header grants nothing where Authentik is off",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 56,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 184,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:20.200Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-2088c-hing-where-Authentik-is-off-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 57,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 372,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:20.908Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-2088c-hing-where-Authentik-is-off-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-2088c-hing-where-Authentik-is-off-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 58,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 152,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:21.830Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-2088c-hing-where-Authentik-is-off-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-bafaf85fa26bf5a6d3e5",
              "file": "tests/ui/auth.spec.ts",
              "line": 58,
              "column": 9
            },
            {
              "title": "a forged elect-news-curators group header grants nothing where Authentik is off",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 59,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 281,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:22.521Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-aec11-hing-where-Authentik-is-off-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 62,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 350,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:23.328Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-aec11-hing-where-Authentik-is-off-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-aec11-hing-where-Authentik-is-off-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 199,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:24.211Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-aec11-hing-where-Authentik-is-off-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-05316fe4e949eabf6cf3",
              "file": "tests/ui/auth.spec.ts",
              "line": 58,
              "column": 9
            },
            {
              "title": "a forged ei-preview-viewers group header grants nothing where Authentik is off",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 64,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 355,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:24.924Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-10e01-hing-where-Authentik-is-off-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 66,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 180,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:25.810Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-10e01-hing-where-Authentik-is-off-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-10e01-hing-where-Authentik-is-off-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    },
                    {
                      "workerIndex": 67,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 150,
                      "error": {
                        "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON",
                        "stack": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n    at /app/tests/ui/auth.spec.ts:62:19",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 19,
                          "line": 62
                        },
                        "snippet": "\u001b[0m \u001b[90m 60 |\u001b[39m         headers\u001b[33m:\u001b[39m { \u001b[32m'X-authentik-email'\u001b[39m\u001b[33m:\u001b[39m \u001b[32m'someone@example.com'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'X-authentik-groups'\u001b[39m\u001b[33m:\u001b[39m group }\u001b[33m,\u001b[39m\n \u001b[90m 61 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 62 |\u001b[39m       \u001b[36mconst\u001b[39m me \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                   \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 63 |\u001b[39m       test\u001b[33m.\u001b[39mskip(me\u001b[33m.\u001b[39menabled \u001b[33m===\u001b[39m \u001b[32m'true'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'host has Authentik: Traefik sets the headers'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m       expect(me\u001b[33m.\u001b[39memail)\u001b[33m.\u001b[39mtoBe(\u001b[32m''\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m       expect(me\u001b[33m.\u001b[39melevated)\u001b[33m.\u001b[39mtoBe(\u001b[36mfalse\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 19,
                            "line": 62
                          },
                          "message": "SyntaxError: Unexpected token '<', \"\n\n\n\n\n<!DOCTYPE \"... is not valid JSON\n\n  60 |         headers: { 'X-authentik-email': 'someone@example.com', 'X-authentik-groups': group },\n  61 |       });\n> 62 |       const me = (await res.json()) as WhoAmI;\n     |                   ^\n  63 |       test.skip(me.enabled === 'true', 'host has Authentik: Traefik sets the headers');\n  64 |       expect(me.email).toBe('');\n  65 |       expect(me.elevated).toBe(false);\n    at /app/tests/ui/auth.spec.ts:62:19"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:26.556Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-10e01-hing-where-Authentik-is-off-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 19,
                        "line": 62
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-b1c4d8cb6ecdc1f6fabd",
              "file": "tests/ui/auth.spec.ts",
              "line": 58,
              "column": 9
            },
            {
              "title": "/voters/ answers 200 for the test identity",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 68,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 203,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:27.205Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-c6449-s-200-for-the-test-identity-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-c6449-s-200-for-the-test-identity-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 69,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 360,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:28.025Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-c6449-s-200-for-the-test-identity-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-c6449-s-200-for-the-test-identity-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-c6449-s-200-for-the-test-identity-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-c6449-s-200-for-the-test-identity-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 71,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 178,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:29.022Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-c6449-s-200-for-the-test-identity-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-c6449-s-200-for-the-test-identity-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-e0c978ff2eac96857528",
              "file": "tests/ui/auth.spec.ts",
              "line": 71,
              "column": 9
            },
            {
              "title": "/individuals/ answers 200 for the test identity",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 73,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 173,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:29.806Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-57df6-s-200-for-the-test-identity-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-57df6-s-200-for-the-test-identity-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 75,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 248,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:30.575Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-57df6-s-200-for-the-test-identity-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-57df6-s-200-for-the-test-identity-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-57df6-s-200-for-the-test-identity-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-57df6-s-200-for-the-test-identity-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 76,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 177,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:31.467Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-57df6-s-200-for-the-test-identity-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-57df6-s-200-for-the-test-identity-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-8e763adcb4584d4cc03c",
              "file": "tests/ui/auth.spec.ts",
              "line": 71,
              "column": 9
            },
            {
              "title": "/blocks/ answers 200 for the test identity",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 77,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 197,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:32.239Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-e6064-s-200-for-the-test-identity-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-e6064-s-200-for-the-test-identity-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 78,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 251,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:33.051Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-e6064-s-200-for-the-test-identity-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-e6064-s-200-for-the-test-identity-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-e6064-s-200-for-the-test-identity-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-e6064-s-200-for-the-test-identity-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 79,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 328,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:72:18"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:33.944Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-e6064-s-200-for-the-test-identity-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-e6064-s-200-for-the-test-identity-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-ac0d57b9b95cd8b304be",
              "file": "tests/ui/auth.spec.ts",
              "line": 71,
              "column": 9
            },
            {
              "title": "/voters/ is the voter search page",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 80,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 210,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:81:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:81:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:34.867Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-ff81e-rs-is-the-voter-search-page-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-ff81e-rs-is-the-voter-search-page-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 81,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 263,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:81:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:81:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:35.679Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-ff81e-rs-is-the-voter-search-page-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-ff81e-rs-is-the-voter-search-page-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-ff81e-rs-is-the-voter-search-page-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-ff81e-rs-is-the-voter-search-page-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 82,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 165,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:81:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:81:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:36.575Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-ff81e-rs-is-the-voter-search-page-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-ff81e-rs-is-the-voter-search-page-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-24cc7566a4f160062737",
              "file": "tests/ui/auth.spec.ts",
              "line": 80,
              "column": 7
            },
            {
              "title": "the premium notice page is not directly reachable",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 83,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 126,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:37.327Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-4eed4-e-is-not-directly-reachable-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-752f790273574f158ca2",
              "file": "tests/ui/auth.spec.ts",
              "line": 90,
              "column": 7
            },
            {
              "title": "homepage premium cards follow the account",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 83,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 158,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:96:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:96:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:37.542Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b27b9-um-cards-follow-the-account-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b27b9-um-cards-follow-the-account-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 86,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 264,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:96:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:96:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:38.276Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b27b9-um-cards-follow-the-account-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b27b9-um-cards-follow-the-account-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b27b9-um-cards-follow-the-account-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b27b9-um-cards-follow-the-account-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 88,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 180,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:96:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:96:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:39.153Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b27b9-um-cards-follow-the-account-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b27b9-um-cards-follow-the-account-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-25a6d4e0f106df1269de",
              "file": "tests/ui/auth.spec.ts",
              "line": 95,
              "column": 7
            },
            {
              "title": "account slot shows the signed-in email where Authentik is on",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 89,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 208,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:114:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:114:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:39.910Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b2077-email-where-Authentik-is-on-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b2077-email-where-Authentik-is-on-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 90,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 265,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:114:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:114:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:40.695Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b2077-email-where-Authentik-is-on-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b2077-email-where-Authentik-is-on-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b2077-email-where-Authentik-is-on-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b2077-email-where-Authentik-is-on-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 91,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 196,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:114:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:114:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:41.607Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b2077-email-where-Authentik-is-on-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-and-premium-s-b2077-email-where-Authentik-is-on-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-1e049c825edca23851b9",
              "file": "tests/ui/auth.spec.ts",
              "line": 113,
              "column": 7
            }
          ]
        },
        {
          "title": "sign-in panel",
          "file": "tests/ui/auth.spec.ts",
          "line": 134,
          "column": 6,
          "specs": [
            {
              "title": "/signin/google redirects to the Google flow, or falls back to the sign-in page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 93,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 73,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:42.413Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-8ef04c02a5acbc6b0869",
              "file": "tests/ui/auth.spec.ts",
              "line": 135,
              "column": 7
            },
            {
              "title": "/signin/register goes to the sign-up flow, or falls back to the sign-in page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 93,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 27,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:42.527Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-93dbd48805f61db758bc",
              "file": "tests/ui/auth.spec.ts",
              "line": 152,
              "column": 7
            },
            {
              "title": "the shared identity bar is served and revalidated",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 93,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 48,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:42.568Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-3bb8375e8399bd8ed909",
              "file": "tests/ui/auth.spec.ts",
              "line": 163,
              "column": 7
            },
            {
              "title": "/signin/google only answers GET, and the outpost hop is internal",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 93,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 28,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:42.626Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-f0802db54d500bb3e896",
              "file": "tests/ui/auth.spec.ts",
              "line": 171,
              "column": 7
            },
            {
              "title": "Log In opens the sign-in panel with Google and email",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 93,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 150,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:178:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:178:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:42.668Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-panel-Log-In--c8811-panel-with-Google-and-email-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-panel-Log-In--c8811-panel-with-Google-and-email-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 94,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 257,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:178:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:178:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:43.363Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-panel-Log-In--c8811-panel-with-Google-and-email-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-panel-Log-In--c8811-panel-with-Google-and-email-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-panel-Log-In--c8811-panel-with-Google-and-email-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-panel-Log-In--c8811-panel-with-Google-and-email-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    },
                    {
                      "workerIndex": 96,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 167,
                      "error": {
                        "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:178:16",
                        "location": {
                          "file": "/app/tests/ui/auth.spec.ts",
                          "column": 52,
                          "line": 25
                        },
                        "snippet": "\u001b[0m \u001b[90m 23 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m whoami(request\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mAPIRequestContext\u001b[39m)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mWhoAmI\u001b[39m\u001b[33m>\u001b[39m {\n \u001b[90m 24 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m'/auth/whoami'\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 25 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/auth/whoami answers 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 26 |\u001b[39m   expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 27 |\u001b[39m   \u001b[36mreturn\u001b[39m (\u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson()) \u001b[36mas\u001b[39m \u001b[33mWhoAmI\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 28 |\u001b[39m }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "column": 52,
                            "line": 25
                          },
                          "message": "Error: /auth/whoami answers 200\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  23 | async function whoami(request: import('@playwright/test').APIRequestContext): Promise<WhoAmI> {\n  24 |   const res = await request.get('/auth/whoami', { maxRedirects: 0 });\n> 25 |   expect(res.status(), '/auth/whoami answers 200').toBe(200);\n     |                                                    ^\n  26 |   expect(res.headers()['cache-control']).toContain('no-store');\n  27 |   return (await res.json()) as WhoAmI;\n  28 | }\n    at whoami (/app/tests/ui/auth.spec.ts:25:52)\n    at /app/tests/ui/auth.spec.ts:178:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:44.253Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-panel-Log-In--c8811-panel-with-Google-and-email-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/auth-sign-in-panel-Log-In--c8811-panel-with-Google-and-email-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "column": 52,
                        "line": 25
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d748ac400d08b85935ef-985d1e0afe9b23e56167",
              "file": "tests/ui/auth.spec.ts",
              "line": 177,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/cms-proxy.spec.ts",
      "file": "tests/ui/cms-proxy.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "/api/cms/ proxy",
          "file": "tests/ui/cms-proxy.spec.ts",
          "line": 12,
          "column": 6,
          "specs": [
            {
              "title": "/api/cms/users/me is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 103,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.265Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-cc9bb6a3cfc76f59bc01",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/users is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 95,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.420Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-617668a16c2dee63692c",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/users/login is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 27,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.567Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-18de684729d5b7f54b47",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/payload-mcp-api-keys is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 29,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.628Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-b8a6a58d1ac5d4d968f9",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/payload-preferences is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 32,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.676Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-ae25edf4804185cce0cf",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/payload-locked-documents is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 23,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.726Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-b50cab05dc798cfacc41",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/posts is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 21,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.766Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-abffd54722acee136ad6",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/media is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 18,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.799Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-5b06a815231650bc7724",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/graphql is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 34,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.826Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-ce39e6c13a114fa28f07",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/mcp is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 56,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.871Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-eecb42b6f024183a9e65",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/slug-lookup?collection=politicians&path=x is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 31,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.939Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-3a3d7ba9aee59900e4e8",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/politicians/a/b is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 21,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.990Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-e26099ab3e6165e9bf8e",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/politicians/%2e%2e/users/me is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 24,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.029Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-5be9c9a7194b19ecd45f",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/politicians%2F..%2Fusers%2Fme is 404",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 25,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m404\u001b[39m\nReceived: \u001b[31m400\u001b[39m",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m404\u001b[39m\nReceived: \u001b[31m400\u001b[39m\n    at /app/tests/ui/cms-proxy.spec.ts:35:28",
                        "location": {
                          "file": "/app/tests/ui/cms-proxy.spec.ts",
                          "column": 28,
                          "line": 35
                        },
                        "snippet": "\u001b[0m \u001b[90m 33 |\u001b[39m         maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 34 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 35 |\u001b[39m       expect(res\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m404\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                            \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 36 |\u001b[39m     })\u001b[33m;\u001b[39m\n \u001b[90m 37 |\u001b[39m   }\n \u001b[90m 38 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/cms-proxy.spec.ts",
                            "column": 28,
                            "line": 35
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m404\u001b[39m\nReceived: \u001b[31m400\u001b[39m\n\n  33 |         maxRedirects: 0,\n  34 |       });\n> 35 |       expect(res.status()).toBe(404);\n     |                            ^\n  36 |     });\n  37 |   }\n  38 |\n    at /app/tests/ui/cms-proxy.spec.ts:35:28"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.071Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cms-proxy--api-cms-proxy-a-18be8-ians-2F-2Fusers-2Fme-is-404-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/cms-proxy.spec.ts",
                        "column": 28,
                        "line": 35
                      }
                    },
                    {
                      "workerIndex": 34,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 131,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m404\u001b[39m\nReceived: \u001b[31m400\u001b[39m",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m404\u001b[39m\nReceived: \u001b[31m400\u001b[39m\n    at /app/tests/ui/cms-proxy.spec.ts:35:28",
                        "location": {
                          "file": "/app/tests/ui/cms-proxy.spec.ts",
                          "column": 28,
                          "line": 35
                        },
                        "snippet": "\u001b[0m \u001b[90m 33 |\u001b[39m         maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 34 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 35 |\u001b[39m       expect(res\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m404\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                            \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 36 |\u001b[39m     })\u001b[33m;\u001b[39m\n \u001b[90m 37 |\u001b[39m   }\n \u001b[90m 38 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/cms-proxy.spec.ts",
                            "column": 28,
                            "line": 35
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m404\u001b[39m\nReceived: \u001b[31m400\u001b[39m\n\n  33 |         maxRedirects: 0,\n  34 |       });\n> 35 |       expect(res.status()).toBe(404);\n     |                            ^\n  36 |     });\n  37 |   }\n  38 |\n    at /app/tests/ui/cms-proxy.spec.ts:35:28"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:09.803Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cms-proxy--api-cms-proxy-a-18be8-ians-2F-2Fusers-2Fme-is-404-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cms-proxy--api-cms-proxy-a-18be8-ians-2F-2Fusers-2Fme-is-404-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/cms-proxy.spec.ts",
                        "column": 28,
                        "line": 35
                      }
                    },
                    {
                      "workerIndex": 37,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 87,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m404\u001b[39m\nReceived: \u001b[31m400\u001b[39m",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m404\u001b[39m\nReceived: \u001b[31m400\u001b[39m\n    at /app/tests/ui/cms-proxy.spec.ts:35:28",
                        "location": {
                          "file": "/app/tests/ui/cms-proxy.spec.ts",
                          "column": 28,
                          "line": 35
                        },
                        "snippet": "\u001b[0m \u001b[90m 33 |\u001b[39m         maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 34 |\u001b[39m       })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 35 |\u001b[39m       expect(res\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m404\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                            \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 36 |\u001b[39m     })\u001b[33m;\u001b[39m\n \u001b[90m 37 |\u001b[39m   }\n \u001b[90m 38 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/cms-proxy.spec.ts",
                            "column": 28,
                            "line": 35
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m404\u001b[39m\nReceived: \u001b[31m400\u001b[39m\n\n  33 |         maxRedirects: 0,\n  34 |       });\n> 35 |       expect(res.status()).toBe(404);\n     |                            ^\n  36 |     });\n  37 |   }\n  38 |\n    at /app/tests/ui/cms-proxy.spec.ts:35:28"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:10.659Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cms-proxy--api-cms-proxy-a-18be8-ians-2F-2Fusers-2Fme-is-404-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/cms-proxy.spec.ts",
                        "column": 28,
                        "line": 35
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-2a09439d06bbeb58d327",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "/api/cms/ is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 40,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 74,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.379Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-46084719f8cf8fc9e6af",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "writes are 405",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 40,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 46,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.503Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-c3e3f0331df33854dcd3",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 39,
              "column": 7
            },
            {
              "title": "the allowed collections reach the CMS",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 40,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 93,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.569Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "71ccbf92d55b4dbfb95f-37e9db234d843b0ff2d8",
              "file": "tests/ui/cms-proxy.spec.ts",
              "line": 46,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/county-filters.spec.ts",
      "file": "tests/ui/county-filters.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "tracts county filter: GEOID option values list the county's tracts",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 120000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 2,
                  "parallelIndex": 2,
                  "status": "passed",
                  "duration": 1195,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:08.326Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/county-filters-tracts-coun-8d5fe-es-list-the-county-s-tracts-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "27700f440bd41f34957a-c91732dd519bda18fdc2",
          "file": "tests/ui/county-filters.spec.ts",
          "line": 39,
          "column": 7
        },
        {
          "title": "blocks county filter: GEOID option values list the county's blocks",
          "ok": false,
          "tags": [],
          "tests": [
            {
              "timeout": 120000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 2,
                  "parallelIndex": 2,
                  "status": "timedOut",
                  "duration": 120080,
                  "error": {
                    "message": "\u001b[31mTest timeout of 120000ms exceeded.\u001b[39m",
                    "stack": "\u001b[31mTest timeout of 120000ms exceeded.\u001b[39m"
                  },
                  "errors": [
                    {
                      "message": "\u001b[31mTest timeout of 120000ms exceeded.\u001b[39m"
                    },
                    {
                      "location": {
                        "file": "/app/tests/ui/county-filters.spec.ts",
                        "column": 55,
                        "line": 27
                      },
                      "message": "Error: locator.click: Test timeout of 120000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('.toggle-btn[data-view=\"list\"]')\u001b[22m\n\n\n  25 |   expect(res?.status(), `${path} should answer 200`).toBe(200);\n  26 |   // The list view (and its *-index.js) loads when the toggle is activated\n> 27 |   await page.locator('.toggle-btn[data-view=\"list\"]').click();\n     |                                                       ^\n  28 |   await page.waitForFunction(\n  29 |     sel => {\n  30 |       const s = document.querySelector(sel) as HTMLSelectElement | null;\n    at openListView (/app/tests/ui/county-filters.spec.ts:27:55)\n    at /app/tests/ui/county-filters.spec.ts:41:5"
                    }
                  ],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:09.757Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui/test-failed-1.png"
                    },
                    {
                      "name": "error-context",
                      "contentType": "text/markdown",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui/error-context.md"
                    }
                  ]
                },
                {
                  "workerIndex": 122,
                  "parallelIndex": 2,
                  "status": "timedOut",
                  "duration": 120672,
                  "error": {
                    "message": "\u001b[31mTest timeout of 120000ms exceeded.\u001b[39m",
                    "stack": "\u001b[31mTest timeout of 120000ms exceeded.\u001b[39m"
                  },
                  "errors": [
                    {
                      "message": "\u001b[31mTest timeout of 120000ms exceeded.\u001b[39m"
                    },
                    {
                      "location": {
                        "file": "/app/tests/ui/county-filters.spec.ts",
                        "column": 55,
                        "line": 27
                      },
                      "message": "Error: locator.click: Test timeout of 120000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('.toggle-btn[data-view=\"list\"]')\u001b[22m\n\n\n  25 |   expect(res?.status(), `${path} should answer 200`).toBe(200);\n  26 |   // The list view (and its *-index.js) loads when the toggle is activated\n> 27 |   await page.locator('.toggle-btn[data-view=\"list\"]').click();\n     |                                                       ^\n  28 |   await page.waitForFunction(\n  29 |     sel => {\n  30 |       const s = document.querySelector(sel) as HTMLSelectElement | null;\n    at openListView (/app/tests/ui/county-filters.spec.ts:27:55)\n    at /app/tests/ui/county-filters.spec.ts:41:5"
                    }
                  ],
                  "stdout": [],
                  "stderr": [],
                  "retry": 1,
                  "startTime": "2026-10-24T00:31:10.342Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui-retry1/test-failed-1.png"
                    },
                    {
                      "name": "video",
                      "contentType": "video/webm",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui-retry1/video.webm"
                    },
                    {
                      "name": "error-context",
                      "contentType": "text/markdown",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui-retry1/error-context.md"
                    },
                    {
                      "name": "trace",
                      "contentType": "application/zip",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui-retry1/trace.zip"
                    }
                  ]
                },
                {
                  "workerIndex": 142,
                  "parallelIndex": 2,
                  "status": "timedOut",
                  "duration": 120090,
                  "error": {
                    "message": "\u001b[31mTest timeout of 120000ms exceeded.\u001b[39m",
                    "stack": "\u001b[31mTest timeout of 120000ms exceeded.\u001b[39m"
                  },
                  "errors": [
                    {
                      "message": "\u001b[31mTest timeout of 120000ms exceeded.\u001b[39m"
                    },
                    {
                      "location": {
                        "file": "/app/tests/ui/county-filters.spec.ts",
                        "column": 55,
                        "line": 27
                      },
                      "message": "Error: locator.click: Test timeout of 120000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('.toggle-btn[data-view=\"list\"]')\u001b[22m\n\n\n  25 |   expect(res?.status(), `${path} should answer 200`).toBe(200);\n  26 |   // The list view (and its *-index.js) loads when the toggle is activated\n> 27 |   await page.locator('.toggle-btn[data-view=\"list\"]').click();\n     |                                                       ^\n  28 |   await page.waitForFunction(\n  29 |     sel => {\n  30 |       const s = document.querySelector(sel) as HTMLSelectElement | null;\n    at openListView (/app/tests/ui/county-filters.spec.ts:27:55)\n    at /app/tests/ui/county-filters.spec.ts:41:5"
                    }
                  ],
                  "stdout": [],
                  "stderr": [],
                  "retry": 2,
                  "startTime": "2026-10-24T00:33:12.192Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui-retry2/test-failed-1.png"
                    },
                    {
                      "name": "error-context",
                      "contentType": "text/markdown",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui-retry2/error-context.md"
                    }
                  ]
                }
              ],
              "status": "unexpected"
            }
          ],
          "id": "27700f440bd41f34957a-f985531d9a6cf726a6b3",
          "file": "tests/ui/county-filters.spec.ts",
          "line": 39,
          "column": 7
        },
        {
          "title": "precincts county filter: GEOID option values list the county's precincts",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 120000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 153,
                  "parallelIndex": 2,
                  "status": "passed",
                  "duration": 1434,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:35:12.877Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/county-filters-precincts-c-f8a85-list-the-county-s-precincts-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "27700f440bd41f34957a-7c41065a343e42681997",
          "file": "tests/ui/county-filters.spec.ts",
          "line": 39,
          "column": 7
        }
      ]
    },
    {
      "title": "tests/ui/cycle-facet.spec.ts",
      "file": "tests/ui/cycle-facet.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "cycle facet (sites#194, #355)",
          "file": "tests/ui/cycle-facet.spec.ts",
          "line": 15,
          "column": 6,
          "specs": [
            {
              "title": "signed out: shown locked, offers sign-in",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 521,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.315Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-facet-cycle-facet-si-d7771-shown-locked-offers-sign-in-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6978d26ba5f0541ddfd1-e30aa77c81b6e0068a2e",
              "file": "tests/ui/cycle-facet.spec.ts",
              "line": 16,
              "column": 7
            },
            {
              "title": "signed in: picking a cycle reloads with ?cycle= and links keep it",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 678,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.081Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-facet-cycle-facet-si-a2a9b-ith-cycle-and-links-keep-it-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6978d26ba5f0541ddfd1-32dc73bc8c14ad3f8f6e",
              "file": "tests/ui/cycle-facet.spec.ts",
              "line": 27,
              "column": 7
            },
            {
              "title": "an invalid ?cycle= means all cycles",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 235,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.779Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-facet-cycle-facet-si-670e3-alid-cycle-means-all-cycles-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6978d26ba5f0541ddfd1-5be095118f9b0a5d97a3",
              "file": "tests/ui/cycle-facet.spec.ts",
              "line": 54,
              "column": 7
            }
          ]
        },
        {
          "title": "graph view control (sites#355)",
          "file": "tests/ui/cycle-facet.spec.ts",
          "line": 61,
          "column": 6,
          "specs": [
            {
              "title": "a member opens the graph from the bar; no header button",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 518,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.033Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-facet-graph-view-con-37808-om-the-bar-no-header-button-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6978d26ba5f0541ddfd1-59a365b7af459e57220a",
              "file": "tests/ui/cycle-facet.spec.ts",
              "line": 62,
              "column": 7
            },
            {
              "title": "signed out: the graph control is locked",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 428,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.566Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-facet-graph-view-con-fd1b6-the-graph-control-is-locked-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6978d26ba5f0541ddfd1-df26a6108fba66053c73",
              "file": "tests/ui/cycle-facet.spec.ts",
              "line": 72,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/cycle-index.spec.ts",
      "file": "tests/ui/cycle-index.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "candidates: legacy requests/rendering unchanged without cycle",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 72,
                  "parallelIndex": 4,
                  "status": "passed",
                  "duration": 332,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:29.459Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-candidates-leg-88558-ing-unchanged-without-cycle-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "07d5b3b25daacf53cd2a-b93113c811770e6390c0",
          "file": "tests/ui/cycle-index.spec.ts",
          "line": 163,
          "column": 9
        },
        {
          "title": "candidates: legacy requests/rendering unchanged ?cycle=2023",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 72,
                  "parallelIndex": 4,
                  "status": "passed",
                  "duration": 290,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:29.880Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-candidates-leg-4a35f-dering-unchanged-cycle-2023-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "07d5b3b25daacf53cd2a-d4abf828373c6efc362c",
          "file": "tests/ui/cycle-index.spec.ts",
          "line": 163,
          "column": 9
        },
        {
          "title": "committees: legacy requests/rendering unchanged without cycle",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 72,
                  "parallelIndex": 4,
                  "status": "passed",
                  "duration": 298,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:30.189Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-committees-leg-989dd-ing-unchanged-without-cycle-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "07d5b3b25daacf53cd2a-771beaf7f8de23b34648",
          "file": "tests/ui/cycle-index.spec.ts",
          "line": 163,
          "column": 9
        },
        {
          "title": "committees: legacy requests/rendering unchanged ?cycle=2023",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 72,
                  "parallelIndex": 4,
                  "status": "passed",
                  "duration": 292,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:30.506Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-committees-leg-171c1-dering-unchanged-cycle-2023-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "07d5b3b25daacf53cd2a-be0b5c02cb3f3b6f8fb2",
          "file": "tests/ui/cycle-index.spec.ts",
          "line": 163,
          "column": 9
        },
        {
          "title": "specialized state search and district selector scope their results and counts using exact CSV year tokens",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 72,
                  "parallelIndex": 4,
                  "status": "passed",
                  "duration": 1185,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:30.812Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-specialized-st-fff94-using-exact-CSV-year-tokens-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "07d5b3b25daacf53cd2a-ad364ff10417c47d1ccc",
          "file": "tests/ui/cycle-index.spec.ts",
          "line": 187,
          "column": 5
        },
        {
          "title": "catalog datasource list explicitly remains all cycles without changing its CMS request",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 72,
                  "parallelIndex": 4,
                  "status": "passed",
                  "duration": 179,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:32.015Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-catalog-dataso-6b2d7-ut-changing-its-CMS-request-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "07d5b3b25daacf53cd2a-e6514b78618b360eea5f",
          "file": "tests/ui/cycle-index.spec.ts",
          "line": 213,
          "column": 5
        },
        {
          "title": "homepage never waits or displays zero for pending heavy counts, and fills them on the next visit without polling",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 72,
                  "parallelIndex": 4,
                  "status": "passed",
                  "duration": 239,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:32.211Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-homepage-never-420b7--next-visit-without-polling-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "07d5b3b25daacf53cd2a-2345a0d898bb53afb7f6",
          "file": "tests/ui/cycle-index.spec.ts",
          "line": 221,
          "column": 5
        },
        {
          "title": "slow Employer directory explicitly stays all cycles, while measured-fast Vendor lists retain the cycle",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 72,
                  "parallelIndex": 4,
                  "status": "passed",
                  "duration": 216,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:32.466Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-slow-Employer--a9165-ndor-lists-retain-the-cycle-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "07d5b3b25daacf53cd2a-1b35cdfa66c055f8c936",
          "file": "tests/ui/cycle-index.spec.ts",
          "line": 248,
          "column": 5
        }
      ],
      "suites": [
        {
          "title": "cycle-index URL contract (sites#194)",
          "file": "tests/ui/cycle-index.spec.ts",
          "line": 43,
          "column": 6,
          "specs": [
            {
              "title": "homepage uses the fixed cycle-count document only for a supported cycle",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 578,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.340Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-5543a--only-for-a-supported-cycle-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "07d5b3b25daacf53cd2a-22bd75ed47108d3cc049",
              "file": "tests/ui/cycle-index.spec.ts",
              "line": 44,
              "column": 7
            },
            {
              "title": "homepage leaves the legacy anonymous counts query unchanged (no cycle)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 261,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.149Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-63762-s-query-unchanged-no-cycle--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "07d5b3b25daacf53cd2a-eaf998ed2344bec97480",
              "file": "tests/ui/cycle-index.spec.ts",
              "line": 67,
              "column": 9
            },
            {
              "title": "homepage leaves the legacy anonymous counts query unchanged (?cycle=2023)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 246,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.433Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-fbe7c-query-unchanged-cycle-2023--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "07d5b3b25daacf53cd2a-d84c51ce2ce2b956ef67",
              "file": "tests/ui/cycle-index.spec.ts",
              "line": 67,
              "column": 9
            },
            {
              "title": "homepage leaves the legacy anonymous counts query unchanged (?cycle=invalid)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 234,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.704Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-9f23a-ry-unchanged-cycle-invalid--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "07d5b3b25daacf53cd2a-d04b1f0327abf30221ad",
              "file": "tests/ui/cycle-index.spec.ts",
              "line": 67,
              "column": 9
            },
            {
              "title": "supported candidate and committee browse/search requests carry cycle and retain URL state",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 591,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.957Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-c53a8--cycle-and-retain-URL-state-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "07d5b3b25daacf53cd2a-598053d864c7c1b7d87f",
              "file": "tests/ui/cycle-index.spec.ts",
              "line": 82,
              "column": 7
            },
            {
              "title": "supported index types scope results; unsupported county counts stay lifetime and explain scope",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 633,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.568Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-eb97d--lifetime-and-explain-scope-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "07d5b3b25daacf53cd2a-275f1b6e0da5808ad21d",
              "file": "tests/ui/cycle-index.spec.ts",
              "line": 117,
              "column": 7
            },
            {
              "title": "individual global cycle facet is passed to the API independently of lifetime/profile data",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "failed",
                      "duration": 5587,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.ei-cycle-notice')\nExpected pattern: \u001b[32m/2024.*all cycles|all cycles.*2024/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('.ei-cycle-notice') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.ei-cycle-notice')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.ei-cycle-notice')\nExpected pattern: \u001b[32m/2024.*all cycles|all cycles.*2024/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('.ei-cycle-notice') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.ei-cycle-notice')\u001b[22m\n\n    at /app/tests/ui/cycle-index.spec.ts:139:52",
                        "location": {
                          "file": "/app/tests/ui/cycle-index.spec.ts",
                          "column": 52,
                          "line": 139
                        },
                        "snippet": "\u001b[0m \u001b[90m 137 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockAnonymousGraphQL(page\u001b[33m,\u001b[39m entityResponse)\u001b[33m;\u001b[39m\n \u001b[90m 138 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/?cycle=2024&f_state=TX'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 139 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/2024.*all cycles|all cycles.*2024/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 140 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mfirst())\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\n \u001b[90m 141 |\u001b[39m     \u001b[36mconst\u001b[39m browse \u001b[33m=\u001b[39m requests\u001b[33m.\u001b[39mfind(request \u001b[33m=>\u001b[39m request\u001b[33m.\u001b[39mquery\u001b[33m.\u001b[39mincludes(\u001b[32m'browseEntities('\u001b[39m))\u001b[33m;\u001b[39m\n \u001b[90m 142 |\u001b[39m     expect(browse\u001b[33m!\u001b[39m\u001b[33m.\u001b[39mvariables\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mcycle)\u001b[33m.\u001b[39mtoBe(\u001b[35m2024\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/cycle-index.spec.ts",
                            "column": 52,
                            "line": 139
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.ei-cycle-notice')\nExpected pattern: \u001b[32m/2024.*all cycles|all cycles.*2024/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('.ei-cycle-notice') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.ei-cycle-notice')\u001b[22m\n\n\n  137 |     const requests = await mockAnonymousGraphQL(page, entityResponse);\n  138 |     await page.goto('/individuals/?cycle=2024&f_state=TX');\n> 139 |     await expect(page.locator('.ei-cycle-notice')).toContainText(/2024.*all cycles|all cycles.*2024/i);\n      |                                                    ^\n  140 |     await expect(page.locator('.entity-search-result').first()).toBeVisible();\n  141 |     const browse = requests.find(request => request.query.includes('browseEntities('));\n  142 |     expect(browse!.variables?.cycle).toBe(2024);\n    at /app/tests/ui/cycle-index.spec.ts:139:52"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.214Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-78d64-ly-of-lifetime-profile-data-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-78d64-ly-of-lifetime-profile-data-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/cycle-index.spec.ts",
                        "column": 52,
                        "line": 139
                      }
                    },
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "failed",
                      "duration": 5804,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.ei-cycle-notice')\nExpected pattern: \u001b[32m/2024.*all cycles|all cycles.*2024/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('.ei-cycle-notice') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.ei-cycle-notice')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.ei-cycle-notice')\nExpected pattern: \u001b[32m/2024.*all cycles|all cycles.*2024/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('.ei-cycle-notice') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.ei-cycle-notice')\u001b[22m\n\n    at /app/tests/ui/cycle-index.spec.ts:139:52",
                        "location": {
                          "file": "/app/tests/ui/cycle-index.spec.ts",
                          "column": 52,
                          "line": 139
                        },
                        "snippet": "\u001b[0m \u001b[90m 137 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockAnonymousGraphQL(page\u001b[33m,\u001b[39m entityResponse)\u001b[33m;\u001b[39m\n \u001b[90m 138 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/?cycle=2024&f_state=TX'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 139 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/2024.*all cycles|all cycles.*2024/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 140 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mfirst())\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\n \u001b[90m 141 |\u001b[39m     \u001b[36mconst\u001b[39m browse \u001b[33m=\u001b[39m requests\u001b[33m.\u001b[39mfind(request \u001b[33m=>\u001b[39m request\u001b[33m.\u001b[39mquery\u001b[33m.\u001b[39mincludes(\u001b[32m'browseEntities('\u001b[39m))\u001b[33m;\u001b[39m\n \u001b[90m 142 |\u001b[39m     expect(browse\u001b[33m!\u001b[39m\u001b[33m.\u001b[39mvariables\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mcycle)\u001b[33m.\u001b[39mtoBe(\u001b[35m2024\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/cycle-index.spec.ts",
                            "column": 52,
                            "line": 139
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.ei-cycle-notice')\nExpected pattern: \u001b[32m/2024.*all cycles|all cycles.*2024/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('.ei-cycle-notice') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.ei-cycle-notice')\u001b[22m\n\n\n  137 |     const requests = await mockAnonymousGraphQL(page, entityResponse);\n  138 |     await page.goto('/individuals/?cycle=2024&f_state=TX');\n> 139 |     await expect(page.locator('.ei-cycle-notice')).toContainText(/2024.*all cycles|all cycles.*2024/i);\n      |                                                    ^\n  140 |     await expect(page.locator('.entity-search-result').first()).toBeVisible();\n  141 |     const browse = requests.find(request => request.query.includes('browseEntities('));\n  142 |     expect(browse!.variables?.cycle).toBe(2024);\n    at /app/tests/ui/cycle-index.spec.ts:139:52"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:16.850Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-78d64-ly-of-lifetime-profile-data-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-78d64-ly-of-lifetime-profile-data-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-78d64-ly-of-lifetime-profile-data-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-78d64-ly-of-lifetime-profile-data-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/cycle-index.spec.ts",
                        "column": 52,
                        "line": 139
                      }
                    },
                    {
                      "workerIndex": 61,
                      "parallelIndex": 4,
                      "status": "failed",
                      "duration": 5584,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.ei-cycle-notice')\nExpected pattern: \u001b[32m/2024.*all cycles|all cycles.*2024/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('.ei-cycle-notice') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.ei-cycle-notice')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.ei-cycle-notice')\nExpected pattern: \u001b[32m/2024.*all cycles|all cycles.*2024/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('.ei-cycle-notice') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.ei-cycle-notice')\u001b[22m\n\n    at /app/tests/ui/cycle-index.spec.ts:139:52",
                        "location": {
                          "file": "/app/tests/ui/cycle-index.spec.ts",
                          "column": 52,
                          "line": 139
                        },
                        "snippet": "\u001b[0m \u001b[90m 137 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockAnonymousGraphQL(page\u001b[33m,\u001b[39m entityResponse)\u001b[33m;\u001b[39m\n \u001b[90m 138 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/?cycle=2024&f_state=TX'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 139 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/2024.*all cycles|all cycles.*2024/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                    \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 140 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mfirst())\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\n \u001b[90m 141 |\u001b[39m     \u001b[36mconst\u001b[39m browse \u001b[33m=\u001b[39m requests\u001b[33m.\u001b[39mfind(request \u001b[33m=>\u001b[39m request\u001b[33m.\u001b[39mquery\u001b[33m.\u001b[39mincludes(\u001b[32m'browseEntities('\u001b[39m))\u001b[33m;\u001b[39m\n \u001b[90m 142 |\u001b[39m     expect(browse\u001b[33m!\u001b[39m\u001b[33m.\u001b[39mvariables\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mcycle)\u001b[33m.\u001b[39mtoBe(\u001b[35m2024\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/cycle-index.spec.ts",
                            "column": 52,
                            "line": 139
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.ei-cycle-notice')\nExpected pattern: \u001b[32m/2024.*all cycles|all cycles.*2024/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('.ei-cycle-notice') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.ei-cycle-notice')\u001b[22m\n\n\n  137 |     const requests = await mockAnonymousGraphQL(page, entityResponse);\n  138 |     await page.goto('/individuals/?cycle=2024&f_state=TX');\n> 139 |     await expect(page.locator('.ei-cycle-notice')).toContainText(/2024.*all cycles|all cycles.*2024/i);\n      |                                                    ^\n  140 |     await expect(page.locator('.entity-search-result').first()).toBeVisible();\n  141 |     const browse = requests.find(request => request.query.includes('browseEntities('));\n  142 |     expect(browse!.variables?.cycle).toBe(2024);\n    at /app/tests/ui/cycle-index.spec.ts:139:52"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:23.236Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-78d64-ly-of-lifetime-profile-data-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/cycle-index-cycle-index-UR-78d64-ly-of-lifetime-profile-data-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/cycle-index.spec.ts",
                        "column": 52,
                        "line": 139
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "07d5b3b25daacf53cd2a-dc8d6406aa6c5ca9cdac",
              "file": "tests/ui/cycle-index.spec.ts",
              "line": 136,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/data-contracts.spec.ts",
      "file": "tests/ui/data-contracts.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "graph data contracts",
          "file": "tests/ui/data-contracts.spec.ts",
          "line": 24,
          "column": 6,
          "specs": [
            {
              "title": "county state_fips + county_fips is the GEOID tracts and blocks join on",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 1312,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] county state_fips + county_fips is the GEOID tracts and blocks join on: {\"name\":\"Montague County\",\"state_fips\":\"48\",\"county_fips\":\"337\"}, {\"name\":\"Parker County\",\"state_fips\":\"48\",\"county_fips\":\"367\"}, {\"name\":\"Tyler County\",\"state_fips\":\"48\",\"county_fips\":\"457\"}\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.353Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-f384fe1a5980f6fbbab9",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 25,
              "column": 7
            },
            {
              "title": "precincts join on the 5-digit county GEOID",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 429,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.726Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-4429b8eac19c273f24bb",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 50,
              "column": 7
            },
            {
              "title": "candidate ids are UUID5s and carry their FEC id",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 89,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.176Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-0d399e3f265b47191366",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 58,
              "column": 7
            },
            {
              "title": "Party exposes its FEC code",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 213,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.280Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-a452252060391ae22369",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 71,
              "column": 7
            },
            {
              "title": "the graph serves every scalar the schema declares (seeded sample per type)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 240000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 74110,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Block: 1000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Candidate: 1000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:CodeSource: 50000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Committee: 1000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Contributor: 5000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:County: 5000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Cycle: 0\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:DataSource: 1000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:District: 50000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Employer: 50000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Individual: 20000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Office: 1000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Organization: 5000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Party: 1000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Place: 0\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:PostalCode: 20000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Precinct: 1000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Tract: 20000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Stage: 50000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:State: 50000\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] scalars:Vendor: 1000\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.508Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-83e55b3a887e2ecf6eaf",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 81,
              "column": 7
            },
            {
              "title": "entity counts stay above the accepted baseline",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 67,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:24.641Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-d1674ff7d0fddc5795da",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 164,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/disabled-pages.spec.ts",
      "file": "tests/ui/disabled-pages.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "disabled entity pages",
          "file": "tests/ui/disabled-pages.spec.ts",
          "line": 8,
          "column": 6,
          "specs": [
            {
              "title": "/contributors returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 436,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.349Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-en-15012-es-contributors-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-eeaf2a96904f5fab5855",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/contributors/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 132,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.008Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-en-15012-es-contributors-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-4ef4084687b4fd401e0e",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/contributors/any-entity-id/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 148,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.172Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-en-dad75-s-any-entity-id-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-e3ed295c83582d4283c6",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "homepage has no link or visible card for /contributors/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 245,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.344Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-en-a3004-ible-card-for-contributors--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-dc932c58cabd7e95e978",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 17,
              "column": 9
            },
            {
              "title": "/codesources returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 149,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.609Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-entity-pages-codesources-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-fb06178d006e6578315a",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/codesources/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 143,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.776Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-entity-pages-codesources-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-8235710cd0b53cf94f3d",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/codesources/any-entity-id/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 135,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.938Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-en-808a2-s-any-entity-id-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-d46c47f30cca6317f3ef",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "homepage has no link or visible card for /codesources/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 217,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.092Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-en-269ae-sible-card-for-codesources--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-315ac629d40ead7d7e3f",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 17,
              "column": 9
            },
            {
              "title": "homepage still shows enabled entity cards",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 213,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.330Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-en-839ee--shows-enabled-entity-cards-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-9cd10ec808f3bc4b54f0",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 24,
              "column": 7
            },
            {
              "title": "homepage loads without script errors",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 667,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.564Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-en-9b095-loads-without-script-errors-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-4bdcb6be185099980649",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 31,
              "column": 7
            },
            {
              "title": "disabled-pages runtime script is served",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 124,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.249Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/disabled-pages-disabled-en-07214-es-runtime-script-is-served-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-41968bac84ec1d02c2e6",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 39,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/district-delegates.spec.ts",
      "file": "tests/ui/district-delegates.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "AS delegate district index link serves the graph-current page",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 7,
                  "parallelIndex": 7,
                  "status": "passed",
                  "duration": 754,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:08.455Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/district-delegates-AS-dele-a8b80-rves-the-graph-current-page-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "878bfbb19a6f264d20bb-12a4dab69678a0f6cc2a",
          "file": "tests/ui/district-delegates.spec.ts",
          "line": 7,
          "column": 7
        },
        {
          "title": "GU delegate district index link serves the graph-current page",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 7,
                  "parallelIndex": 7,
                  "status": "passed",
                  "duration": 458,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:09.377Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/district-delegates-GU-dele-76247-rves-the-graph-current-page-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "878bfbb19a6f264d20bb-bb66f87e39820e6067f9",
          "file": "tests/ui/district-delegates.spec.ts",
          "line": 7,
          "column": 7
        },
        {
          "title": "MP delegate district index link serves the graph-current page",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 7,
                  "parallelIndex": 7,
                  "status": "passed",
                  "duration": 437,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:09.854Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/district-delegates-MP-dele-a5427-rves-the-graph-current-page-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "878bfbb19a6f264d20bb-ced01b08615eda5d254c",
          "file": "tests/ui/district-delegates.spec.ts",
          "line": 7,
          "column": 7
        },
        {
          "title": "VI delegate district index link serves the graph-current page",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 7,
                  "parallelIndex": 7,
                  "status": "passed",
                  "duration": 412,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:10.306Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/district-delegates-VI-dele-79bf0-rves-the-graph-current-page-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "878bfbb19a6f264d20bb-2fe54aeca2cca08a45b1",
          "file": "tests/ui/district-delegates.spec.ts",
          "line": 7,
          "column": 7
        }
      ]
    },
    {
      "title": "tests/ui/entities.spec.ts",
      "file": "tests/ui/entities.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "us.elect.info entity sections",
          "file": "tests/ui/entities.spec.ts",
          "line": 13,
          "column": 6,
          "specs": [
            {
              "title": "candidates section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 3009,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] candidates section - index and random pages: /politicians/a0a0c2d7-d390-576a-065b-215948e1408b/, /politicians/2a7de561-5356-faa0-5052-63aed4ddcd27/, /politicians/ffd8f1ef-a47c-ad4f-d23a-b4bbc0b92fd3/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.351Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-54da5-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-27dbb3fc8778de5a92d1",
              "file": "tests/ui/entities.spec.ts",
              "line": 15,
              "column": 7
            },
            {
              "title": "committees section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 1060,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] committees section - index and random pages: /committees/21851d9c-ee74-f5e3-f71b-7c4bd398926f/, /committees/d25fbf59-05dc-bcff-e907-ecc47fb1f775/, /committees/6551da7f-f6d5-f838-589c-4c7e1dcda74c/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.580Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-9ea35-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-e974c5cf3a3265485947",
              "file": "tests/ui/entities.spec.ts",
              "line": 36,
              "column": 7
            },
            {
              "title": "parties section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 501,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] parties section - index and random pages: /parties/c6279a7f-3917-7b3d-d12a-fb889cd1f482/, /parties/d5722feb-e0d6-20f7-d53a-a45c5f602cc7/, /parties/e17300bf-3fec-5895-c05e-461443a32a60/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:12.655Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-de35a-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-10bf5643f2069b30d1e6",
              "file": "tests/ui/entities.spec.ts",
              "line": 57,
              "column": 7
            },
            {
              "title": "offices section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 375,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] offices section - index and random pages: /offices/91f59a74-fdb0-4ab4-dfd5-c2c40cad277b/, /offices/b9c15a02-2752-7905-5fef-cf9fcc262b56/, /offices/62ce3c4e-7e94-b5fb-1d13-1adc42c33a37/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.166Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-430dd-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-57c837c2cf446c42d558",
              "file": "tests/ui/entities.spec.ts",
              "line": 78,
              "column": 7
            },
            {
              "title": "districts section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 699,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] districts section - index and random pages: /districts/ca-18/, /districts/ca-14/, /districts/ca-13/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.550Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-f70f2-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-0603cede9ea0f43c33a6",
              "file": "tests/ui/entities.spec.ts",
              "line": 99,
              "column": 7
            },
            {
              "title": "states section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 1185,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] states section - index and random pages: /states/az/, /states/in/, /states/ca/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.261Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-02398-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-859b9ebc18597fc7cd99",
              "file": "tests/ui/entities.spec.ts",
              "line": 135,
              "column": 7
            },
            {
              "title": "elections section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 657,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] elections section - index and random pages: /elections/2014/, /elections/2020/, /elections/2008/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.457Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-8bb93-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-b8ea6926bb024b138407",
              "file": "tests/ui/entities.spec.ts",
              "line": 164,
              "column": 7
            }
          ]
        },
        {
          "title": "office profile - dynamic candidates",
          "file": "tests/ui/entities.spec.ts",
          "line": 186,
          "column": 6,
          "specs": [
            {
              "title": "office profile loads candidates filtered to office",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 229,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:16.126Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-office-profile----cd2a4-ndidates-filtered-to-office-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-754cb9c02b5294c0dd5c",
              "file": "tests/ui/entities.spec.ts",
              "line": 190,
              "column": 7
            },
            {
              "title": "office profile candidates sorted by total contributions descending",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 164,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:16.368Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-office-profile----9afcc-al-contributions-descending-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-6e65f0bd8866689ca94b",
              "file": "tests/ui/entities.spec.ts",
              "line": 212,
              "column": 7
            },
            {
              "title": "office profile renders candidate results in UI",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 158,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:16.546Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-office-profile----0556c-ers-candidate-results-in-UI-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-138301d01ff79967b9fa",
              "file": "tests/ui/entities.spec.ts",
              "line": 240,
              "column": 7
            }
          ]
        },
        {
          "title": "state profile - dynamic candidates",
          "file": "tests/ui/entities.spec.ts",
          "line": 255,
          "column": 6,
          "specs": [
            {
              "title": "state profile loads candidates filtered to state",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 272,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:16.716Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-state-profile---d-e1647-andidates-filtered-to-state-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-23323ef80148534fb960",
              "file": "tests/ui/entities.spec.ts",
              "line": 258,
              "column": 7
            },
            {
              "title": "state profile candidates sorted by total contributions descending",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 402,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:17.002Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-state-profile---d-b2908-al-contributions-descending-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-631c42730cdb715cf791",
              "file": "tests/ui/entities.spec.ts",
              "line": 277,
              "column": 7
            }
          ]
        },
        {
          "title": "district profile - dynamic candidates",
          "file": "tests/ui/entities.spec.ts",
          "line": 305,
          "column": 6,
          "specs": [
            {
              "title": "district profile loads candidates filtered to district",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 179,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:17.418Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-district-profile--c0956-idates-filtered-to-district-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-775cbc1b1c48b28b5324",
              "file": "tests/ui/entities.spec.ts",
              "line": 308,
              "column": 7
            },
            {
              "title": "district profile candidates sorted by total contributions descending",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 198,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:17.611Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-district-profile--1321e-al-contributions-descending-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-f00bfce3824e336086aa",
              "file": "tests/ui/entities.spec.ts",
              "line": 330,
              "column": 7
            }
          ]
        },
        {
          "title": "entity browse sort order - quantitative fields",
          "file": "tests/ui/entities.spec.ts",
          "line": 373,
          "column": 6,
          "specs": [
            {
              "title": "candidates sorted by total contributions descending",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 166,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:17.821Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-5c84b-al-contributions-descending-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-e799dea180dde7b078da",
              "file": "tests/ui/entities.spec.ts",
              "line": 375,
              "column": 7
            },
            {
              "title": "committees sorted by total receipts descending",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 256,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:18.001Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-e4166-y-total-receipts-descending-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-717048594564fd91aeee",
              "file": "tests/ui/entities.spec.ts",
              "line": 383,
              "column": 7
            },
            {
              "title": "vendors sorted by total received descending",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 3825,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:18.271Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-fb9d9-y-total-received-descending-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-3102f0e0d367177cc559",
              "file": "tests/ui/entities.spec.ts",
              "line": 391,
              "column": 7
            },
            {
              "title": "individuals sorted by total contributions descending",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "failed",
                      "duration": 15132,
                      "error": {
                        "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"",
                        "stack": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:360:32)\n    at /app/tests/ui/entities.spec.ts:401:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 360
                        },
                        "snippet": "\u001b[0m \u001b[90m 358 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 359 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m getBrowseScores(page\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mPage\u001b[39m\u001b[33m,\u001b[39m url\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mnumber\u001b[39m[]\u001b[33m>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 360 |\u001b[39m   \u001b[36mconst\u001b[39m responsePromise \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mwaitForResponse(resp \u001b[33m=>\u001b[39m {\n \u001b[90m     |\u001b[39m                                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 361 |\u001b[39m     \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39mresp\u001b[33m.\u001b[39murl()\u001b[33m.\u001b[39mincludes(\u001b[32m'/api/graphql'\u001b[39m)) \u001b[36mreturn\u001b[39m \u001b[36mfalse\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 362 |\u001b[39m     \u001b[36mif\u001b[39m (resp\u001b[33m.\u001b[39mrequest()\u001b[33m.\u001b[39mmethod() \u001b[33m!==\u001b[39m \u001b[32m'POST'\u001b[39m) \u001b[36mreturn\u001b[39m \u001b[36mfalse\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 363 |\u001b[39m     \u001b[36mconst\u001b[39m body \u001b[33m=\u001b[39m resp\u001b[33m.\u001b[39mrequest()\u001b[33m.\u001b[39mpostData() \u001b[33m||\u001b[39m \u001b[32m''\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 32,
                            "line": 360
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  358 | // Helper to intercept browseEntities GraphQL response and extract score values\n  359 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 360 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  361 |     if (!resp.url().includes('/api/graphql')) return false;\n  362 |     if (resp.request().method() !== 'POST') return false;\n  363 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:360:32)\n    at /app/tests/ui/entities.spec.ts:401:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:22.113Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-9b1cc-al-contributions-descending-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-9b1cc-al-contributions-descending-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 360
                      }
                    },
                    {
                      "workerIndex": 85,
                      "parallelIndex": 4,
                      "status": "failed",
                      "duration": 15364,
                      "error": {
                        "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"",
                        "stack": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:360:32)\n    at /app/tests/ui/entities.spec.ts:401:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 360
                        },
                        "snippet": "\u001b[0m \u001b[90m 358 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 359 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m getBrowseScores(page\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mPage\u001b[39m\u001b[33m,\u001b[39m url\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mnumber\u001b[39m[]\u001b[33m>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 360 |\u001b[39m   \u001b[36mconst\u001b[39m responsePromise \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mwaitForResponse(resp \u001b[33m=>\u001b[39m {\n \u001b[90m     |\u001b[39m                                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 361 |\u001b[39m     \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39mresp\u001b[33m.\u001b[39murl()\u001b[33m.\u001b[39mincludes(\u001b[32m'/api/graphql'\u001b[39m)) \u001b[36mreturn\u001b[39m \u001b[36mfalse\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 362 |\u001b[39m     \u001b[36mif\u001b[39m (resp\u001b[33m.\u001b[39mrequest()\u001b[33m.\u001b[39mmethod() \u001b[33m!==\u001b[39m \u001b[32m'POST'\u001b[39m) \u001b[36mreturn\u001b[39m \u001b[36mfalse\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 363 |\u001b[39m     \u001b[36mconst\u001b[39m body \u001b[33m=\u001b[39m resp\u001b[33m.\u001b[39mrequest()\u001b[33m.\u001b[39mpostData() \u001b[33m||\u001b[39m \u001b[32m''\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 32,
                            "line": 360
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  358 | // Helper to intercept browseEntities GraphQL response and extract score values\n  359 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 360 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  361 |     if (!resp.url().includes('/api/graphql')) return false;\n  362 |     if (resp.request().method() !== 'POST') return false;\n  363 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:360:32)\n    at /app/tests/ui/entities.spec.ts:401:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:37.754Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-9b1cc-al-contributions-descending-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-9b1cc-al-contributions-descending-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-9b1cc-al-contributions-descending-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-9b1cc-al-contributions-descending-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 360
                      }
                    },
                    {
                      "workerIndex": 101,
                      "parallelIndex": 4,
                      "status": "failed",
                      "duration": 15145,
                      "error": {
                        "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"",
                        "stack": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:360:32)\n    at /app/tests/ui/entities.spec.ts:401:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 360
                        },
                        "snippet": "\u001b[0m \u001b[90m 358 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 359 |\u001b[39m \u001b[36masync\u001b[39m \u001b[36mfunction\u001b[39m getBrowseScores(page\u001b[33m:\u001b[39m \u001b[36mimport\u001b[39m(\u001b[32m'@playwright/test'\u001b[39m)\u001b[33m.\u001b[39m\u001b[33mPage\u001b[39m\u001b[33m,\u001b[39m url\u001b[33m:\u001b[39m string)\u001b[33m:\u001b[39m \u001b[33mPromise\u001b[39m\u001b[33m<\u001b[39m\u001b[33mnumber\u001b[39m[]\u001b[33m>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 360 |\u001b[39m   \u001b[36mconst\u001b[39m responsePromise \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mwaitForResponse(resp \u001b[33m=>\u001b[39m {\n \u001b[90m     |\u001b[39m                                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 361 |\u001b[39m     \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39mresp\u001b[33m.\u001b[39murl()\u001b[33m.\u001b[39mincludes(\u001b[32m'/api/graphql'\u001b[39m)) \u001b[36mreturn\u001b[39m \u001b[36mfalse\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 362 |\u001b[39m     \u001b[36mif\u001b[39m (resp\u001b[33m.\u001b[39mrequest()\u001b[33m.\u001b[39mmethod() \u001b[33m!==\u001b[39m \u001b[32m'POST'\u001b[39m) \u001b[36mreturn\u001b[39m \u001b[36mfalse\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 363 |\u001b[39m     \u001b[36mconst\u001b[39m body \u001b[33m=\u001b[39m resp\u001b[33m.\u001b[39mrequest()\u001b[33m.\u001b[39mpostData() \u001b[33m||\u001b[39m \u001b[32m''\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 32,
                            "line": 360
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  358 | // Helper to intercept browseEntities GraphQL response and extract score values\n  359 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 360 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  361 |     if (!resp.url().includes('/api/graphql')) return false;\n  362 |     if (resp.request().method() !== 'POST') return false;\n  363 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:360:32)\n    at /app/tests/ui/entities.spec.ts:401:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:53.902Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-9b1cc-al-contributions-descending-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-9b1cc-al-contributions-descending-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 360
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-4172cf90fdc39f1e8b04",
              "file": "tests/ui/entities.spec.ts",
              "line": 399,
              "column": 7
            },
            {
              "title": "employers sorted by total employee contributions descending",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 105,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 206,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:09.688Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-entity-browse-sor-2868b-ee-contributions-descending-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-2ca76e131a1ccafc504c",
              "file": "tests/ui/entities.spec.ts",
              "line": 410,
              "column": 7
            }
          ]
        },
        {
          "title": "us.elect.info entity sections - additional index + detail",
          "file": "tests/ui/entities.spec.ts",
          "line": 419,
          "column": 6,
          "specs": [
            {
              "title": "employers section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 105,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 333,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] employers section - index and random pages: /employers/f3b91900-a6f1-5ef3-e977-d11bd6644234/, /employers/9ba78b2b-197c-2ec7-bb27-baeb24ddf906/, /employers/32b64939-633b-c322-d952-efd27ff31302/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:09.993Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-095ba-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-b6b14a576f48b71af5e5",
              "file": "tests/ui/entities.spec.ts",
              "line": 421,
              "column": 7
            },
            {
              "title": "vendors section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 105,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 277,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] vendors section - index and random pages: /vendors/135eef71-360a-364f-ea1c-f0b96b74df60/, /vendors/e3d3e242-8b89-e544-794b-956b836d57be/, /vendors/b4933d51-1079-e820-025f-362e332d013f/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:10.336Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-29463-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-586eade1e031f2078f6b",
              "file": "tests/ui/entities.spec.ts",
              "line": 441,
              "column": 7
            },
            {
              "title": "counties section - index and random detail pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 105,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 840,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] counties section - index and random detail pages: /counties/6254776a-c1b1-aebf-4870-8c7629f35e49/, /counties/ab358e20-5dce-65f3-9404-daf64e539a0d/, /counties/7fda0838-d036-57a8-7699-23fff9593a3b/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:10.627Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-a02d5-dex-and-random-detail-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-6889bbe45fe800e5d9be",
              "file": "tests/ui/entities.spec.ts",
              "line": 461,
              "column": 7
            },
            {
              "title": "places section - index and random detail pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 105,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 1367,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] places section - index and random detail pages: /places/0781f7e2-811c-d063-8666-4219db29a901/, /places/9e7e7a02-7e3c-5863-ff32-84a90fea2f5e/, /places/b894f09f-a571-04e0-8b38-6d25f085fa42/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:11.482Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-45389-dex-and-random-detail-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-c9580fbe75551276dc4a",
              "file": "tests/ui/entities.spec.ts",
              "line": 489,
              "column": 7
            },
            {
              "title": "postalcodes section - index and random detail pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 105,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 753,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] postalcodes section - index and random detail pages: /postalcodes/33970078-6c2c-ac1c-ddd1-98a0123d1ebb/, /postalcodes/2565adee-b1c6-dce6-792f-a647ef43c8e1/, /postalcodes/7035aefd-88f1-258f-4cf4-65a9c3981093/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:12.863Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-7c577-dex-and-random-detail-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-7378845a8b20f0ca8dc7",
              "file": "tests/ui/entities.spec.ts",
              "line": 517,
              "column": 7
            },
            {
              "title": "precincts section - map view and state filter",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 105,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 942,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] precincts section - map view and state filter: /precincts/dac9ac7c-d757-0664-8c90-67596cc73be2/, /precincts/0647581d-f8dc-5dd8-6ebf-a619cc258896/, /precincts/8e24af67-1344-9629-c244-ead7124ff0b1/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:13.632Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-94b96---map-view-and-state-filter-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-b994931c7f61cea69263",
              "file": "tests/ui/entities.spec.ts",
              "line": 545,
              "column": 7
            },
            {
              "title": "tracts section - state/county filter and random detail pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 105,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 1480,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] tracts section - state/county filter and random detail pages: /tracts/f5b910d5-3f74-c6af-933d-c8491f680bf8/, /tracts/600448f2-7a2e-cce1-9624-63645e8a33e9/, /tracts/34aa88f8-957f-207b-713f-22b6e0d82915/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:14.590Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-bf75c-ter-and-random-detail-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "e590b0e25242679a26f1-073b2eb60264357a1ca9",
              "file": "tests/ui/entities.spec.ts",
              "line": 598,
              "column": 7
            }
          ]
        },
        {
          "title": "us.elect.info entity sections - individuals (premium)",
          "file": "tests/ui/entities.spec.ts",
          "line": 651,
          "column": 6,
          "specs": [
            {
              "title": "individuals section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Requires PLAYWRIGHT_AUTH_USER/PLAYWRIGHT_AUTH_PASS",
                      "location": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "line": 660,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 105,
                      "parallelIndex": 4,
                      "status": "skipped",
                      "duration": 61,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:16.084Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Requires PLAYWRIGHT_AUTH_USER/PLAYWRIGHT_AUTH_PASS",
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "line": 660,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entities-us-elect-info-ent-7f2e9-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "e590b0e25242679a26f1-fa85143bab060214a738",
              "file": "tests/ui/entities.spec.ts",
              "line": 659,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/entity-filters.spec.ts",
      "file": "tests/ui/entity-filters.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "individual donor filters",
          "file": "tests/ui/entity-filters.spec.ts",
          "line": 20,
          "column": 6,
          "specs": [
            {
              "title": "state, cycle, lifetime total and lean narrow the list and land in the URL",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "timedOut",
                      "duration": 30091,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-filters.spec.ts",
                            "column": 35,
                            "line": 32
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  30 |     await page.goto('/individuals/');\n  31 |     const results = page.locator('.entity-search-result');\n> 32 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                   ^\n  33 |\n  34 |     await page.selectOption('#entity-filter-state', 'TX');\n  35 |     await expect(results.first()).toContainText(', TX', { timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entity-filters.spec.ts:32:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.414Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--168cd-he-list-and-land-in-the-URL-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--168cd-he-list-and-land-in-the-URL-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 87,
                      "parallelIndex": 8,
                      "status": "timedOut",
                      "duration": 30292,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-filters.spec.ts",
                            "column": 35,
                            "line": 32
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  30 |     await page.goto('/individuals/');\n  31 |     const results = page.locator('.entity-search-result');\n> 32 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                   ^\n  33 |\n  34 |     await page.selectOption('#entity-filter-state', 'TX');\n  35 |     await expect(results.first()).toContainText(', TX', { timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entity-filters.spec.ts:32:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:39.129Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--168cd-he-list-and-land-in-the-URL-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--168cd-he-list-and-land-in-the-URL-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--168cd-he-list-and-land-in-the-URL-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--168cd-he-list-and-land-in-the-URL-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 106,
                      "parallelIndex": 7,
                      "status": "timedOut",
                      "duration": 30103,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-filters.spec.ts",
                            "column": 35,
                            "line": 32
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  30 |     await page.goto('/individuals/');\n  31 |     const results = page.locator('.entity-search-result');\n> 32 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                   ^\n  33 |\n  34 |     await page.selectOption('#entity-filter-state', 'TX');\n  35 |     await expect(results.first()).toContainText(', TX', { timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entity-filters.spec.ts:32:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:30:10.161Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--168cd-he-list-and-land-in-the-URL-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--168cd-he-list-and-land-in-the-URL-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "589b4d2d59414df6d16a-86f7e52d8ac4c2add6d3",
              "file": "tests/ui/entity-filters.spec.ts",
              "line": 29,
              "column": 7
            },
            {
              "title": "text filters: employer and ZIP prefix",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 114,
                      "parallelIndex": 5,
                      "status": "timedOut",
                      "duration": 30088,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-filters.spec.ts",
                            "column": 35,
                            "line": 53
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  51 |     await page.goto('/individuals/?f_employer=google&f_zip=940');\n  52 |     const results = page.locator('.entity-search-result');\n> 53 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                   ^\n  54 |     await expect(results.first()).toContainText(/GOOGLE/i);\n  55 |     await expect(page.locator('#entity-filter-employer')).toHaveValue('google');\n  56 |   });\n    at /app/tests/ui/entity-filters.spec.ts:53:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:40.838Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--88dba-ers-employer-and-ZIP-prefix-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--88dba-ers-employer-and-ZIP-prefix-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 123,
                      "parallelIndex": 4,
                      "status": "timedOut",
                      "duration": 30333,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-filters.spec.ts",
                            "column": 35,
                            "line": 53
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  51 |     await page.goto('/individuals/?f_employer=google&f_zip=940');\n  52 |     const results = page.locator('.entity-search-result');\n> 53 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                   ^\n  54 |     await expect(results.first()).toContainText(/GOOGLE/i);\n  55 |     await expect(page.locator('#entity-filter-employer')).toHaveValue('google');\n  56 |   });\n    at /app/tests/ui/entity-filters.spec.ts:53:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:31:11.503Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--88dba-ers-employer-and-ZIP-prefix-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--88dba-ers-employer-and-ZIP-prefix-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--88dba-ers-employer-and-ZIP-prefix-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--88dba-ers-employer-and-ZIP-prefix-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 129,
                      "parallelIndex": 4,
                      "status": "timedOut",
                      "duration": 30087,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-filters.spec.ts",
                            "column": 35,
                            "line": 53
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  51 |     await page.goto('/individuals/?f_employer=google&f_zip=940');\n  52 |     const results = page.locator('.entity-search-result');\n> 53 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                   ^\n  54 |     await expect(results.first()).toContainText(/GOOGLE/i);\n  55 |     await expect(page.locator('#entity-filter-employer')).toHaveValue('google');\n  56 |   });\n    at /app/tests/ui/entity-filters.spec.ts:53:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:31:42.676Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--88dba-ers-employer-and-ZIP-prefix-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-filters-individual--88dba-ers-employer-and-ZIP-prefix-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "589b4d2d59414df6d16a-d602b2d29045026bf1c1",
              "file": "tests/ui/entity-filters.spec.ts",
              "line": 50,
              "column": 7
            },
            {
              "title": "an unknown filter field is refused by the API",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 133,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 123,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:32:13.390Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "589b4d2d59414df6d16a-2f26c7bcfc0fe5f858da",
              "file": "tests/ui/entity-filters.spec.ts",
              "line": 58,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/entity-graph.spec.ts",
      "file": "tests/ui/entity-graph.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "entity-graph script injection",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 26,
          "column": 6,
          "specs": [
            {
              "title": "injected once on /committees/a75a9110-f1db-a945-39a8-7503ed3c04da/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 163,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.374Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-29e66cb8f40124191f24",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 28,
              "column": 9
            },
            {
              "title": "injected once on /candidates/a8897257-430c-2bf3-4498-349021b09ca3/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 55,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.608Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-8caee27d666b889f629d",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 28,
              "column": 9
            },
            {
              "title": "a geography page names its graph node: /states/032f8d61-f554-f435-2a6d-50b3c8cc01d7/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 110,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.702Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-497a9a5f2e51230029f1",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 35,
              "column": 7
            },
            {
              "title": "not injected on /elections/2024/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 179,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.828Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-a1eb6278fed6d4b5614b",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 44,
              "column": 9
            },
            {
              "title": "not injected on /offices/president/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 47,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.023Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-b3bac75bfbf090c5eca2",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 44,
              "column": 9
            }
          ]
        },
        {
          "title": "entityGraph API",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 52,
          "column": 6,
          "specs": [
            {
              "title": "C00010603: neighbours without individuals, money edges with amounts",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 1127,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.091Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-b3fdec8c25bff91f5112",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 54,
              "column": 9
            },
            {
              "title": "P00009423: neighbours without individuals, money edges with amounts",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 4768,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.241Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-dd19f11790f289a6f255",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 54,
              "column": 9
            }
          ]
        },
        {
          "title": "nodeGraph API",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 88,
          "column": 6,
          "specs": [
            {
              "title": "a county: neighbours drawn, blocks counted, no individuals",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 627,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.026Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-6cf3b7da2391e0b9f756",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 89,
              "column": 7
            },
            {
              "title": "an unknown label is null",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 27,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.669Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-d4d728dc8f6243f72793",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 103,
              "column": 7
            },
            {
              "title": "voterGraph is refused on the public endpoint",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 26,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.716Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-4a33ed5ca2bf00946a08",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 109,
              "column": 7
            }
          ]
        },
        {
          "title": "entity-graph pop-over",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 133,
          "column": 6,
          "specs": [
            {
              "title": "opens and draws on /committees/a75a9110-f1db-a945-39a8-7503ed3c04da/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 823,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.757Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-graph-entity-graph--d0dba-1db-a945-39a8-7503ed3c04da--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-759bfd2643a325762edb",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 135,
              "column": 9
            },
            {
              "title": "opens and draws on /candidates/a8897257-430c-2bf3-4498-349021b09ca3/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 916,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:16.644Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-graph-entity-graph--c0375-30c-2bf3-4498-349021b09ca3--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-d147fc999d701bc54cf5",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 135,
              "column": 9
            }
          ]
        },
        {
          "title": "graph pop-over on geography and leaf pages",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 159,
          "column": 6,
          "specs": [
            {
              "title": "opens and draws on /states/032f8d61-f554-f435-2a6d-50b3c8cc01d7/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 530,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:17.576Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-graph-graph-pop-ove-e623a-554-f435-2a6d-50b3c8cc01d7--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-4b62c7bc3a5bf61d49f1",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 161,
              "column": 9
            },
            {
              "title": "opens and draws on /tracts/0078f0bb-c0ad-4639-13fc-a29547adddac/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 1044,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:18.121Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-graph-graph-pop-ove-c4836-0ad-4639-13fc-a29547adddac--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-92c7a00e30ecee37a7cd",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 161,
              "column": 9
            }
          ]
        },
        {
          "title": "expanding the graph one hop at a time",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 185,
          "column": 6,
          "specs": [
            {
              "title": "a county in /states/032f8d61-f554-f435-2a6d-50b3c8cc01d7/'s graph expands into the drawing",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 728,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:19.179Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-graph-expanding-the-28b41-ph-expands-into-the-drawing-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-79a77bf4fc790cdade5c",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 186,
              "column": 7
            }
          ]
        },
        {
          "title": "entity-graph without accounts",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 217,
          "column": 6,
          "specs": [
            {
              "title": "a host without Authentik keeps the header Graph button",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 345,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:19.919Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-graph-entity-graph--f23c6-eps-the-header-Graph-button-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-e685eda07b21192e4f91",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 218,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/entity-suggest.spec.ts",
      "file": "tests/ui/entity-suggest.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "entity type-ahead (sites#392)",
          "file": "tests/ui/entity-suggest.spec.ts",
          "line": 37,
          "column": 6,
          "specs": [
            {
              "title": "waits for two characters, debounces, displays context and uses the Candidate/cycle contract",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 1492,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.396Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-31348-he-Candidate-cycle-contract-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-950ba490faaf52c7f89e",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 38,
              "column": 7
            },
            {
              "title": "candidates scopes suggestions to Candidate, without a cycle by default",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 511,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.080Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-44f35--without-a-cycle-by-default-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-7a8fa78a152c4ed46f29",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 65,
              "column": 9
            },
            {
              "title": "committees scopes suggestions to Committee, without a cycle by default",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 474,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.609Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-3c068--without-a-cycle-by-default-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-be8d4922b513b25d13ff",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 65,
              "column": 9
            },
            {
              "title": "parties scopes suggestions to Party, without a cycle by default",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 443,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.100Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-5fe7c--without-a-cycle-by-default-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-950f4122cdc1954ce13f",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 65,
              "column": 9
            },
            {
              "title": "keyboard wraps, Escape dismisses, and selected Enter opens the published canonical on the same host",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 821,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.558Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-6e9dd--canonical-on-the-same-host-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-aa5015c987e3cd4772ea",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 74,
              "column": 7
            },
            {
              "title": "pointer opens committees via UUID fallback if canonical lookup is unavailable",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 562,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:12.392Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-16c45-nical-lookup-is-unavailable-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-98e7d549fdfbf97fe40b",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 102,
              "column": 9
            },
            {
              "title": "pointer opens parties via UUID fallback if canonical lookup is unavailable",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 548,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:12.966Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-d2e78-nical-lookup-is-unavailable-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-957edcffd9c2277ba3cd",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 102,
              "column": 9
            },
            {
              "title": "submitted search still displays returned rows with total=0 (ok)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 448,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.531Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-766c6-urned-rows-with-total-0-ok--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-80d4047fd0a5dde972cd",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 118,
              "column": 9
            },
            {
              "title": "submitted search still displays returned rows with total=0 (http-error)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 484,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.994Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-6e15d-ws-with-total-0-http-error--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-39d81cc47e4aab3f6a60",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 118,
              "column": 9
            },
            {
              "title": "submitted search still displays returned rows with total=0 (graphql-error)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 487,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.489Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-b4c7d-with-total-0-graphql-error--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-687b0cc8a228a1273510",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 118,
              "column": 9
            },
            {
              "title": "empty suggestions keep explicit Search and Show All working",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 586,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.987Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-47298-Search-and-Show-All-working-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-c8d158429afe7fe17f60",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 136,
              "column": 7
            },
            {
              "title": "ignores late replies after a new prefix, dismissal, or clearing below the minimum",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 1549,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.585Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-42169--clearing-below-the-minimum-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-1c57a12821077d85d1e1",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 148,
              "column": 7
            },
            {
              "title": "does not fetch while composing and fits the mobile search form",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 839,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:17.687Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-e3686-fits-the-mobile-search-form-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "50d55db3dfe905c8dee9-f522b655170ed1aa18c2",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 187,
              "column": 7
            }
          ],
          "suites": [
            {
              "title": "touch selection",
              "file": "tests/ui/entity-suggest.spec.ts",
              "line": 172,
              "column": 8,
              "specs": [
                {
                  "title": "tap opens an option without blur removing it first",
                  "ok": true,
                  "tags": [],
                  "tests": [
                    {
                      "timeout": 30000,
                      "annotations": [],
                      "expectedStatus": "passed",
                      "projectId": "ui",
                      "projectName": "ui",
                      "results": [
                        {
                          "workerIndex": 11,
                          "parallelIndex": 11,
                          "status": "passed",
                          "duration": 531,
                          "errors": [],
                          "stdout": [],
                          "stderr": [],
                          "retry": 0,
                          "startTime": "2026-10-24T00:29:17.144Z",
                          "annotations": [],
                          "attachments": [
                            {
                              "name": "screenshot",
                              "contentType": "image/png",
                              "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/entity-suggest-entity-type-540f8-hout-blur-removing-it-first-ui/test-finished-1.png"
                            }
                          ]
                        }
                      ],
                      "status": "expected"
                    }
                  ],
                  "id": "50d55db3dfe905c8dee9-eb70e4228570fd6a9954",
                  "file": "tests/ui/entity-suggest.spec.ts",
                  "line": 174,
                  "column": 9
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/follow-control.spec.ts",
      "file": "tests/ui/follow-control.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "profile Follow (sites#435)",
          "file": "tests/ui/follow-control.spec.ts",
          "line": 58,
          "column": 6,
          "specs": [
            {
              "title": "profile pages carry their entity on <body>",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 12,
                      "status": "passed",
                      "duration": 270,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.427Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6eae7daf7bd84ee8aac1-c14b99e50a9e542b4425",
              "file": "tests/ui/follow-control.spec.ts",
              "line": 59,
              "column": 7
            },
            {
              "title": "signed in: Follow toggles to Following ✓ and back through account-api",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 12,
                      "status": "passed",
                      "duration": 758,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.761Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/follow-control-profile-Fol-188e2-nd-back-through-account-api-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6eae7daf7bd84ee8aac1-d7c093bb06d03d102737",
              "file": "tests/ui/follow-control.spec.ts",
              "line": 69,
              "column": 7
            },
            {
              "title": "signed in and already following: Following ✓",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 12,
                      "status": "passed",
                      "duration": 502,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.589Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/follow-control-profile-Fol-622d5-ready-following-Following-✓-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6eae7daf7bd84ee8aac1-bc1416243e95ca446345",
              "file": "tests/ui/follow-control.spec.ts",
              "line": 92,
              "column": 7
            },
            {
              "title": "News on elect.news opens the filtered feed in a new tab",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 12,
                      "status": "passed",
                      "duration": 1064,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.111Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/follow-control-profile-Fol-bf1c7--filtered-feed-in-a-new-tab-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6eae7daf7bd84ee8aac1-fa5f62994055d402b129",
              "file": "tests/ui/follow-control.spec.ts",
              "line": 99,
              "column": 7
            },
            {
              "title": "signed out: Follow opens the sign-in panel, and the follow completes after sign-in",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 12,
                      "status": "passed",
                      "duration": 579,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.192Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/follow-control-profile-Fol-14487-low-completes-after-sign-in-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6eae7daf7bd84ee8aac1-91572a7defe02657ddb4",
              "file": "tests/ui/follow-control.spec.ts",
              "line": 110,
              "column": 7
            },
            {
              "title": "no control on a profile without news",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 12,
                      "status": "passed",
                      "duration": 772,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.788Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/follow-control-profile-Fol-e0176-l-on-a-profile-without-news-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6eae7daf7bd84ee8aac1-f86b5cc63fbd824bd49b",
              "file": "tests/ui/follow-control.spec.ts",
              "line": 127,
              "column": 7
            }
          ]
        },
        {
          "title": "profile Follow, really signed in (sites#435)",
          "file": "tests/ui/follow-control.spec.ts",
          "line": 138,
          "column": 6,
          "specs": [
            {
              "title": "follow and unfollow through account-api as the signed-in visitor",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "needs a really signed-in visitor (preview front door as preview-e2e)",
                      "location": {
                        "file": "/app/tests/ui/follow-control.spec.ts",
                        "line": 142,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 12,
                      "status": "skipped",
                      "duration": 393,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:12.576Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "needs a really signed-in visitor (preview front door as preview-e2e)",
                          "location": {
                            "file": "/app/tests/ui/follow-control.spec.ts",
                            "line": 142,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/follow-control-profile-Fol-2e464-pi-as-the-signed-in-visitor-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "6eae7daf7bd84ee8aac1-814877e5e725711b581b",
              "file": "tests/ui/follow-control.spec.ts",
              "line": 139,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/graph-control.spec.ts",
      "file": "tests/ui/graph-control.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "graph control everywhere (sites#355)",
          "file": "tests/ui/graph-control.spec.ts",
          "line": 16,
          "column": 6,
          "specs": [
            {
              "title": "a member sees Graph on / and gets the hint",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 13,
                      "status": "passed",
                      "duration": 681,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.443Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/graph-control-graph-contro-0bc4d--Graph-on-and-gets-the-hint-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "0db1e5a4a35d5c975675-c9c4cb661d574f9d01c0",
              "file": "tests/ui/graph-control.spec.ts",
              "line": 18,
              "column": 9
            },
            {
              "title": "a member sees Graph on /candidates/ and gets the hint",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 13,
                      "status": "passed",
                      "duration": 294,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.284Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/graph-control-graph-contro-1adde-andidates-and-gets-the-hint-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "0db1e5a4a35d5c975675-b68c424c467012fbf13a",
              "file": "tests/ui/graph-control.spec.ts",
              "line": 18,
              "column": 9
            },
            {
              "title": "signed out, the homepage Graph is locked and offers sign-in",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 13,
                      "status": "passed",
                      "duration": 282,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.600Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/graph-control-graph-contro-03882-s-locked-and-offers-sign-in-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "0db1e5a4a35d5c975675-a7d88a9a5ca0bd481c26",
              "file": "tests/ui/graph-control.spec.ts",
              "line": 30,
              "column": 7
            },
            {
              "title": "a committee page keeps one Graph control: the real pop-over",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 13,
                      "status": "passed",
                      "duration": 562,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.898Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/graph-control-graph-contro-91ad1-h-control-the-real-pop-over-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "0db1e5a4a35d5c975675-75db582a009902b0a5ee",
              "file": "tests/ui/graph-control.spec.ts",
              "line": 39,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/identity-bar.spec.ts",
      "file": "tests/ui/identity-bar.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "identity bar (sites#355)",
          "file": "tests/ui/identity-bar.spec.ts",
          "line": 30,
          "column": 6,
          "specs": [
            {
              "title": "spans the page width under the header",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 618,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.420Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--c1b68-page-width-under-the-header-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-9dcbbbb9e824920aea79",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 31,
              "column": 7
            },
            {
              "title": "one row at 1280px: identity and account actions left, controls right",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 355,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.180Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--78b12-actions-left-controls-right-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-160c4c25106888353012",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 40,
              "column": 9
            },
            {
              "title": "one row at 390px: identity and account actions left, controls right",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 312,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.555Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--eb035-actions-left-controls-right-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-0bece716b3f0672b536f",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 40,
              "column": 9
            },
            {
              "title": "one row at 320px: identity and account actions left, controls right",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 290,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.886Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--f3428-actions-left-controls-right-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-689d04705a9b2cc425aa",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 40,
              "column": 9
            },
            {
              "title": "signed out at 1280px: Log in and Create an account are buttons in one row",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 245,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.192Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--6b600-ount-are-buttons-in-one-row-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-e07c8deb6e75a0779103",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 65,
              "column": 9
            },
            {
              "title": "signed out at 390px: Log in and Create an account are buttons in one row",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 239,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.452Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--7dc41-ount-are-buttons-in-one-row-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-e8fd3f0dcb15a84240d1",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 65,
              "column": 9
            },
            {
              "title": "signed out at 320px: Log in and Create an account are buttons in one row",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 207,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.704Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--8918a-ount-are-buttons-in-one-row-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-5da6c1a3ca35936cab4d",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 65,
              "column": 9
            },
            {
              "title": "signed out: controls are shown locked and only offer sign-in",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 250,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.925Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--ee107-cked-and-only-offer-sign-in-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-0d86a4cf589feeeec51e",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 81,
              "column": 7
            },
            {
              "title": "signed in: member controls work; area controls stay locked and offer Request access",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 273,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.188Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--a6c2b-ed-and-offer-Request-access-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-af488c5deb8434e1716f",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 96,
              "column": 7
            },
            {
              "title": "entitled: the area control works",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 231,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.474Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--32980-tled-the-area-control-works-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-60a5cc8118857078ffcb",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 112,
              "column": 7
            },
            {
              "title": "controls registered after the bar rendered appear",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 188,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.718Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/identity-bar-identity-bar--41d5d-ter-the-bar-rendered-appear-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "02f484a7e876cce0644e-c4d66bbb8ebe94ba4b0d",
              "file": "tests/ui/identity-bar.spec.ts",
              "line": 118,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/layout.spec.ts",
      "file": "tests/ui/layout.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "landing page layout",
          "file": "tests/ui/layout.spec.ts",
          "line": 34,
          "column": 6,
          "specs": [
            {
              "title": "/offices/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 397,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.461Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-f9a0f--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-b103aceb46d9e33c607c",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/candidates/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 232,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.007Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-e1535--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-501813caa83ee6ffddae",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/committees/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 216,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.279Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-f8e77--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-de18f184843b0fae568d",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/districts/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 363,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.512Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-35cf0--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-1f26499e48b19f3c5079",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/elections/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 206,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.891Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-95621--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-199799185e5210591ab4",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/employers/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 194,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.116Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-7159b--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-2140f49bb861fe7bbe46",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/individuals/ loads with correct heading",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 15,
                      "status": "failed",
                      "duration": 5537,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    12 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    12 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:38:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 38
                        },
                        "snippet": "\u001b[0m \u001b[90m 36 |\u001b[39m     test(\u001b[32m`${path} loads with correct heading`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 37 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 38 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 39 |\u001b[39m     })\u001b[33m;\u001b[39m\n \u001b[90m 40 |\u001b[39m   }\n \u001b[90m 41 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 38
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    12 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n\n  36 |     test(`${path} loads with correct heading`, async ({ page }) => {\n  37 |       await page.goto(path);\n> 38 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  39 |     });\n  40 |   }\n  41 | });\n    at /app/tests/ui/layout.spec.ts:38:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.327Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-b60e0--loads-with-correct-heading-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-b60e0--loads-with-correct-heading-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 38
                      }
                    },
                    {
                      "workerIndex": 50,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 5752,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    14 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    14 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:38:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 38
                        },
                        "snippet": "\u001b[0m \u001b[90m 36 |\u001b[39m     test(\u001b[32m`${path} loads with correct heading`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 37 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 38 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 39 |\u001b[39m     })\u001b[33m;\u001b[39m\n \u001b[90m 40 |\u001b[39m   }\n \u001b[90m 41 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 38
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    14 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n\n  36 |     test(`${path} loads with correct heading`, async ({ page }) => {\n  37 |       await page.goto(path);\n> 38 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  39 |     });\n  40 |   }\n  41 | });\n    at /app/tests/ui/layout.spec.ts:38:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:16.365Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-b60e0--loads-with-correct-heading-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-b60e0--loads-with-correct-heading-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-b60e0--loads-with-correct-heading-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-b60e0--loads-with-correct-heading-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 38
                      }
                    },
                    {
                      "workerIndex": 60,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 5591,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    12 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    12 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:38:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 38
                        },
                        "snippet": "\u001b[0m \u001b[90m 36 |\u001b[39m     test(\u001b[32m`${path} loads with correct heading`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 37 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 38 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 39 |\u001b[39m     })\u001b[33m;\u001b[39m\n \u001b[90m 40 |\u001b[39m   }\n \u001b[90m 41 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 38
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    12 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n\n  36 |     test(`${path} loads with correct heading`, async ({ page }) => {\n  37 |       await page.goto(path);\n> 38 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  39 |     });\n  40 |   }\n  41 | });\n    at /app/tests/ui/layout.spec.ts:38:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:22.803Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-b60e0--loads-with-correct-heading-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-b60e0--loads-with-correct-heading-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 38
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-a633dc3b7a23c4f18ee7",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/parties/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 70,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 181,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:28.994Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-93081--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-4e481b7b1ad5efb291d8",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/vendors/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 70,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 148,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:29.266Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-3b19b--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-88452699ffd4b556e70b",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/counties/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 70,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 403,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:29.439Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-00485--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-6758f7f476db88956d39",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/places/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 70,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 369,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:29.858Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-places-loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-f549dc77f989ce03913a",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/precincts/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 70,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 360,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:30.239Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-03eaf--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-2b94cf26eef28c61b95a",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/tracts/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 70,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 342,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:30.613Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-tracts-loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-6f56d03ec531675b43bb",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/postalcodes/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 70,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 445,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:30.968Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-2fbed--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-cec77f76cc935aa28244",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/blocks/ loads with correct heading",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 70,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 5481,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    11 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    11 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:38:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 38
                        },
                        "snippet": "\u001b[0m \u001b[90m 36 |\u001b[39m     test(\u001b[32m`${path} loads with correct heading`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 37 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 38 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 39 |\u001b[39m     })\u001b[33m;\u001b[39m\n \u001b[90m 40 |\u001b[39m   }\n \u001b[90m 41 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 38
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    11 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n\n  36 |     test(`${path} loads with correct heading`, async ({ page }) => {\n  37 |       await page.goto(path);\n> 38 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  39 |     });\n  40 |   }\n  41 | });\n    at /app/tests/ui/layout.spec.ts:38:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:31.428Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-blocks-loads-with-correct-heading-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-blocks-loads-with-correct-heading-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 38
                      }
                    },
                    {
                      "workerIndex": 84,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 5812,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    11 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    11 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:38:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 38
                        },
                        "snippet": "\u001b[0m \u001b[90m 36 |\u001b[39m     test(\u001b[32m`${path} loads with correct heading`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 37 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 38 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 39 |\u001b[39m     })\u001b[33m;\u001b[39m\n \u001b[90m 40 |\u001b[39m   }\n \u001b[90m 41 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 38
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    11 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m       - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n\n  36 |     test(`${path} loads with correct heading`, async ({ page }) => {\n  37 |       await page.goto(path);\n> 38 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  39 |     });\n  40 |   }\n  41 | });\n    at /app/tests/ui/layout.spec.ts:38:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:37.437Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-blocks-loads-with-correct-heading-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-blocks-loads-with-correct-heading-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-blocks-loads-with-correct-heading-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-blocks-loads-with-correct-heading-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 38
                      }
                    },
                    {
                      "workerIndex": 95,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 10183,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    8 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    8 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:38:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 38
                        },
                        "snippet": "\u001b[0m \u001b[90m 36 |\u001b[39m     test(\u001b[32m`${path} loads with correct heading`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 37 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 38 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 39 |\u001b[39m     })\u001b[33m;\u001b[39m\n \u001b[90m 40 |\u001b[39m   }\n \u001b[90m 41 |\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 38
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    8 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n\n  36 |     test(`${path} loads with correct heading`, async ({ page }) => {\n  37 |       await page.goto(path);\n> 38 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  39 |     });\n  40 |   }\n  41 | });\n    at /app/tests/ui/layout.spec.ts:38:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:43.972Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-blocks-loads-with-correct-heading-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-blocks-loads-with-correct-heading-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 38
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-c7888d679ec3d65988bb",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/states/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 433,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:54.738Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-states-loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-cb2a9d49b945fcadff5b",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/datasources/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 190,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:55.265Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-d7e7f--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-e15a22bb0b0e0b8702da",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 187,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:55.480Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-landing-page-layout-loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-b3bb4507b2ed87666026",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            }
          ]
        },
        {
          "title": "entity index layout - search UI above results",
          "file": "tests/ui/layout.spec.ts",
          "line": 43,
          "column": 6,
          "specs": [
            {
              "title": "/offices/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 181,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:55.683Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-d0829--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-2f959d27c43f09851847",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/candidates/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 175,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:55.877Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-5cf92--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-00076dbe4f0c22864078",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/committees/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 180,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:56.066Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-f16d0--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-0fe38d5384d0548662ad",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/districts/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 365,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:56.262Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-59044--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-5648e4a82b3c14f4b29a",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/elections/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 157,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:56.641Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-069e9--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-baff7226ae19ee1c41c4",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/employers/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 169,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:56.810Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-0759c--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-f8acbc052c6aa8109879",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/individuals/ has no static search description in main",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 6475,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    8 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    8 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:47:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 47
                        },
                        "snippet": "\u001b[0m \u001b[90m 45 |\u001b[39m     test(\u001b[32m`${path} has no static search description in main`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 46 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 47 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 48 |\u001b[39m\n \u001b[90m 49 |\u001b[39m       \u001b[90m// The <main> element should have no <section> or <p> children\u001b[39m\n \u001b[90m 50 |\u001b[39m       \u001b[90m// (the search UI is injected by JS before <main>, not inside it)\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 47
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    8 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n\n  45 |     test(`${path} has no static search description in main`, async ({ page }) => {\n  46 |       await page.goto(path);\n> 47 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  48 |\n  49 |       // The <main> element should have no <section> or <p> children\n  50 |       // (the search UI is injected by JS before <main>, not inside it)\n    at /app/tests/ui/layout.spec.ts:47:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:56.996Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-37753--search-description-in-main-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-37753--search-description-in-main-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 47
                      }
                    },
                    {
                      "workerIndex": 104,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 8425,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:47:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 47
                        },
                        "snippet": "\u001b[0m \u001b[90m 45 |\u001b[39m     test(\u001b[32m`${path} has no static search description in main`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 46 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 47 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 48 |\u001b[39m\n \u001b[90m 49 |\u001b[39m       \u001b[90m// The <main> element should have no <section> or <p> children\u001b[39m\n \u001b[90m 50 |\u001b[39m       \u001b[90m// (the search UI is injected by JS before <main>, not inside it)\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 47
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\n\n  45 |     test(`${path} has no static search description in main`, async ({ page }) => {\n  46 |       await page.goto(path);\n> 47 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  48 |\n  49 |       // The <main> element should have no <section> or <p> children\n  50 |       // (the search UI is injected by JS before <main>, not inside it)\n    at /app/tests/ui/layout.spec.ts:47:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:30:03.981Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-37753--search-description-in-main-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-37753--search-description-in-main-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-37753--search-description-in-main-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-37753--search-description-in-main-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 47
                      }
                    },
                    {
                      "workerIndex": 107,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 6425,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    7 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    7 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:47:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 47
                        },
                        "snippet": "\u001b[0m \u001b[90m 45 |\u001b[39m     test(\u001b[32m`${path} has no static search description in main`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 46 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 47 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 48 |\u001b[39m\n \u001b[90m 49 |\u001b[39m       \u001b[90m// The <main> element should have no <section> or <p> children\u001b[39m\n \u001b[90m 50 |\u001b[39m       \u001b[90m// (the search UI is injected by JS before <main>, not inside it)\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 47
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Individual/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    7 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n\n  45 |     test(`${path} has no static search description in main`, async ({ page }) => {\n  46 |       await page.goto(path);\n> 47 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  48 |\n  49 |       // The <main> element should have no <section> or <p> children\n  50 |       // (the search UI is injected by JS before <main>, not inside it)\n    at /app/tests/ui/layout.spec.ts:47:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:30:13.141Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-37753--search-description-in-main-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-37753--search-description-in-main-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 47
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-012ad5df38578222c51a",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/parties/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 111,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 209,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:20.178Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-06b7d--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-c3c8681cb3628cf835f3",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/vendors/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 111,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 191,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:20.475Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-0b4b4--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-fdfc262d12f616388ed5",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/counties/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 111,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 376,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:20.686Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-cc2cb--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-fd21bba6e2c81307bfbb",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/places/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 111,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 360,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:21.079Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-03981--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-dc93ee5eb496af9f132d",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/precincts/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 111,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 371,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:21.455Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-b2a82--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-b398a97535a50c3906a3",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/tracts/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 111,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 342,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:21.841Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-819d4--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-f1e37aa61dc45b736499",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/postalcodes/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 111,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 368,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:22.195Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-7b0e8--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-c665f4d02c3670bb60f1",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/blocks/ has no static search description in main",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 111,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 8510,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    7 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    7 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:47:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 47
                        },
                        "snippet": "\u001b[0m \u001b[90m 45 |\u001b[39m     test(\u001b[32m`${path} has no static search description in main`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 46 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 47 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 48 |\u001b[39m\n \u001b[90m 49 |\u001b[39m       \u001b[90m// The <main> element should have no <section> or <p> children\u001b[39m\n \u001b[90m 50 |\u001b[39m       \u001b[90m// (the search UI is injected by JS before <main>, not inside it)\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 47
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    7 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n\n  45 |     test(`${path} has no static search description in main`, async ({ page }) => {\n  46 |       await page.goto(path);\n> 47 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  48 |\n  49 |       // The <main> element should have no <section> or <p> children\n  50 |       // (the search UI is injected by JS before <main>, not inside it)\n    at /app/tests/ui/layout.spec.ts:47:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:22.574Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-3f3cc--search-description-in-main-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-3f3cc--search-description-in-main-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 47
                      }
                    },
                    {
                      "workerIndex": 113,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 9354,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:47:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 47
                        },
                        "snippet": "\u001b[0m \u001b[90m 45 |\u001b[39m     test(\u001b[32m`${path} has no static search description in main`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 46 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 47 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 48 |\u001b[39m\n \u001b[90m 49 |\u001b[39m       \u001b[90m// The <main> element should have no <section> or <p> children\u001b[39m\n \u001b[90m 50 |\u001b[39m       \u001b[90m// (the search UI is injected by JS before <main>, not inside it)\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 47
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nTimeout: 5000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\n\n  45 |     test(`${path} has no static search description in main`, async ({ page }) => {\n  46 |       await page.goto(path);\n> 47 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  48 |\n  49 |       // The <main> element should have no <section> or <p> children\n  50 |       // (the search UI is injected by JS before <main>, not inside it)\n    at /app/tests/ui/layout.spec.ts:47:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:30:31.610Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-3f3cc--search-description-in-main-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-3f3cc--search-description-in-main-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-3f3cc--search-description-in-main-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-3f3cc--search-description-in-main-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 47
                      }
                    },
                    {
                      "workerIndex": 115,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 8923,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    9 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    9 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n    at /app/tests/ui/layout.spec.ts:47:40",
                        "location": {
                          "file": "/app/tests/ui/layout.spec.ts",
                          "column": 40,
                          "line": 47
                        },
                        "snippet": "\u001b[0m \u001b[90m 45 |\u001b[39m     test(\u001b[32m`${path} has no static search description in main`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 46 |\u001b[39m       \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 47 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(heading)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 48 |\u001b[39m\n \u001b[90m 49 |\u001b[39m       \u001b[90m// The <main> element should have no <section> or <p> children\u001b[39m\n \u001b[90m 50 |\u001b[39m       \u001b[90m// (the search UI is injected by JS before <main>, not inside it)\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/layout.spec.ts",
                            "column": 40,
                            "line": 47
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('h1')\nTimeout: 5000ms\nExpected pattern: \u001b[32m/Blocks/i\u001b[39m\nReceived string:  \u001b[31m\"\u001b[39m\n\u001b[31m                Sign in to elect.info\u001b[39m\n\u001b[31m            \"\u001b[39m\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('h1') with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('h1')\u001b[22m\n\u001b[2m    9 × locator resolved to <h1 class=\"pf-c-title pf-m-3xl ak-m-clamped\">…</h1>\u001b[22m\n\u001b[2m      - unexpected value \"\u001b[22m\n\u001b[2m                Sign in to elect.info\u001b[22m\n\u001b[2m            \"\u001b[22m\n\n\n  45 |     test(`${path} has no static search description in main`, async ({ page }) => {\n  46 |       await page.goto(path);\n> 47 |       await expect(page.locator('h1')).toContainText(heading);\n     |                                        ^\n  48 |\n  49 |       // The <main> element should have no <section> or <p> children\n  50 |       // (the search UI is injected by JS before <main>, not inside it)\n    at /app/tests/ui/layout.spec.ts:47:40"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:30:41.674Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-3f3cc--search-description-in-main-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-3f3cc--search-description-in-main-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/layout.spec.ts",
                        "column": 40,
                        "line": 47
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-a296b365c921f935f0ac",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "offices - search container appears before main in DOM",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 118,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 186,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:51.205Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-59504--appears-before-main-in-DOM-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-025db2696f459ca9ce93",
              "file": "tests/ui/layout.spec.ts",
              "line": 56,
              "column": 7
            },
            {
              "title": "candidates - search container appears before main in DOM",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 118,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 199,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:51.485Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/layout-entity-index-layout-729a8--appears-before-main-in-DOM-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-fc645687ac9b64d16a9d",
              "file": "tests/ui/layout.spec.ts",
              "line": 71,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/leaf-details.spec.ts",
      "file": "tests/ui/leaf-details.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "leaf collection client-side detail pages",
          "file": "tests/ui/leaf-details.spec.ts",
          "line": 69,
          "column": 6,
          "specs": [
            {
              "title": "individual detail renders a bounded contribution profile",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 16,
                      "parallelIndex": 16,
                      "status": "failed",
                      "duration": 21213,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/BLOOMBERG, MICHAEL/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/BLOOMBERG, MICHAEL/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:72:20",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 54,
                          "line": 54
                        },
                        "snippet": "\u001b[0m \u001b[90m 52 |\u001b[39m   \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(sample\u001b[33m.\u001b[39mpath)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m   expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${sample.path} should serve the baked shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 54 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(sample\u001b[33m.\u001b[39mheading\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 55 |\u001b[39m\n \u001b[90m 56 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page)\u001b[33m.\u001b[39mtoHaveTitle(\u001b[35m/elect\\.info$/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 57 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'meta[name=\"robots\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'content'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'noindex, follow'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 54,
                            "line": 54
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/BLOOMBERG, MICHAEL/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  52 |   const response = await page.goto(sample.path);\n  53 |   expect(response?.status(), `${sample.path} should serve the baked shell`).toBe(200);\n> 54 |   await expect(page.locator('.leaf-detail-page h1')).toHaveText(sample.heading, { timeout: DATA_LOAD_TIMEOUT });\n     |                                                      ^\n  55 |\n  56 |   await expect(page).toHaveTitle(/elect\\.info$/i);\n  57 |   await expect(page.locator('meta[name=\"robots\"]')).toHaveAttribute('content', 'noindex, follow');\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:72:20"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.508Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c5a9d-ounded-contribution-profile-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c5a9d-ounded-contribution-profile-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 54,
                        "line": 54
                      }
                    },
                    {
                      "workerIndex": 74,
                      "parallelIndex": 7,
                      "status": "failed",
                      "duration": 20926,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/BLOOMBERG, MICHAEL/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/BLOOMBERG, MICHAEL/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:72:20",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 54,
                          "line": 54
                        },
                        "snippet": "\u001b[0m \u001b[90m 52 |\u001b[39m   \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(sample\u001b[33m.\u001b[39mpath)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m   expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${sample.path} should serve the baked shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 54 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(sample\u001b[33m.\u001b[39mheading\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 55 |\u001b[39m\n \u001b[90m 56 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page)\u001b[33m.\u001b[39mtoHaveTitle(\u001b[35m/elect\\.info$/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 57 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'meta[name=\"robots\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'content'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'noindex, follow'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 54,
                            "line": 54
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/BLOOMBERG, MICHAEL/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  52 |   const response = await page.goto(sample.path);\n  53 |   expect(response?.status(), `${sample.path} should serve the baked shell`).toBe(200);\n> 54 |   await expect(page.locator('.leaf-detail-page h1')).toHaveText(sample.heading, { timeout: DATA_LOAD_TIMEOUT });\n     |                                                      ^\n  55 |\n  56 |   await expect(page).toHaveTitle(/elect\\.info$/i);\n  57 |   await expect(page.locator('meta[name=\"robots\"]')).toHaveAttribute('content', 'noindex, follow');\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:72:20"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:30.416Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c5a9d-ounded-contribution-profile-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c5a9d-ounded-contribution-profile-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c5a9d-ounded-contribution-profile-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c5a9d-ounded-contribution-profile-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 54,
                        "line": 54
                      }
                    },
                    {
                      "workerIndex": 98,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20984,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/BLOOMBERG, MICHAEL/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/BLOOMBERG, MICHAEL/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:72:20",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 54,
                          "line": 54
                        },
                        "snippet": "\u001b[0m \u001b[90m 52 |\u001b[39m   \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(sample\u001b[33m.\u001b[39mpath)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m   expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${sample.path} should serve the baked shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 54 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(sample\u001b[33m.\u001b[39mheading\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 55 |\u001b[39m\n \u001b[90m 56 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page)\u001b[33m.\u001b[39mtoHaveTitle(\u001b[35m/elect\\.info$/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 57 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'meta[name=\"robots\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'content'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'noindex, follow'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 54,
                            "line": 54
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/BLOOMBERG, MICHAEL/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  52 |   const response = await page.goto(sample.path);\n  53 |   expect(response?.status(), `${sample.path} should serve the baked shell`).toBe(200);\n> 54 |   await expect(page.locator('.leaf-detail-page h1')).toHaveText(sample.heading, { timeout: DATA_LOAD_TIMEOUT });\n     |                                                      ^\n  55 |\n  56 |   await expect(page).toHaveTitle(/elect\\.info$/i);\n  57 |   await expect(page.locator('meta[name=\"robots\"]')).toHaveAttribute('content', 'noindex, follow');\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:72:20"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:52.080Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c5a9d-ounded-contribution-profile-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c5a9d-ounded-contribution-profile-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 54,
                        "line": 54
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-a2db653e74557c471e56",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 70,
              "column": 7
            },
            {
              "title": "employer detail renders totals and a bounded donor list below threshold",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 108,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 13645,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:13.666Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-26705--donor-list-below-threshold-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-f7566958d39b4e43ad90",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 88,
              "column": 7
            },
            {
              "title": "vendor detail renders totals and committee clients, ranked or edge-sorted",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 108,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 374,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:27.409Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-1a58b-ients-ranked-or-edge-sorted-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-4a09f332855f839e222b",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 97,
              "column": 7
            },
            {
              "title": "block detail renders voter data and bounded geography links",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 108,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 27411,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:118:20",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 54,
                          "line": 54
                        },
                        "snippet": "\u001b[0m \u001b[90m 52 |\u001b[39m   \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(sample\u001b[33m.\u001b[39mpath)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m   expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${sample.path} should serve the baked shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 54 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(sample\u001b[33m.\u001b[39mheading\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 55 |\u001b[39m\n \u001b[90m 56 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page)\u001b[33m.\u001b[39mtoHaveTitle(\u001b[35m/elect\\.info$/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 57 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'meta[name=\"robots\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'content'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'noindex, follow'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 54,
                            "line": 54
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  52 |   const response = await page.goto(sample.path);\n  53 |   expect(response?.status(), `${sample.path} should serve the baked shell`).toBe(200);\n> 54 |   await expect(page.locator('.leaf-detail-page h1')).toHaveText(sample.heading, { timeout: DATA_LOAD_TIMEOUT });\n     |                                                      ^\n  55 |\n  56 |   await expect(page).toHaveTitle(/elect\\.info$/i);\n  57 |   await expect(page.locator('meta[name=\"robots\"]')).toHaveAttribute('content', 'noindex, follow');\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:118:20"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:27.813Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-50a84-and-bounded-geography-links-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-50a84-and-bounded-geography-links-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 54,
                        "line": 54
                      }
                    },
                    {
                      "workerIndex": 120,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20934,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:118:20",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 54,
                          "line": 54
                        },
                        "snippet": "\u001b[0m \u001b[90m 52 |\u001b[39m   \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(sample\u001b[33m.\u001b[39mpath)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m   expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${sample.path} should serve the baked shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 54 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(sample\u001b[33m.\u001b[39mheading\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 55 |\u001b[39m\n \u001b[90m 56 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page)\u001b[33m.\u001b[39mtoHaveTitle(\u001b[35m/elect\\.info$/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 57 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'meta[name=\"robots\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'content'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'noindex, follow'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 54,
                            "line": 54
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  52 |   const response = await page.goto(sample.path);\n  53 |   expect(response?.status(), `${sample.path} should serve the baked shell`).toBe(200);\n> 54 |   await expect(page.locator('.leaf-detail-page h1')).toHaveText(sample.heading, { timeout: DATA_LOAD_TIMEOUT });\n     |                                                      ^\n  55 |\n  56 |   await expect(page).toHaveTitle(/elect\\.info$/i);\n  57 |   await expect(page.locator('meta[name=\"robots\"]')).toHaveAttribute('content', 'noindex, follow');\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:118:20"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:30:55.736Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-50a84-and-bounded-geography-links-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-50a84-and-bounded-geography-links-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-50a84-and-bounded-geography-links-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-50a84-and-bounded-geography-links-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 54,
                        "line": 54
                      }
                    },
                    {
                      "workerIndex": 125,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 21130,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:118:20",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 54,
                          "line": 54
                        },
                        "snippet": "\u001b[0m \u001b[90m 52 |\u001b[39m   \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(sample\u001b[33m.\u001b[39mpath)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m   expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${sample.path} should serve the baked shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 54 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(sample\u001b[33m.\u001b[39mheading\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 55 |\u001b[39m\n \u001b[90m 56 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page)\u001b[33m.\u001b[39mtoHaveTitle(\u001b[35m/elect\\.info$/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 57 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'meta[name=\"robots\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'content'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'noindex, follow'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 54,
                            "line": 54
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  52 |   const response = await page.goto(sample.path);\n  53 |   expect(response?.status(), `${sample.path} should serve the baked shell`).toBe(200);\n> 54 |   await expect(page.locator('.leaf-detail-page h1')).toHaveText(sample.heading, { timeout: DATA_LOAD_TIMEOUT });\n     |                                                      ^\n  55 |\n  56 |   await expect(page).toHaveTitle(/elect\\.info$/i);\n  57 |   await expect(page.locator('meta[name=\"robots\"]')).toHaveAttribute('content', 'noindex, follow');\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:118:20"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:31:17.488Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-50a84-and-bounded-geography-links-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-50a84-and-bounded-geography-links-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 54,
                        "line": 54
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-8e2fbaa51cd3bb771d1c",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 117,
              "column": 7
            },
            {
              "title": "block map links (/blocks/<geoid>/) resolve to the block by its derived id",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 127,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20610,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:126:20",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 54,
                          "line": 54
                        },
                        "snippet": "\u001b[0m \u001b[90m 52 |\u001b[39m   \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(sample\u001b[33m.\u001b[39mpath)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m   expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${sample.path} should serve the baked shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 54 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(sample\u001b[33m.\u001b[39mheading\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 55 |\u001b[39m\n \u001b[90m 56 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page)\u001b[33m.\u001b[39mtoHaveTitle(\u001b[35m/elect\\.info$/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 57 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'meta[name=\"robots\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'content'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'noindex, follow'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 54,
                            "line": 54
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  52 |   const response = await page.goto(sample.path);\n  53 |   expect(response?.status(), `${sample.path} should serve the baked shell`).toBe(200);\n> 54 |   await expect(page.locator('.leaf-detail-page h1')).toHaveText(sample.heading, { timeout: DATA_LOAD_TIMEOUT });\n     |                                                      ^\n  55 |\n  56 |   await expect(page).toHaveTitle(/elect\\.info$/i);\n  57 |   await expect(page.locator('meta[name=\"robots\"]')).toHaveAttribute('content', 'noindex, follow');\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:126:20"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:31:39.247Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-3e05c-the-block-by-its-derived-id-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-3e05c-the-block-by-its-derived-id-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 54,
                        "line": 54
                      }
                    },
                    {
                      "workerIndex": 132,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 21348,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:126:20",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 54,
                          "line": 54
                        },
                        "snippet": "\u001b[0m \u001b[90m 52 |\u001b[39m   \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(sample\u001b[33m.\u001b[39mpath)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m   expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${sample.path} should serve the baked shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 54 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(sample\u001b[33m.\u001b[39mheading\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 55 |\u001b[39m\n \u001b[90m 56 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page)\u001b[33m.\u001b[39mtoHaveTitle(\u001b[35m/elect\\.info$/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 57 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'meta[name=\"robots\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'content'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'noindex, follow'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 54,
                            "line": 54
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  52 |   const response = await page.goto(sample.path);\n  53 |   expect(response?.status(), `${sample.path} should serve the baked shell`).toBe(200);\n> 54 |   await expect(page.locator('.leaf-detail-page h1')).toHaveText(sample.heading, { timeout: DATA_LOAD_TIMEOUT });\n     |                                                      ^\n  55 |\n  56 |   await expect(page).toHaveTitle(/elect\\.info$/i);\n  57 |   await expect(page.locator('meta[name=\"robots\"]')).toHaveAttribute('content', 'noindex, follow');\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:126:20"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:32:00.451Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-3e05c-the-block-by-its-derived-id-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-3e05c-the-block-by-its-derived-id-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-3e05c-the-block-by-its-derived-id-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-3e05c-the-block-by-its-derived-id-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 54,
                        "line": 54
                      }
                    },
                    {
                      "workerIndex": 137,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20654,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:126:20",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 54,
                          "line": 54
                        },
                        "snippet": "\u001b[0m \u001b[90m 52 |\u001b[39m   \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(sample\u001b[33m.\u001b[39mpath)\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m   expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${sample.path} should serve the baked shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 54 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(sample\u001b[33m.\u001b[39mheading\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 55 |\u001b[39m\n \u001b[90m 56 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page)\u001b[33m.\u001b[39mtoHaveTitle(\u001b[35m/elect\\.info$/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 57 |\u001b[39m   \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'meta[name=\"robots\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'content'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'noindex, follow'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 54,
                            "line": 54
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Block 1020/i\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  52 |   const response = await page.goto(sample.path);\n  53 |   expect(response?.status(), `${sample.path} should serve the baked shell`).toBe(200);\n> 54 |   await expect(page.locator('.leaf-detail-page h1')).toHaveText(sample.heading, { timeout: DATA_LOAD_TIMEOUT });\n     |                                                      ^\n  55 |\n  56 |   await expect(page).toHaveTitle(/elect\\.info$/i);\n  57 |   await expect(page.locator('meta[name=\"robots\"]')).toHaveAttribute('content', 'noindex, follow');\n    at openLeafDetail (/app/tests/ui/leaf-details.spec.ts:54:54)\n    at /app/tests/ui/leaf-details.spec.ts:126:20"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:32:22.620Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-3e05c-the-block-by-its-derived-id-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-3e05c-the-block-by-its-derived-id-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 54,
                        "line": 54
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-e2fa35759bb0fb651ac4",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 125,
              "column": 7
            },
            {
              "title": "precinct detail bootstraps directly and renders results",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 139,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 429,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:32:43.898Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-ad0bd-irectly-and-renders-results-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-498f148b1bb8c8ca5043",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 132,
              "column": 7
            },
            {
              "title": "tract detail remains client-rendered under the generalized leaf route",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 139,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 383,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:32:44.418Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-6e33d--the-generalized-leaf-route-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-943e9e10b1959a53f29b",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 141,
              "column": 7
            },
            {
              "title": "hub employer renders totals without issuing a live connection query",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 139,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 182,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:32:44.821Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-84944-ing-a-live-connection-query-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-a8b9358953cbb0b8c0a9",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 161,
              "column": 7
            },
            {
              "title": "hub vendor resolves an alias without issuing a live connection query",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 139,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 200,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:32:45.021Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-86be8-ing-a-live-connection-query-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-f2d8cbd96bd16419f748",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 211,
              "column": 7
            },
            {
              "title": "hub vendor lists its ranked top clients with a top-N-of-P footer and Sankey (sites#261)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 139,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 324,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:32:45.236Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-22f5d-ooter-and-Sankey-sites-261--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-efc8dff31707720d5493",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 282,
              "column": 7
            },
            {
              "title": "individual Overview, Location and Districts link like the voter page, districts by ZIP overlap",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 139,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20583,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"MOLLICA, CAROL\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"MOLLICA, CAROL\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at /app/tests/ui/leaf-details.spec.ts:382:56",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 56,
                          "line": 382
                        },
                        "snippet": "\u001b[0m \u001b[90m 380 |\u001b[39m     \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/ind-parity/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 381 |\u001b[39m     expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 382 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'MOLLICA, CAROL'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 383 |\u001b[39m     \u001b[36mconst\u001b[39m overview \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'section#overview'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 384 |\u001b[39m     \u001b[36mawait\u001b[39m expect(overview\u001b[33m.\u001b[39mlocator(\u001b[32m'a'\u001b[39m\u001b[33m,\u001b[39m { hasText\u001b[33m:\u001b[39m \u001b[32m'ACME CORP'\u001b[39m }))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'href'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'/individuals/?f_employer=ACME+CORP'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 385 |\u001b[39m     \u001b[36mawait\u001b[39m expect(overview)\u001b[33m.\u001b[39mtoContainText(\u001b[32m'Party lean (giving)'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 56,
                            "line": 382
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"MOLLICA, CAROL\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  380 |     const response = await page.goto('/individuals/ind-parity/');\n  381 |     expect(response?.status()).toBe(200);\n> 382 |     await expect(page.locator('.leaf-detail-page h1')).toHaveText('MOLLICA, CAROL', { timeout: DATA_LOAD_TIMEOUT });\n      |                                                        ^\n  383 |     const overview = page.locator('section#overview');\n  384 |     await expect(overview.locator('a', { hasText: 'ACME CORP' })).toHaveAttribute('href', '/individuals/?f_employer=ACME+CORP');\n  385 |     await expect(overview).toContainText('Party lean (giving)');\n    at /app/tests/ui/leaf-details.spec.ts:382:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:32:45.574Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-746b8-ge-districts-by-ZIP-overlap-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-746b8-ge-districts-by-ZIP-overlap-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 56,
                        "line": 382
                      }
                    },
                    {
                      "workerIndex": 141,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20934,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"MOLLICA, CAROL\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"MOLLICA, CAROL\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at /app/tests/ui/leaf-details.spec.ts:382:56",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 56,
                          "line": 382
                        },
                        "snippet": "\u001b[0m \u001b[90m 380 |\u001b[39m     \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/ind-parity/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 381 |\u001b[39m     expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 382 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'MOLLICA, CAROL'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 383 |\u001b[39m     \u001b[36mconst\u001b[39m overview \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'section#overview'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 384 |\u001b[39m     \u001b[36mawait\u001b[39m expect(overview\u001b[33m.\u001b[39mlocator(\u001b[32m'a'\u001b[39m\u001b[33m,\u001b[39m { hasText\u001b[33m:\u001b[39m \u001b[32m'ACME CORP'\u001b[39m }))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'href'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'/individuals/?f_employer=ACME+CORP'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 385 |\u001b[39m     \u001b[36mawait\u001b[39m expect(overview)\u001b[33m.\u001b[39mtoContainText(\u001b[32m'Party lean (giving)'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 56,
                            "line": 382
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"MOLLICA, CAROL\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  380 |     const response = await page.goto('/individuals/ind-parity/');\n  381 |     expect(response?.status()).toBe(200);\n> 382 |     await expect(page.locator('.leaf-detail-page h1')).toHaveText('MOLLICA, CAROL', { timeout: DATA_LOAD_TIMEOUT });\n      |                                                        ^\n  383 |     const overview = page.locator('section#overview');\n  384 |     await expect(overview.locator('a', { hasText: 'ACME CORP' })).toHaveAttribute('href', '/individuals/?f_employer=ACME+CORP');\n  385 |     await expect(overview).toContainText('Party lean (giving)');\n    at /app/tests/ui/leaf-details.spec.ts:382:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:33:06.680Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-746b8-ge-districts-by-ZIP-overlap-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-746b8-ge-districts-by-ZIP-overlap-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-746b8-ge-districts-by-ZIP-overlap-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-746b8-ge-districts-by-ZIP-overlap-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 56,
                        "line": 382
                      }
                    },
                    {
                      "workerIndex": 144,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20657,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"MOLLICA, CAROL\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"MOLLICA, CAROL\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at /app/tests/ui/leaf-details.spec.ts:382:56",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 56,
                          "line": 382
                        },
                        "snippet": "\u001b[0m \u001b[90m 380 |\u001b[39m     \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/ind-parity/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 381 |\u001b[39m     expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 382 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'MOLLICA, CAROL'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 383 |\u001b[39m     \u001b[36mconst\u001b[39m overview \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'section#overview'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 384 |\u001b[39m     \u001b[36mawait\u001b[39m expect(overview\u001b[33m.\u001b[39mlocator(\u001b[32m'a'\u001b[39m\u001b[33m,\u001b[39m { hasText\u001b[33m:\u001b[39m \u001b[32m'ACME CORP'\u001b[39m }))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'href'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'/individuals/?f_employer=ACME+CORP'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 385 |\u001b[39m     \u001b[36mawait\u001b[39m expect(overview)\u001b[33m.\u001b[39mtoContainText(\u001b[32m'Party lean (giving)'\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 56,
                            "line": 382
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"MOLLICA, CAROL\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  380 |     const response = await page.goto('/individuals/ind-parity/');\n  381 |     expect(response?.status()).toBe(200);\n> 382 |     await expect(page.locator('.leaf-detail-page h1')).toHaveText('MOLLICA, CAROL', { timeout: DATA_LOAD_TIMEOUT });\n      |                                                        ^\n  383 |     const overview = page.locator('section#overview');\n  384 |     await expect(overview.locator('a', { hasText: 'ACME CORP' })).toHaveAttribute('href', '/individuals/?f_employer=ACME+CORP');\n  385 |     await expect(overview).toContainText('Party lean (giving)');\n    at /app/tests/ui/leaf-details.spec.ts:382:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:33:28.473Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-746b8-ge-districts-by-ZIP-overlap-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-746b8-ge-districts-by-ZIP-overlap-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 56,
                        "line": 382
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-996e402e97983a8e9e9e",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 350,
              "column": 7
            },
            {
              "title": "individual Top Committees: one row per committee and a distinct-committee footer (sites#194)",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 146,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20587,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"DOE, JANE\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"DOE, JANE\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at /app/tests/ui/leaf-details.spec.ts:442:56",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 56,
                          "line": 442
                        },
                        "snippet": "\u001b[0m \u001b[90m 440 |\u001b[39m     \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/ind-194/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 441 |\u001b[39m     expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 442 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'DOE, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 443 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .mf-view-btn[data-view=\"table\"]'\u001b[39m)\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\n \u001b[90m 444 |\u001b[39m     \u001b[36mconst\u001b[39m rows \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .leaf-relationship-list tbody tr'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 445 |\u001b[39m     \u001b[36mawait\u001b[39m expect(rows)\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m2\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 56,
                            "line": 442
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"DOE, JANE\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  440 |     const response = await page.goto('/individuals/ind-194/');\n  441 |     expect(response?.status()).toBe(200);\n> 442 |     await expect(page.locator('.leaf-detail-page h1')).toHaveText('DOE, JANE', { timeout: DATA_LOAD_TIMEOUT });\n      |                                                        ^\n  443 |     await page.locator('#committees .mf-view-btn[data-view=\"table\"]').click();\n  444 |     const rows = page.locator('#committees .leaf-relationship-list tbody tr');\n  445 |     await expect(rows).toHaveCount(2);\n    at /app/tests/ui/leaf-details.spec.ts:442:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:33:49.731Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c9ccd-committee-footer-sites-194--ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c9ccd-committee-footer-sites-194--ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 56,
                        "line": 442
                      }
                    },
                    {
                      "workerIndex": 148,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 21143,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"DOE, JANE\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"DOE, JANE\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at /app/tests/ui/leaf-details.spec.ts:442:56",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 56,
                          "line": 442
                        },
                        "snippet": "\u001b[0m \u001b[90m 440 |\u001b[39m     \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/ind-194/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 441 |\u001b[39m     expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 442 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'DOE, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 443 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .mf-view-btn[data-view=\"table\"]'\u001b[39m)\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\n \u001b[90m 444 |\u001b[39m     \u001b[36mconst\u001b[39m rows \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .leaf-relationship-list tbody tr'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 445 |\u001b[39m     \u001b[36mawait\u001b[39m expect(rows)\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m2\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 56,
                            "line": 442
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"DOE, JANE\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  440 |     const response = await page.goto('/individuals/ind-194/');\n  441 |     expect(response?.status()).toBe(200);\n> 442 |     await expect(page.locator('.leaf-detail-page h1')).toHaveText('DOE, JANE', { timeout: DATA_LOAD_TIMEOUT });\n      |                                                        ^\n  443 |     await page.locator('#committees .mf-view-btn[data-view=\"table\"]').click();\n  444 |     const rows = page.locator('#committees .leaf-relationship-list tbody tr');\n  445 |     await expect(rows).toHaveCount(2);\n    at /app/tests/ui/leaf-details.spec.ts:442:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:34:10.916Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c9ccd-committee-footer-sites-194--ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c9ccd-committee-footer-sites-194--ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c9ccd-committee-footer-sites-194--ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c9ccd-committee-footer-sites-194--ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 56,
                        "line": 442
                      }
                    },
                    {
                      "workerIndex": 150,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20618,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"DOE, JANE\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"DOE, JANE\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n    at /app/tests/ui/leaf-details.spec.ts:442:56",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 56,
                          "line": 442
                        },
                        "snippet": "\u001b[0m \u001b[90m 440 |\u001b[39m     \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/ind-194/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 441 |\u001b[39m     expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 442 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.leaf-detail-page h1'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'DOE, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                        \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 443 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .mf-view-btn[data-view=\"table\"]'\u001b[39m)\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\n \u001b[90m 444 |\u001b[39m     \u001b[36mconst\u001b[39m rows \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .leaf-relationship-list tbody tr'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 445 |\u001b[39m     \u001b[36mawait\u001b[39m expect(rows)\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m2\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 56,
                            "line": 442
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected: \u001b[32m\"DOE, JANE\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\n\n  440 |     const response = await page.goto('/individuals/ind-194/');\n  441 |     expect(response?.status()).toBe(200);\n> 442 |     await expect(page.locator('.leaf-detail-page h1')).toHaveText('DOE, JANE', { timeout: DATA_LOAD_TIMEOUT });\n      |                                                        ^\n  443 |     await page.locator('#committees .mf-view-btn[data-view=\"table\"]').click();\n  444 |     const rows = page.locator('#committees .leaf-relationship-list tbody tr');\n  445 |     await expect(rows).toHaveCount(2);\n    at /app/tests/ui/leaf-details.spec.ts:442:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:34:32.843Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c9ccd-committee-footer-sites-194--ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-c9ccd-committee-footer-sites-194--ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 56,
                        "line": 442
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-e7d9a1f93425703003bf",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 409,
              "column": 7
            },
            {
              "title": "individual Top Committees: Sankey by category, decoded types, refund columns only when refunded (sites#413)",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 152,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20585,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#committees h2')\nExpected: \u001b[32m\"Top Committees\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('#committees h2') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('#committees h2')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#committees h2')\nExpected: \u001b[32m\"Top Committees\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('#committees h2') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('#committees h2')\u001b[22m\n\n    at /app/tests/ui/leaf-details.spec.ts:492:50",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 50,
                          "line": 492
                        },
                        "snippet": "\u001b[0m \u001b[90m 490 |\u001b[39m     \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/ind-sankey/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 491 |\u001b[39m     expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 492 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees h2'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'Top Committees'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                  \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 493 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .money-flow-chart canvas'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 494 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .mf-note'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\n \u001b[90m 495 |\u001b[39m     \u001b[36mconst\u001b[39m option \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees'\u001b[39m)\u001b[33m.\u001b[39mevaluate(el \u001b[33m=>\u001b[39m window\u001b[33m.\u001b[39melectinfoMoneyFlow\u001b[33m!\u001b[39m\u001b[33m.\u001b[39minspect\u001b[33m!\u001b[39m(el)\u001b[33m!\u001b[39m\u001b[33m.\u001b[39moption \u001b[36mas\u001b[39m any)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 50,
                            "line": 492
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#committees h2')\nExpected: \u001b[32m\"Top Committees\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('#committees h2') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('#committees h2')\u001b[22m\n\n\n  490 |     const response = await page.goto('/individuals/ind-sankey/');\n  491 |     expect(response?.status()).toBe(200);\n> 492 |     await expect(page.locator('#committees h2')).toHaveText('Top Committees', { timeout: DATA_LOAD_TIMEOUT });\n      |                                                  ^\n  493 |     await expect(page.locator('#committees .money-flow-chart canvas')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n  494 |     await expect(page.locator('#committees .mf-note')).toBeVisible();\n  495 |     const option = await page.locator('#committees').evaluate(el => window.electinfoMoneyFlow!.inspect!(el)!.option as any);\n    at /app/tests/ui/leaf-details.spec.ts:492:50"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:34:54.067Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-034c4-ly-when-refunded-sites-413--ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-034c4-ly-when-refunded-sites-413--ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 50,
                        "line": 492
                      }
                    },
                    {
                      "workerIndex": 154,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20968,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#committees h2')\nExpected: \u001b[32m\"Top Committees\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('#committees h2') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('#committees h2')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#committees h2')\nExpected: \u001b[32m\"Top Committees\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('#committees h2') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('#committees h2')\u001b[22m\n\n    at /app/tests/ui/leaf-details.spec.ts:492:50",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 50,
                          "line": 492
                        },
                        "snippet": "\u001b[0m \u001b[90m 490 |\u001b[39m     \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/ind-sankey/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 491 |\u001b[39m     expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 492 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees h2'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'Top Committees'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                  \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 493 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .money-flow-chart canvas'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 494 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .mf-note'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\n \u001b[90m 495 |\u001b[39m     \u001b[36mconst\u001b[39m option \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees'\u001b[39m)\u001b[33m.\u001b[39mevaluate(el \u001b[33m=>\u001b[39m window\u001b[33m.\u001b[39melectinfoMoneyFlow\u001b[33m!\u001b[39m\u001b[33m.\u001b[39minspect\u001b[33m!\u001b[39m(el)\u001b[33m!\u001b[39m\u001b[33m.\u001b[39moption \u001b[36mas\u001b[39m any)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 50,
                            "line": 492
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#committees h2')\nExpected: \u001b[32m\"Top Committees\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('#committees h2') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('#committees h2')\u001b[22m\n\n\n  490 |     const response = await page.goto('/individuals/ind-sankey/');\n  491 |     expect(response?.status()).toBe(200);\n> 492 |     await expect(page.locator('#committees h2')).toHaveText('Top Committees', { timeout: DATA_LOAD_TIMEOUT });\n      |                                                  ^\n  493 |     await expect(page.locator('#committees .money-flow-chart canvas')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n  494 |     await expect(page.locator('#committees .mf-note')).toBeVisible();\n  495 |     const option = await page.locator('#committees').evaluate(el => window.electinfoMoneyFlow!.inspect!(el)!.option as any);\n    at /app/tests/ui/leaf-details.spec.ts:492:50"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:35:15.245Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-034c4-ly-when-refunded-sites-413--ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-034c4-ly-when-refunded-sites-413--ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-034c4-ly-when-refunded-sites-413--ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-034c4-ly-when-refunded-sites-413--ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 50,
                        "line": 492
                      }
                    },
                    {
                      "workerIndex": 156,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20681,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#committees h2')\nExpected: \u001b[32m\"Top Committees\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('#committees h2') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('#committees h2')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#committees h2')\nExpected: \u001b[32m\"Top Committees\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('#committees h2') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('#committees h2')\u001b[22m\n\n    at /app/tests/ui/leaf-details.spec.ts:492:50",
                        "location": {
                          "file": "/app/tests/ui/leaf-details.spec.ts",
                          "column": 50,
                          "line": 492
                        },
                        "snippet": "\u001b[0m \u001b[90m 490 |\u001b[39m     \u001b[36mconst\u001b[39m response \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/ind-sankey/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 491 |\u001b[39m     expect(response\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 492 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees h2'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'Top Committees'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                  \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 493 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .money-flow-chart canvas'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 494 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees .mf-note'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\n \u001b[90m 495 |\u001b[39m     \u001b[36mconst\u001b[39m option \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#committees'\u001b[39m)\u001b[33m.\u001b[39mevaluate(el \u001b[33m=>\u001b[39m window\u001b[33m.\u001b[39melectinfoMoneyFlow\u001b[33m!\u001b[39m\u001b[33m.\u001b[39minspect\u001b[33m!\u001b[39m(el)\u001b[33m!\u001b[39m\u001b[33m.\u001b[39moption \u001b[36mas\u001b[39m any)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/leaf-details.spec.ts",
                            "column": 50,
                            "line": 492
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#committees h2')\nExpected: \u001b[32m\"Top Committees\"\u001b[39m\nTimeout: 20000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('#committees h2') with timeout 20000ms\u001b[22m\n\u001b[2m  - waiting for locator('#committees h2')\u001b[22m\n\n\n  490 |     const response = await page.goto('/individuals/ind-sankey/');\n  491 |     expect(response?.status()).toBe(200);\n> 492 |     await expect(page.locator('#committees h2')).toHaveText('Top Committees', { timeout: DATA_LOAD_TIMEOUT });\n      |                                                  ^\n  493 |     await expect(page.locator('#committees .money-flow-chart canvas')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n  494 |     await expect(page.locator('#committees .mf-note')).toBeVisible();\n  495 |     const option = await page.locator('#committees').evaluate(el => window.electinfoMoneyFlow!.inspect!(el)!.option as any);\n    at /app/tests/ui/leaf-details.spec.ts:492:50"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:35:37.019Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-034c4-ly-when-refunded-sites-413--ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-034c4-ly-when-refunded-sites-413--ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/leaf-details.spec.ts",
                        "column": 50,
                        "line": 492
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-1986b3c0dcd9a2db60fc",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 455,
              "column": 7
            },
            {
              "title": "vendor live clients come from moneyCounterparties when the graph has no ranks (sites#194)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 158,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 374,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:35:58.313Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/leaf-details-leaf-collecti-92c9b-aph-has-no-ranks-sites-194--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-8ec7a2312ae8e8cad842",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 514,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/map-insets.spec.ts",
      "file": "tests/ui/map-insets.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "/districts/ map draws AK, HI and DC insets and drills in from a label",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 90000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 17,
                  "parallelIndex": 17,
                  "status": "passed",
                  "duration": 848,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:08.498Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--districts-map--6e244--and-drills-in-from-a-label-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "8c8626a2a2859708e98d-a3e97435c9e0d3e45fba",
          "file": "tests/ui/map-insets.spec.ts",
          "line": 19,
          "column": 7
        },
        {
          "title": "/counties/ map draws AK, HI and DC insets and drills in from a label",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 90000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 17,
                  "parallelIndex": 17,
                  "status": "passed",
                  "duration": 693,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:09.504Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--counties-map-d-6daa6--and-drills-in-from-a-label-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "8c8626a2a2859708e98d-a77db558efcf1ad0db31",
          "file": "tests/ui/map-insets.spec.ts",
          "line": 19,
          "column": 7
        },
        {
          "title": "/places/ map draws AK, HI and DC insets and drills in from a label",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 90000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 17,
                  "parallelIndex": 17,
                  "status": "passed",
                  "duration": 590,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:10.227Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--places-map-dra-cdb87--and-drills-in-from-a-label-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "8c8626a2a2859708e98d-624d5260ac6ac832968b",
          "file": "tests/ui/map-insets.spec.ts",
          "line": 19,
          "column": 7
        },
        {
          "title": "/postalcodes/ map draws AK, HI and DC insets and drills in from a label",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 90000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 17,
                  "parallelIndex": 17,
                  "status": "passed",
                  "duration": 546,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:10.833Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--postalcodes-ma-78035--and-drills-in-from-a-label-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "8c8626a2a2859708e98d-c0e2b394b83c4f049726",
          "file": "tests/ui/map-insets.spec.ts",
          "line": 19,
          "column": 7
        },
        {
          "title": "/tracts/ map draws AK, HI and DC insets and drills in from a label",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 90000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 17,
                  "parallelIndex": 17,
                  "status": "passed",
                  "duration": 504,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:11.395Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--tracts-map-dra-fa276--and-drills-in-from-a-label-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "8c8626a2a2859708e98d-f77eb6cadecb3e9478cd",
          "file": "tests/ui/map-insets.spec.ts",
          "line": 19,
          "column": 7
        },
        {
          "title": "/precincts/ map draws AK, HI and DC insets and drills in from a label",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 90000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 17,
                  "parallelIndex": 17,
                  "status": "passed",
                  "duration": 552,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:11.912Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--precincts-map--32f4c--and-drills-in-from-a-label-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "8c8626a2a2859708e98d-58e522f8f980e1ee90e3",
          "file": "tests/ui/map-insets.spec.ts",
          "line": 19,
          "column": 7
        },
        {
          "title": "/blocks/ map draws AK, HI and DC insets and drills in from a label",
          "ok": false,
          "tags": [],
          "tests": [
            {
              "timeout": 90000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 17,
                  "parallelIndex": 17,
                  "status": "timedOut",
                  "duration": 90078,
                  "error": {
                    "message": "\u001b[31mTest timeout of 90000ms exceeded.\u001b[39m",
                    "stack": "\u001b[31mTest timeout of 90000ms exceeded.\u001b[39m"
                  },
                  "errors": [
                    {
                      "message": "\u001b[31mTest timeout of 90000ms exceeded.\u001b[39m"
                    },
                    {
                      "location": {
                        "file": "/app/tests/ui/map-insets.spec.ts",
                        "column": 56,
                        "line": 26
                      },
                      "message": "Error: locator.click: Test timeout of 90000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('.toggle-btn[data-view=\"map\"]')\u001b[22m\n\n\n  24 |     const res = await page.goto(path);\n  25 |     expect(res?.status(), `${path} should answer 200`).toBe(200);\n> 26 |     await page.locator('.toggle-btn[data-view=\"map\"]').click();\n     |                                                        ^\n  27 |\n  28 |     const labels = page.locator('.map-inset-label');\n  29 |     await expect(labels.first()).toBeVisible({ timeout: 30000 });\n    at /app/tests/ui/map-insets.spec.ts:26:56"
                    }
                  ],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:12.479Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--blocks-map-dra-47d1e--and-drills-in-from-a-label-ui/test-failed-1.png"
                    },
                    {
                      "name": "error-context",
                      "contentType": "text/markdown",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--blocks-map-dra-47d1e--and-drills-in-from-a-label-ui/error-context.md"
                    }
                  ]
                },
                {
                  "workerIndex": 116,
                  "parallelIndex": 6,
                  "status": "timedOut",
                  "duration": 90633,
                  "error": {
                    "message": "\u001b[31mTest timeout of 90000ms exceeded.\u001b[39m",
                    "stack": "\u001b[31mTest timeout of 90000ms exceeded.\u001b[39m"
                  },
                  "errors": [
                    {
                      "message": "\u001b[31mTest timeout of 90000ms exceeded.\u001b[39m"
                    },
                    {
                      "location": {
                        "file": "/app/tests/ui/map-insets.spec.ts",
                        "column": 56,
                        "line": 26
                      },
                      "message": "Error: locator.click: Test timeout of 90000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('.toggle-btn[data-view=\"map\"]')\u001b[22m\n\n\n  24 |     const res = await page.goto(path);\n  25 |     expect(res?.status(), `${path} should answer 200`).toBe(200);\n> 26 |     await page.locator('.toggle-btn[data-view=\"map\"]').click();\n     |                                                        ^\n  27 |\n  28 |     const labels = page.locator('.map-inset-label');\n  29 |     await expect(labels.first()).toBeVisible({ timeout: 30000 });\n    at /app/tests/ui/map-insets.spec.ts:26:56"
                    }
                  ],
                  "stdout": [],
                  "stderr": [],
                  "retry": 1,
                  "startTime": "2026-10-24T00:30:43.037Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--blocks-map-dra-47d1e--and-drills-in-from-a-label-ui-retry1/test-failed-1.png"
                    },
                    {
                      "name": "video",
                      "contentType": "video/webm",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--blocks-map-dra-47d1e--and-drills-in-from-a-label-ui-retry1/video.webm"
                    },
                    {
                      "name": "error-context",
                      "contentType": "text/markdown",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--blocks-map-dra-47d1e--and-drills-in-from-a-label-ui-retry1/error-context.md"
                    },
                    {
                      "name": "trace",
                      "contentType": "application/zip",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--blocks-map-dra-47d1e--and-drills-in-from-a-label-ui-retry1/trace.zip"
                    }
                  ]
                },
                {
                  "workerIndex": 135,
                  "parallelIndex": 4,
                  "status": "timedOut",
                  "duration": 90092,
                  "error": {
                    "message": "\u001b[31mTest timeout of 90000ms exceeded.\u001b[39m",
                    "stack": "\u001b[31mTest timeout of 90000ms exceeded.\u001b[39m"
                  },
                  "errors": [
                    {
                      "message": "\u001b[31mTest timeout of 90000ms exceeded.\u001b[39m"
                    },
                    {
                      "location": {
                        "file": "/app/tests/ui/map-insets.spec.ts",
                        "column": 56,
                        "line": 26
                      },
                      "message": "Error: locator.click: Test timeout of 90000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('.toggle-btn[data-view=\"map\"]')\u001b[22m\n\n\n  24 |     const res = await page.goto(path);\n  25 |     expect(res?.status(), `${path} should answer 200`).toBe(200);\n> 26 |     await page.locator('.toggle-btn[data-view=\"map\"]').click();\n     |                                                        ^\n  27 |\n  28 |     const labels = page.locator('.map-inset-label');\n  29 |     await expect(labels.first()).toBeVisible({ timeout: 30000 });\n    at /app/tests/ui/map-insets.spec.ts:26:56"
                    }
                  ],
                  "stdout": [],
                  "stderr": [],
                  "retry": 2,
                  "startTime": "2026-10-24T00:32:14.694Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--blocks-map-dra-47d1e--and-drills-in-from-a-label-ui-retry2/test-failed-1.png"
                    },
                    {
                      "name": "error-context",
                      "contentType": "text/markdown",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--blocks-map-dra-47d1e--and-drills-in-from-a-label-ui-retry2/error-context.md"
                    }
                  ]
                }
              ],
              "status": "unexpected"
            }
          ],
          "id": "8c8626a2a2859708e98d-6e0a7da708471aec2cbc",
          "file": "tests/ui/map-insets.spec.ts",
          "line": 19,
          "column": 7
        },
        {
          "title": "/states/ map frames AK, HI and DC insets and a label opens the state page",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 90000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 145,
                  "parallelIndex": 3,
                  "status": "passed",
                  "duration": 809,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:33:45.364Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/map-insets--states-map-fra-484b8--label-opens-the-state-page-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "8c8626a2a2859708e98d-146f5ff8d2b9e4c7bba5",
          "file": "tests/ui/map-insets.spec.ts",
          "line": 44,
          "column": 5
        }
      ]
    },
    {
      "title": "tests/ui/money-flow-mount.spec.ts",
      "file": "tests/ui/money-flow-mount.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "Candidate: two-column mount still toggles and disposes",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 18,
                  "parallelIndex": 18,
                  "status": "passed",
                  "duration": 555,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:08.421Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/money-flow-mount-Candidate-fb352--still-toggles-and-disposes-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "0a17689d70e3e5ee0c25-0e163677fe23b16c04ff",
          "file": "tests/ui/money-flow-mount.spec.ts",
          "line": 10,
          "column": 7
        },
        {
          "title": "Committee: two-column mount still toggles and disposes",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 18,
                  "parallelIndex": 18,
                  "status": "passed",
                  "duration": 457,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:09.137Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/money-flow-mount-Committee-41495--still-toggles-and-disposes-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "0a17689d70e3e5ee0c25-4556932a37ce611852fd",
          "file": "tests/ui/money-flow-mount.spec.ts",
          "line": 10,
          "column": 7
        },
        {
          "title": "Vendor: two-column mount still toggles and disposes",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 18,
                  "parallelIndex": 18,
                  "status": "passed",
                  "duration": 451,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:09.615Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/money-flow-mount-Vendor-tw-8746b--still-toggles-and-disposes-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "0a17689d70e3e5ee0c25-39393939450120315a11",
          "file": "tests/ui/money-flow-mount.spec.ts",
          "line": 10,
          "column": 7
        }
      ]
    },
    {
      "title": "tests/ui/money-flow.spec.ts",
      "file": "tests/ui/money-flow.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "money-flow script injection",
          "file": "tests/ui/money-flow.spec.ts",
          "line": 25,
          "column": 6,
          "specs": [
            {
              "title": "injected once on /committees/a75a9110-f1db-a945-39a8-7503ed3c04da/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 103,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.474Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-ac19bd19a112bbc633b9",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 27,
              "column": 9
            },
            {
              "title": "injected once on /candidates/a8897257-430c-2bf3-4498-349021b09ca3/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 43,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.670Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-1e24093b4e753edfa81f",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 27,
              "column": 9
            },
            {
              "title": "not injected on /states/032f8d61-f554-f435-2a6d-50b3c8cc01d7/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 534,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.736Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-7a4f8e57d8a34b965055",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "not injected on /elections/2024/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 104,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.286Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-2dcd02a112846a1c74ab",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "not injected on /offices/president/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 43,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.411Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-a7c67ffeb658d5760d58",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "not injected on /districts/ak/00/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 90,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.474Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-70d1251eabbd50eef434",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 36,
              "column": 9
            }
          ]
        },
        {
          "title": "money-flow card toggle",
          "file": "tests/ui/money-flow.spec.ts",
          "line": 44,
          "column": 6,
          "specs": [
            {
              "title": "committee: each money card defaults to the Sankey",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 557,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.586Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/money-flow-money-flow-card-90793-card-defaults-to-the-Sankey-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-1379512e23819a3f13a3",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 45,
              "column": 7
            },
            {
              "title": "candidate: Top Contributors toggles between Sankey and table",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 424,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.220Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/money-flow-money-flow-card-05c02-es-between-Sankey-and-table-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-66eef433452cb5f4518f",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 59,
              "column": 7
            },
            {
              "title": "candidate: #ie-support card follows the independent-expenditure data",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 381,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.666Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/money-flow-money-flow-card-72da7-ndependent-expenditure-data-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-1839d1cd12dab3de3014",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 79,
              "column": 9
            },
            {
              "title": "committee: #ie-support card follows the independent-expenditure data",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 425,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.063Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/money-flow-money-flow-card-77078-ndependent-expenditure-data-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-c03ecaaa846d30d640c2",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 79,
              "column": 9
            },
            {
              "title": "candidate: #ie-oppose card follows the independent-expenditure data",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 348,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.503Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/money-flow-money-flow-card-b1fd1-ndependent-expenditure-data-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-cd8390d905a0c386907e",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 79,
              "column": 9
            },
            {
              "title": "committee: #ie-oppose card follows the independent-expenditure data",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 19,
                      "status": "passed",
                      "duration": 392,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.865Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/money-flow-money-flow-card-f1bb4-ndependent-expenditure-data-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-b82415fcc5b419d3939e",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 79,
              "column": 9
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/news-feed.spec.ts",
      "file": "tests/ui/news-feed.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "news feed (source: OPENSEARCH)",
          "file": "tests/ui/news-feed.spec.ts",
          "line": 38,
          "column": 6,
          "specs": [
            {
              "title": "the feed serves articles with resolved entities",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 20,
                      "status": "passed",
                      "duration": 1929,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.566Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1af1026586bac743cce4-f13e5cf3d2f509b8f6ed",
              "file": "tests/ui/news-feed.spec.ts",
              "line": 39,
              "column": 7
            },
            {
              "title": "candidate chips carry an FEC party code, never a graph id",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 20,
                      "status": "passed",
                      "duration": 347,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.576Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1af1026586bac743cce4-a0d92ad6dfd4d6b3887d",
              "file": "tests/ui/news-feed.spec.ts",
              "line": 47,
              "column": 7
            },
            {
              "title": "party facet keys are FEC codes and the party filter matches",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 20,
                      "status": "passed",
                      "duration": 448,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.941Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1af1026586bac743cce4-ad8d68d0c5df3f8fda27",
              "file": "tests/ui/news-feed.spec.ts",
              "line": 61,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/page-aliases.spec.ts",
      "file": "tests/ui/page-aliases.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "static page aliases",
          "file": "tests/ui/page-aliases.spec.ts",
          "line": 45,
          "column": 6,
          "specs": [
            {
              "title": "canonical vanity URL serves the stored page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 21,
                      "parallelIndex": 21,
                      "status": "passed",
                      "duration": 141,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.513Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "435b8a583a557afdb4f4-01c6492deafe21c2f9dd",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 48,
              "column": 7
            },
            {
              "title": "vanity lookup ignores case, trailing slash and index.html",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 21,
                      "parallelIndex": 21,
                      "status": "passed",
                      "duration": 100,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.721Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "435b8a583a557afdb4f4-07e8807475348f87bc20",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 52,
              "column": 7
            },
            {
              "title": "UUID URL serves the page with its vanity canonical",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 21,
                      "parallelIndex": 21,
                      "status": "passed",
                      "duration": 165,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.845Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "435b8a583a557afdb4f4-d8a32d62d9503bea2b6e",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 58,
              "column": 7
            },
            {
              "title": "secondary keys redirect to the canonical URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 21,
                      "parallelIndex": 21,
                      "status": "passed",
                      "duration": 86,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.031Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "435b8a583a557afdb4f4-79778d6ee4c3fd5bcef0",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 66,
              "column": 7
            },
            {
              "title": "legacy URL shapes redirect to the canonical URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 21,
                      "parallelIndex": 21,
                      "status": "passed",
                      "duration": 83,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.135Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "435b8a583a557afdb4f4-b1dcc28f4f8ac7c8b0e9",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 76,
              "column": 7
            },
            {
              "title": "redirect targets are served",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 21,
                      "parallelIndex": 21,
                      "status": "passed",
                      "duration": 269,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.237Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "435b8a583a557afdb4f4-1953e0e87b9ede5e9f3e",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 82,
              "column": 7
            },
            {
              "title": "an unknown address is not served as a page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 21,
                      "parallelIndex": 21,
                      "status": "passed",
                      "duration": 25,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.523Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "435b8a583a557afdb4f4-cf40560c183e754a8e41",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 88,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/postalcodes.spec.ts",
      "file": "tests/ui/postalcodes.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "ZIP code overlaps (API)",
          "file": "tests/ui/postalcodes.spec.ts",
          "line": 38,
          "column": 6,
          "specs": [
            {
              "title": "78701 overlaps TX-37 and Travis County, with land area",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 22,
                      "status": "passed",
                      "duration": 138,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.491Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-fd9f717d5d792e008913",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 43,
              "column": 7
            },
            {
              "title": "a ZIP split across districts and counties: 02467 (Chestnut Hill, MA)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 22,
                      "status": "passed",
                      "duration": 44,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.698Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-b1cff2326cd3f5773029",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 54,
              "column": 7
            },
            {
              "title": "the edges read both ways: TX-37 and Travis County list 78701",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 22,
                      "status": "passed",
                      "duration": 46,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.775Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-9053988a012c927e29a5",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 61,
              "column": 7
            },
            {
              "title": "almost every ZIP has a county",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "ZIPs without a county",
                      "description": "305 of 33791"
                    }
                  ],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 22,
                      "status": "passed",
                      "duration": 28560,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.835Z",
                      "annotations": [
                        {
                          "type": "ZIPs without a county",
                          "description": "305 of 33791"
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-91224e7aa3b0911623c7",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 73,
              "column": 7
            }
          ]
        },
        {
          "title": "ZIP code pages",
          "file": "tests/ui/postalcodes.spec.ts",
          "line": 86,
          "column": 6,
          "specs": [
            {
              "title": "78701 lists TX-37 and Travis County, linked",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 22,
                      "status": "passed",
                      "duration": 268,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:37.413Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/postalcodes-ZIP-code-pages-b006c-37-and-Travis-County-linked-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-dcfd4ffc4d7c795082e0",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 95,
              "column": 7
            },
            {
              "title": "02467 lists three districts, largest overlap first, and three counties",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 22,
                      "status": "passed",
                      "duration": 213,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:37.756Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/postalcodes-ZIP-code-pages-8dbdc-ap-first-and-three-counties-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-29298cb4d577f7a7bfe7",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 104,
              "column": 7
            },
            {
              "title": "the water-only \"ZZ\" district is not listed: 60611 (Chicago, on Lake Michigan)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 22,
                      "status": "passed",
                      "duration": 236,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:37.988Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/postalcodes-ZIP-code-pages-53b84-1-Chicago-on-Lake-Michigan--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-c65d4ecf3d263b810145",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 113,
              "column": 7
            },
            {
              "title": "the ZIP list shows each ZIP with its districts",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 22,
                      "status": "passed",
                      "duration": 783,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:38.251Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/postalcodes-ZIP-code-pages-69177-each-ZIP-with-its-districts-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-6c3a7e83de813fd10f0b",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 120,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/routing.spec.ts",
      "file": "tests/ui/routing.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "routing: canonical URLs per collection",
          "file": "tests/ui/routing.spec.ts",
          "line": 40,
          "column": 6,
          "specs": [
            {
              "title": "candidates: sitemap URLs serve their page with rel=canonical = the sitemap URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 276,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] child:/candidates/sitemap-candidates.xml: https://us.elect.info/candidates/sitemap-candidates-c.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] candidates: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/candidates/chris-mapp-h8tx27080/, https://us.elect.info/candidates/chris-b-royal-h0tx34059/, https://us.elect.info/candidates/charles-obadiah-baldwin-p80005499/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.325Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-7e72ef257b7e33487ee9",
              "file": "tests/ui/routing.spec.ts",
              "line": 44,
              "column": 9
            },
            {
              "title": "committees: sitemap URLs serve their page with rel=canonical = the sitemap URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 1952,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] child:/committees/sitemap-committees.xml: https://us.elect.info/committees/sitemap-committees-j.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] committees: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/committees/jay-fawcett-for-congress-2006-c00413823/, https://us.elect.info/committees/julia-carson-for-congress-committee-c00311969/, https://us.elect.info/committees/jay-gaffney-for-congress-c00102210/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.676Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-6a2ccbae2d970ac2c3e6",
              "file": "tests/ui/routing.spec.ts",
              "line": 44,
              "column": 9
            },
            {
              "title": "parties: sitemap URLs serve their page with rel=canonical = the sitemap URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 160,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] parties: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/parties/fs/, https://us.elect.info/parties/nic/, https://us.elect.info/parties/right-to-life/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.650Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-9a390171348199e3fe37",
              "file": "tests/ui/routing.spec.ts",
              "line": 44,
              "column": 9
            },
            {
              "title": "offices: sitemap URLs serve their page with rel=canonical = the sitemap URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 176,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] offices: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/offices/house/pa-13/, https://us.elect.info/offices/house/id-02/, https://us.elect.info/offices/senate/american-samoa/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.824Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-d3be535c29f4096c9220",
              "file": "tests/ui/routing.spec.ts",
              "line": 44,
              "column": 9
            },
            {
              "title": "districts: sitemap URLs serve their page with rel=canonical = the sitemap URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 45,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] districts: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/districts/ok-03/, https://us.elect.info/districts/ca-39/, https://us.elect.info/districts/nj-06/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.017Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-427ce06575114febc501",
              "file": "tests/ui/routing.spec.ts",
              "line": 44,
              "column": 9
            },
            {
              "title": "states: sitemap URLs serve their page with rel=canonical = the sitemap URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 286,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] states: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/states/south-dakota/, https://us.elect.info/states/puerto-rico/, https://us.elect.info/states/virginia/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.074Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-8e99a0e3eb3637999e3a",
              "file": "tests/ui/routing.spec.ts",
              "line": 44,
              "column": 9
            },
            {
              "title": "elections: sitemap URLs serve their page with rel=canonical = the sitemap URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 242,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-manual-20261024] elections: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/elections/2022/, https://us.elect.info/elections/2014/, https://us.elect.info/elections/1994/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.371Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-9897885e79ca8680f521",
              "file": "tests/ui/routing.spec.ts",
              "line": 44,
              "column": 9
            },
            {
              "title": "party badge links by FEC code redirect to the party page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 456,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.626Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-6f7f16146e9fcae9c6f1",
              "file": "tests/ui/routing.spec.ts",
              "line": 59,
              "column": 7
            }
          ]
        },
        {
          "title": "routing: every index link resolves",
          "file": "tests/ui/routing.spec.ts",
          "line": 71,
          "column": 6,
          "specs": [
            {
              "title": "/candidates/ first-page links all answer 200 or 301",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 11466,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:12.095Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-every-inde-d47ad-links-all-answer-200-or-301-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-a17ae3fc2924fcb5ebd6",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/committees/ first-page links all answer 200 or 301",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 5005,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:23.625Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-every-inde-a9934-links-all-answer-200-or-301-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-5a49ba9c6938493d73e1",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/parties/ first-page links all answer 200 or 301",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 6572,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:28.648Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-every-inde-460ac-links-all-answer-200-or-301-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-c682837875ef71f142bb",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/offices/ first-page links all answer 200 or 301",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 1026,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:35.238Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-every-inde-530ff-links-all-answer-200-or-301-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-89f42d8f841e3082c77a",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/districts/ first-page links all answer 200 or 301",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 829,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:36.280Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-every-inde-05f7d-links-all-answer-200-or-301-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-88f733cf8629f34dddff",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/elections/ first-page links all answer 200 or 301",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 4871,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:37.128Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-every-inde-57a14-links-all-answer-200-or-301-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-3800effe3714880c03cd",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/employers/ first-page links all answer 200 or 301",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 10188,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:42.014Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-every-inde-96c98-links-all-answer-200-or-301-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-22e23060552aa17bc15f",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/vendors/ first-page links all answer 200 or 301",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 356,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:52.216Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-every-inde-cf190-links-all-answer-200-or-301-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-676c232661cc4f58e461",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            }
          ]
        },
        {
          "title": "routing: unknown addresses",
          "file": "tests/ui/routing.spec.ts",
          "line": 91,
          "column": 6,
          "specs": [
            {
              "title": "an unknown entity path answers 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "passed",
                      "duration": 31,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:52.588Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "43935043b4e8ab2472fa-b05908296c32b152b967",
              "file": "tests/ui/routing.spec.ts",
              "line": 92,
              "column": 7
            },
            {
              "title": "an unknown leaf entity path serves the collection shell",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 23,
                      "status": "failed",
                      "duration": 52,
                      "error": {
                        "message": "Error: /individuals/no-such-entity-zz/ should serve the shell\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /individuals/no-such-entity-zz/ should serve the shell\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at /app/tests/ui/routing.spec.ts:110:81",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 81,
                          "line": 110
                        },
                        "snippet": "\u001b[0m \u001b[90m 108 |\u001b[39m     \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m col \u001b[36mof\u001b[39m [\u001b[32m'individuals'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'employers'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'vendors'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'blocks'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'precincts'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'tracts'\u001b[39m]) {\n \u001b[90m 109 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m`/${col}/no-such-entity-zz/`\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 110 |\u001b[39m       expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`/${col}/no-such-entity-zz/ should serve the shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 111 |\u001b[39m       expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'content-type'\u001b[39m] \u001b[33m?\u001b[39m\u001b[33m?\u001b[39m \u001b[32m''\u001b[39m\u001b[33m,\u001b[39m \u001b[32m`/${col}/ shell is HTML`\u001b[39m)\u001b[33m.\u001b[39mtoContain(\u001b[32m'text/html'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 112 |\u001b[39m     }\n \u001b[90m 113 |\u001b[39m   })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 81,
                            "line": 110
                          },
                          "message": "Error: /individuals/no-such-entity-zz/ should serve the shell\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  108 |     for (const col of ['individuals', 'employers', 'vendors', 'blocks', 'precincts', 'tracts']) {\n  109 |       const res = await request.get(`/${col}/no-such-entity-zz/`, { maxRedirects: 0 });\n> 110 |       expect(res.status(), `/${col}/no-such-entity-zz/ should serve the shell`).toBe(200);\n      |                                                                                 ^\n  111 |       expect(res.headers()['content-type'] ?? '', `/${col}/ shell is HTML`).toContain('text/html');\n  112 |     }\n  113 |   });\n    at /app/tests/ui/routing.spec.ts:110:81"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:52.633Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-unknown-ad-1c942-serves-the-collection-shell-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 81,
                        "line": 110
                      }
                    },
                    {
                      "workerIndex": 99,
                      "parallelIndex": 7,
                      "status": "failed",
                      "duration": 91,
                      "error": {
                        "message": "Error: /individuals/no-such-entity-zz/ should serve the shell\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /individuals/no-such-entity-zz/ should serve the shell\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at /app/tests/ui/routing.spec.ts:110:81",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 81,
                          "line": 110
                        },
                        "snippet": "\u001b[0m \u001b[90m 108 |\u001b[39m     \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m col \u001b[36mof\u001b[39m [\u001b[32m'individuals'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'employers'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'vendors'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'blocks'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'precincts'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'tracts'\u001b[39m]) {\n \u001b[90m 109 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m`/${col}/no-such-entity-zz/`\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 110 |\u001b[39m       expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`/${col}/no-such-entity-zz/ should serve the shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 111 |\u001b[39m       expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'content-type'\u001b[39m] \u001b[33m?\u001b[39m\u001b[33m?\u001b[39m \u001b[32m''\u001b[39m\u001b[33m,\u001b[39m \u001b[32m`/${col}/ shell is HTML`\u001b[39m)\u001b[33m.\u001b[39mtoContain(\u001b[32m'text/html'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 112 |\u001b[39m     }\n \u001b[90m 113 |\u001b[39m   })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 81,
                            "line": 110
                          },
                          "message": "Error: /individuals/no-such-entity-zz/ should serve the shell\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  108 |     for (const col of ['individuals', 'employers', 'vendors', 'blocks', 'precincts', 'tracts']) {\n  109 |       const res = await request.get(`/${col}/no-such-entity-zz/`, { maxRedirects: 0 });\n> 110 |       expect(res.status(), `/${col}/no-such-entity-zz/ should serve the shell`).toBe(200);\n      |                                                                                 ^\n  111 |       expect(res.headers()['content-type'] ?? '', `/${col}/ shell is HTML`).toContain('text/html');\n  112 |     }\n  113 |   });\n    at /app/tests/ui/routing.spec.ts:110:81"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:53.205Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-unknown-ad-1c942-serves-the-collection-shell-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-unknown-ad-1c942-serves-the-collection-shell-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 81,
                        "line": 110
                      }
                    },
                    {
                      "workerIndex": 100,
                      "parallelIndex": 7,
                      "status": "failed",
                      "duration": 64,
                      "error": {
                        "message": "Error: /individuals/no-such-entity-zz/ should serve the shell\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m",
                        "stack": "Error: /individuals/no-such-entity-zz/ should serve the shell\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n    at /app/tests/ui/routing.spec.ts:110:81",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 81,
                          "line": 110
                        },
                        "snippet": "\u001b[0m \u001b[90m 108 |\u001b[39m     \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m col \u001b[36mof\u001b[39m [\u001b[32m'individuals'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'employers'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'vendors'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'blocks'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'precincts'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'tracts'\u001b[39m]) {\n \u001b[90m 109 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(\u001b[32m`/${col}/no-such-entity-zz/`\u001b[39m\u001b[33m,\u001b[39m { maxRedirects\u001b[33m:\u001b[39m \u001b[35m0\u001b[39m })\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 110 |\u001b[39m       expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`/${col}/no-such-entity-zz/ should serve the shell`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 111 |\u001b[39m       expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'content-type'\u001b[39m] \u001b[33m?\u001b[39m\u001b[33m?\u001b[39m \u001b[32m''\u001b[39m\u001b[33m,\u001b[39m \u001b[32m`/${col}/ shell is HTML`\u001b[39m)\u001b[33m.\u001b[39mtoContain(\u001b[32m'text/html'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 112 |\u001b[39m     }\n \u001b[90m 113 |\u001b[39m   })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 81,
                            "line": 110
                          },
                          "message": "Error: /individuals/no-such-entity-zz/ should serve the shell\n\n\u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m200\u001b[39m\nReceived: \u001b[31m302\u001b[39m\n\n  108 |     for (const col of ['individuals', 'employers', 'vendors', 'blocks', 'precincts', 'tracts']) {\n  109 |       const res = await request.get(`/${col}/no-such-entity-zz/`, { maxRedirects: 0 });\n> 110 |       expect(res.status(), `/${col}/no-such-entity-zz/ should serve the shell`).toBe(200);\n      |                                                                                 ^\n  111 |       expect(res.headers()['content-type'] ?? '', `/${col}/ shell is HTML`).toContain('text/html');\n  112 |     }\n  113 |   });\n    at /app/tests/ui/routing.spec.ts:110:81"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:53.816Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/routing-routing-unknown-ad-1c942-serves-the-collection-shell-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 81,
                        "line": 110
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "43935043b4e8ab2472fa-bcb1fae8f9ad8a3e2a8b",
              "file": "tests/ui/routing.spec.ts",
              "line": 103,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/serving.spec.ts",
      "file": "tests/ui/serving.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "sitemaps",
          "file": "tests/ui/serving.spec.ts",
          "line": 22,
          "column": 6,
          "specs": [
            {
              "title": "candidates: the index lists one file per lead character, each a urlset",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 3538,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.465Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-9767824df806d6118ac7",
              "file": "tests/ui/serving.spec.ts",
              "line": 24,
              "column": 9
            },
            {
              "title": "committees: the index lists one file per lead character, each a urlset",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 1730,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:12.065Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-94aa544e2eac8eead0f5",
              "file": "tests/ui/serving.spec.ts",
              "line": 24,
              "column": 9
            },
            {
              "title": "a single-file collection sitemap is a urlset of its own pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 206,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.805Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-63d1a6acfa8333a6974d",
              "file": "tests/ui/serving.spec.ts",
              "line": 42,
              "column": 7
            },
            {
              "title": "a sitemap that does not exist is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 29,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.020Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-27904f07922a9c50fc21",
              "file": "tests/ui/serving.spec.ts",
              "line": 50,
              "column": 7
            }
          ]
        },
        {
          "title": "static assets",
          "file": "tests/ui/serving.spec.ts",
          "line": 57,
          "column": 6,
          "specs": [
            {
              "title": "state images are SVG with CORS and caching headers",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 40,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.060Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-1fa533f3ce271bd3f9a7",
              "file": "tests/ui/serving.spec.ts",
              "line": 58,
              "column": 7
            },
            {
              "title": "district GeoJSON is application/geo+json and parses",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 36,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.111Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-84da73e251953bb6b35b",
              "file": "tests/ui/serving.spec.ts",
              "line": 68,
              "column": 7
            },
            {
              "title": "a missing asset is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 24,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.157Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-ee59e849ca62b46a41f2",
              "file": "tests/ui/serving.spec.ts",
              "line": 76,
              "column": 7
            }
          ]
        },
        {
          "title": "collection roots",
          "file": "tests/ui/serving.spec.ts",
          "line": 83,
          "column": 6,
          "specs": [
            {
              "title": "a collection without its trailing slash redirects relatively to the index page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 35,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.190Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-35c0c19fdb3025d1d766",
              "file": "tests/ui/serving.spec.ts",
              "line": 84,
              "column": 7
            }
          ]
        },
        {
          "title": "rendered candidate and committee pages (us-pages)",
          "file": "tests/ui/serving.spec.ts",
          "line": 94,
          "column": 6,
          "specs": [
            {
              "title": "a candidate page is rendered for the current graph build",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 21,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.236Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-2a6fb769baeb12eacefb",
              "file": "tests/ui/serving.spec.ts",
              "line": 95,
              "column": 7
            },
            {
              "title": "/politicians/<id>/ is the candidate page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 27,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.266Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-780f42d8689617265d3c",
              "file": "tests/ui/serving.spec.ts",
              "line": 113,
              "column": 7
            },
            {
              "title": "a House candidate links its party, office and district",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 125,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.303Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-b0f8bf3b14a6ada4429f",
              "file": "tests/ui/serving.spec.ts",
              "line": 120,
              "column": 7
            },
            {
              "title": "a committee page lists its money and its party affinity",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 21,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.440Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-7f762ab6b05cacd4df49",
              "file": "tests/ui/serving.spec.ts",
              "line": 133,
              "column": 7
            },
            {
              "title": "an upper-case path renders with the lower-case canonical",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 165,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.470Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-a1e3e44aa623c8acb1ed",
              "file": "tests/ui/serving.spec.ts",
              "line": 149,
              "column": 7
            },
            {
              "title": "unknown candidate, committee and party paths are 404 without a static fallback",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 73,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.645Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-174b09c2fe387e2121a8",
              "file": "tests/ui/serving.spec.ts",
              "line": 155,
              "column": 7
            },
            {
              "title": "the money-flow Sankey and the Graph button work on a rendered candidate page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 24,
                      "status": "passed",
                      "duration": 770,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.733Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/serving-rendered-candidate-b4a46-n-a-rendered-candidate-page-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-bdca150ccaebfd909ea8",
              "file": "tests/ui/serving.spec.ts",
              "line": 164,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/sitemap.spec.ts",
      "file": "tests/ui/sitemap.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "sitemap URL validation",
          "file": "tests/ui/sitemap.spec.ts",
          "line": 202,
          "column": 6,
          "specs": [
            {
              "title": "sitemap index loads and contains child sitemaps",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 25,
                      "status": "passed",
                      "duration": 320,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.558Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/sitemap-sitemap-URL-valida-4660f-and-contains-child-sitemaps-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-c60e93b9c98b61485b7c",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 204,
              "column": 7
            },
            {
              "title": "sitemap index lists no nested index",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 25,
                      "status": "passed",
                      "duration": 1016,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.020Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-9c49175d52fd8bbb5808",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 220,
              "column": 7
            },
            {
              "title": "candidates sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 25,
                      "status": "passed",
                      "duration": 1534,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 27 URLs in /candidates/sitemap-candidates.xml\n"
                        },
                        {
                          "text": "Detected sitemap index, sampling 2 child sitemaps\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /candidates/sitemap-candidates.xml: https://us.elect.info/candidates/sitemap-candidates-u.xml, https://us.elect.info/candidates/sitemap-candidates-h.xml\n"
                        },
                        {
                          "text": "Processing child sitemap: /candidates/sitemap-candidates-u.xml\n"
                        },
                        {
                          "text": "  Found 32 URLs in /candidates/sitemap-candidates-u.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /candidates/sitemap-candidates-u.xml: https://us.elect.info/candidates/uryan-nelson-p60008661/, https://us.elect.info/candidates/uloma-ekpete-h6ca18131/, https://us.elect.info/candidates/uloma-ekpete-kama-h6ga11231/, https://us.elect.info/candidates/uthman-a-ibrahim-h4il01220/, https://us.elect.info/candidates/ursula-rozum-h2ny24119/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/uryan-nelson-p60008661/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/uloma-ekpete-h6ca18131/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/uloma-ekpete-kama-h6ga11231/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/uthman-a-ibrahim-h4il01220/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/ursula-rozum-h2ny24119/\n"
                        },
                        {
                          "text": "  Tested 5 URLs from /candidates/sitemap-candidates-u.xml\n"
                        },
                        {
                          "text": "Processing child sitemap: /candidates/sitemap-candidates-h.xml\n"
                        },
                        {
                          "text": "  Found 1125 URLs in /candidates/sitemap-candidates-h.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /candidates/sitemap-candidates-h.xml: https://us.elect.info/candidates/henry-bellmon-s4ok00026/, https://us.elect.info/candidates/h-n-sutherland-h6mo06096/, https://us.elect.info/candidates/homer-l-harris-h2wv04015/, https://us.elect.info/candidates/heather-alexandra-nunn-p40009268/, https://us.elect.info/candidates/henry-glover-logsdon-h0ky03010/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/henry-bellmon-s4ok00026/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/h-n-sutherland-h6mo06096/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/homer-l-harris-h2wv04015/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/heather-alexandra-nunn-p40009268/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/henry-glover-logsdon-h0ky03010/\n"
                        },
                        {
                          "text": "  Tested 5 URLs from /candidates/sitemap-candidates-h.xml\n"
                        },
                        {
                          "text": "Tested 10 URLs from /candidates/sitemap-candidates.xml\n"
                        },
                        {
                          "text": "Tested 10 URLs from candidates sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.054Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/sitemap-sitemap-URL-valida-6d4ff-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-a80be8d946ded7f69d5c",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 235,
              "column": 7
            },
            {
              "title": "committees sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 25,
                      "status": "passed",
                      "duration": 2408,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 27 URLs in /committees/sitemap-committees.xml\n"
                        },
                        {
                          "text": "Detected sitemap index, sampling 2 child sitemaps\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /committees/sitemap-committees.xml: https://us.elect.info/committees/sitemap-committees-z.xml, https://us.elect.info/committees/sitemap-committees-w.xml\n"
                        },
                        {
                          "text": "Processing child sitemap: /committees/sitemap-committees-z.xml\n"
                        },
                        {
                          "text": "  Found 202 URLs in /committees/sitemap-committees-z.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /committees/sitemap-committees-z.xml: https://us.elect.info/committees/zerqa-and-ilhan-victory-fund-c00854604/, https://us.elect.info/committees/zachry-corporation-political-action-committee-zacopac-c00048165/, https://us.elect.info/committees/zalcman-for-congress-c00574392/, https://us.elect.info/committees/zero-expenditure-in-the-election-of-aaron-avouris-for-president-c00736686/, https://us.elect.info/committees/zak-2012-c00525477/\n"
                        },
                        {
                          "text": "  Testing page: /committees/zerqa-and-ilhan-victory-fund-c00854604/\n"
                        },
                        {
                          "text": "  Testing page: /committees/zachry-corporation-political-action-committee-zacopac-c00048165/\n"
                        },
                        {
                          "text": "  Testing page: /committees/zalcman-for-congress-c00574392/\n"
                        },
                        {
                          "text": "  Testing page: /committees/zero-expenditure-in-the-election-of-aaron-avouris-for-president-c00736686/\n"
                        },
                        {
                          "text": "  Testing page: /committees/zak-2012-c00525477/\n"
                        },
                        {
                          "text": "  Tested 5 URLs from /committees/sitemap-committees-z.xml\n"
                        },
                        {
                          "text": "Processing child sitemap: /committees/sitemap-committees-w.xml\n"
                        },
                        {
                          "text": "  Found 3157 URLs in /committees/sitemap-committees-w.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /committees/sitemap-committees-w.xml: https://us.elect.info/committees/warner-for-us-senate-c00102129/, https://us.elect.info/committees/worlds-richest-person-josue-larose-civil-engineering-firms-committee-c00604876/, https://us.elect.info/committees/wonnacott-for-congress-c00564971/, https://us.elect.info/committees/western-company-of-north-america-safepacs-c00077073/, https://us.elect.info/committees/wolff-for-congress-c00725028/\n"
                        },
                        {
                          "text": "  Testing page: /committees/warner-for-us-senate-c00102129/\n"
                        },
                        {
                          "text": "  Testing page: /committees/worlds-richest-person-josue-larose-civil-engineering-firms-committee-c00604876/\n"
                        },
                        {
                          "text": "  Testing page: /committees/wonnacott-for-congress-c00564971/\n"
                        },
                        {
                          "text": "  Testing page: /committees/western-company-of-north-america-safepacs-c00077073/\n"
                        },
                        {
                          "text": "  Testing page: /committees/wolff-for-congress-c00725028/\n"
                        },
                        {
                          "text": "  Tested 5 URLs from /committees/sitemap-committees-w.xml\n"
                        },
                        {
                          "text": "Tested 10 URLs from /committees/sitemap-committees.xml\n"
                        },
                        {
                          "text": "Tested 10 URLs from committees sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.606Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/sitemap-sitemap-URL-valida-0da0a-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-87023309750eb69e70c2",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 254,
              "column": 7
            },
            {
              "title": "parties sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 25,
                      "status": "passed",
                      "duration": 421,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 290 URLs in /parties/sitemap-parties.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /parties/sitemap-parties.xml: https://us.elect.info/parties/df/, https://us.elect.info/parties/sap/, https://us.elect.info/parties/aup/, https://us.elect.info/parties/ikn/, https://us.elect.info/parties/tra/\n"
                        },
                        {
                          "text": "Testing page: /parties/df/\n"
                        },
                        {
                          "text": "Testing page: /parties/sap/\n"
                        },
                        {
                          "text": "Testing page: /parties/aup/\n"
                        },
                        {
                          "text": "Testing page: /parties/ikn/\n"
                        },
                        {
                          "text": "Testing page: /parties/tra/\n"
                        },
                        {
                          "text": "Tested 5 URLs from /parties/sitemap-parties.xml\n"
                        },
                        {
                          "text": "Tested 5 URLs from parties sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.029Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/sitemap-sitemap-URL-valida-56967-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-8947fc49728288b347b0",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 273,
              "column": 7
            },
            {
              "title": "offices sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 25,
                      "status": "passed",
                      "duration": 460,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 741 URLs in /offices/sitemap-offices.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /offices/sitemap-offices.xml: https://us.elect.info/offices/house/la-04/, https://us.elect.info/offices/house/pa-15/, https://us.elect.info/offices/house/oh-06/, https://us.elect.info/offices/house/wa-07/, https://us.elect.info/offices/house/ky-04/\n"
                        },
                        {
                          "text": "Testing page: /offices/house/la-04/\n"
                        },
                        {
                          "text": "Testing page: /offices/house/pa-15/\n"
                        },
                        {
                          "text": "Testing page: /offices/house/oh-06/\n"
                        },
                        {
                          "text": "Testing page: /offices/house/wa-07/\n"
                        },
                        {
                          "text": "Testing page: /offices/house/ky-04/\n"
                        },
                        {
                          "text": "Tested 5 URLs from /offices/sitemap-offices.xml\n"
                        },
                        {
                          "text": "Tested 5 URLs from offices sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.465Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/sitemap-sitemap-URL-valida-10822-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-8e94254e8554d3a49e2d",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 289,
              "column": 7
            },
            {
              "title": "districts sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 25,
                      "status": "passed",
                      "duration": 461,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 441 URLs in /districts/sitemap-districts.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /districts/sitemap-districts.xml: https://us.elect.info/districts/wa-10/, https://us.elect.info/districts/mi-08/, https://us.elect.info/districts/wa-03/, https://us.elect.info/districts/fl-05/, https://us.elect.info/districts/ny-21/\n"
                        },
                        {
                          "text": "Testing page: /districts/wa-10/\n"
                        },
                        {
                          "text": "Testing page: /districts/mi-08/\n"
                        },
                        {
                          "text": "Testing page: /districts/wa-03/\n"
                        },
                        {
                          "text": "Testing page: /districts/fl-05/\n"
                        },
                        {
                          "text": "Testing page: /districts/ny-21/\n"
                        },
                        {
                          "text": "Tested 5 URLs from /districts/sitemap-districts.xml\n"
                        },
                        {
                          "text": "Tested 5 URLs from districts sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.942Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/sitemap-sitemap-URL-valida-d74b1-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-e977450acfe43ef5ce30",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 305,
              "column": 7
            },
            {
              "title": "states sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 25,
                      "status": "passed",
                      "duration": 584,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 52 URLs in /states/sitemap-states.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /states/sitemap-states.xml: https://us.elect.info/states/new-hampshire/, https://us.elect.info/states/maine/, https://us.elect.info/states/north-carolina/, https://us.elect.info/states/arkansas/, https://us.elect.info/states/nevada/\n"
                        },
                        {
                          "text": "Testing page: /states/new-hampshire/\n"
                        },
                        {
                          "text": "Testing page: /states/maine/\n"
                        },
                        {
                          "text": "Testing page: /states/north-carolina/\n"
                        },
                        {
                          "text": "Testing page: /states/arkansas/\n"
                        },
                        {
                          "text": "Testing page: /states/nevada/\n"
                        },
                        {
                          "text": "Tested 5 URLs from /states/sitemap-states.xml\n"
                        },
                        {
                          "text": "Tested 5 URLs from states sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.416Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/sitemap-sitemap-URL-valida-e7685-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-2974a6e40c0ee82198bf",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 321,
              "column": 7
            },
            {
              "title": "elections sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 25,
                      "status": "passed",
                      "duration": 683,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 25 URLs in /elections/sitemap-elections.xml\n"
                        },
                        {
                          "text": "[sample seed=prod-manual-20261024] /elections/sitemap-elections.xml: https://us.elect.info/elections/2008/, https://us.elect.info/elections/2002/, https://us.elect.info/elections/1992/, https://us.elect.info/elections/1986/, https://us.elect.info/elections/1980/\n"
                        },
                        {
                          "text": "Testing page: /elections/2008/\n"
                        },
                        {
                          "text": "Testing page: /elections/2002/\n"
                        },
                        {
                          "text": "Testing page: /elections/1992/\n"
                        },
                        {
                          "text": "Testing page: /elections/1986/\n"
                        },
                        {
                          "text": "Testing page: /elections/1980/\n"
                        },
                        {
                          "text": "Tested 5 URLs from /elections/sitemap-elections.xml\n"
                        },
                        {
                          "text": "Tested 5 URLs from elections sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:16.017Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/sitemap-sitemap-URL-valida-cf8a5-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-869ad0437e25b2768dea",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 337,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/us.spec.ts",
      "file": "tests/ui/us.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "us.elect.info",
          "file": "tests/ui/us.spec.ts",
          "line": 3,
          "column": 6,
          "specs": [
            {
              "title": "homepage loads with title",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 26,
                      "parallelIndex": 26,
                      "status": "passed",
                      "duration": 411,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.478Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/us-us-elect-info-homepage-loads-with-title-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-8afeb95d04c94adeed96",
              "file": "tests/ui/us.spec.ts",
              "line": 4,
              "column": 7
            },
            {
              "title": "entity stats display",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 26,
                      "parallelIndex": 26,
                      "status": "passed",
                      "duration": 248,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.078Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/us-us-elect-info-entity-stats-display-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-49e351c56a50ed35776c",
              "file": "tests/ui/us.spec.ts",
              "line": 10,
              "column": 7
            },
            {
              "title": "CSS assets load",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 26,
                      "parallelIndex": 26,
                      "status": "passed",
                      "duration": 141,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.352Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/us-us-elect-info-CSS-assets-load-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-9f6402d7bf0b7a821851",
              "file": "tests/ui/us.spec.ts",
              "line": 16,
              "column": 7
            },
            {
              "title": "JS assets load",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 26,
                      "parallelIndex": 26,
                      "status": "passed",
                      "duration": 183,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.508Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/us-us-elect-info-JS-assets-load-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-6e13cf9f04841582af4e",
              "file": "tests/ui/us.spec.ts",
              "line": 21,
              "column": 7
            },
            {
              "title": "404 page works",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 26,
                      "parallelIndex": 26,
                      "status": "passed",
                      "duration": 143,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.706Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/us-us-elect-info-404-page-works-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-f161db786bfcba883987",
              "file": "tests/ui/us.spec.ts",
              "line": 27,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/vendor-purpose-lifecycle.spec.ts",
      "file": "tests/ui/vendor-purpose-lifecycle.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "unavailable cycle empty groups retains raw disclosure",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 27,
                  "parallelIndex": 27,
                  "status": "passed",
                  "duration": 604,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:08.581Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purpose-lifecycle-u-ddd71-oups-retains-raw-disclosure-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "fe31ae87325961aac612-8330dde0efbedb1a3667",
          "file": "tests/ui/vendor-purpose-lifecycle.spec.ts",
          "line": 25,
          "column": 7
        },
        {
          "title": "unavailable cycle request error retains raw disclosure",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 27,
                  "parallelIndex": 27,
                  "status": "passed",
                  "duration": 453,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:09.327Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purpose-lifecycle-u-93fce-rror-retains-raw-disclosure-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "fe31ae87325961aac612-16fd070860d17139476d",
          "file": "tests/ui/vendor-purpose-lifecycle.spec.ts",
          "line": 25,
          "column": 7
        },
        {
          "title": "latest cycle wins over a slow previous request, without duplicate charts",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 27,
                  "parallelIndex": 27,
                  "status": "passed",
                  "duration": 460,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:09.800Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purpose-lifecycle-l-22cdc-st-without-duplicate-charts-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "fe31ae87325961aac612-24b76132a8b01c12dfcb",
          "file": "tests/ui/vendor-purpose-lifecycle.spec.ts",
          "line": 43,
          "column": 5
        },
        {
          "title": "top-purpose text is escaped in the expandable table",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 27,
                  "parallelIndex": 27,
                  "status": "passed",
                  "duration": 413,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:10.281Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purpose-lifecycle-t-d5080-ped-in-the-expandable-table-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "fe31ae87325961aac612-274c346af4b1f907ee13",
          "file": "tests/ui/vendor-purpose-lifecycle.spec.ts",
          "line": 71,
          "column": 5
        },
        {
          "title": "signed group amounts use positive shares and stable IDs without negative ribbons",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 27,
                  "parallelIndex": 27,
                  "status": "passed",
                  "duration": 346,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:10.711Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purpose-lifecycle-s-4147f-Ds-without-negative-ribbons-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "fe31ae87325961aac612-0682bfcec137b189cf58",
          "file": "tests/ui/vendor-purpose-lifecycle.spec.ts",
          "line": 81,
          "column": 5
        },
        {
          "title": "refund-only groups keep the signed table without a misleading share or empty Sankey",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 27,
                  "parallelIndex": 27,
                  "status": "passed",
                  "duration": 191,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:11.070Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purpose-lifecycle-r-6695c-ading-share-or-empty-Sankey-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "fe31ae87325961aac612-ef072c682574434209c9",
          "file": "tests/ui/vendor-purpose-lifecycle.spec.ts",
          "line": 110,
          "column": 5
        }
      ]
    },
    {
      "title": "tests/ui/vendor-purposes.spec.ts",
      "file": "tests/ui/vendor-purposes.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "three-column Sankey fills the card and contains both link stages after mount and resize",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 28,
                  "parallelIndex": 28,
                  "status": "passed",
                  "duration": 386,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:16.020Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-three-colu-97f70-ages-after-mount-and-resize-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "77632b1a04bb4d3528ee-446a5f1868754a5eda1b",
          "file": "tests/ui/vendor-purposes.spec.ts",
          "line": 429,
          "column": 5
        },
        {
          "title": "mobile table scrolls all numeric columns and expands raw purposes at full width",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 28,
                  "parallelIndex": 28,
                  "status": "passed",
                  "duration": 375,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:16.417Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-mobile-tab-69ed3--raw-purposes-at-full-width-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "id": "77632b1a04bb4d3528ee-aa725f965345886a8917",
          "file": "tests/ui/vendor-purposes.spec.ts",
          "line": 461,
          "column": 5
        }
      ],
      "suites": [
        {
          "title": "vendor purpose card — section and query",
          "file": "tests/ui/vendor-purposes.spec.ts",
          "line": 88,
          "column": 6,
          "specs": [
            {
              "title": "#purposes section is rendered on a vendor detail page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 440,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.585Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-11765-red-on-a-vendor-detail-page-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-e051af057221aef61daf",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 89,
              "column": 7
            },
            {
              "title": "VendorPurposeFlow query is issued with id and null cycle on initial load",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 312,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.178Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-4bd93--null-cycle-on-initial-load-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-ad4fc7ef3fa5b3608ee2",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 101,
              "column": 7
            },
            {
              "title": "query operation name is VendorPurposeFlow",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 330,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.507Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-9e3c5-n-name-is-VendorPurposeFlow-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-f95588600897b5c7f7b3",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 115,
              "column": 7
            }
          ]
        },
        {
          "title": "vendor purpose card — cycle selector",
          "file": "tests/ui/vendor-purposes.spec.ts",
          "line": 126,
          "column": 6,
          "specs": [
            {
              "title": "cycle selector is present with aria-label \"Purpose cycle\"",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 288,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:09.852Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-7e5d3-h-aria-label-Purpose-cycle--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-eaf613e13663e4046779",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 127,
              "column": 7
            },
            {
              "title": "cycle selector has an \"All cycles\" option as the first entry",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 273,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.155Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-361e5-s-option-as-the-first-entry-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-7d6b1fc2644e17d7a6be",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 136,
              "column": 7
            },
            {
              "title": "cycle options are populated from the vendor cycles field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 320,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.448Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-8a1fb-rom-the-vendor-cycles-field-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-28b4f3dcccf27ac21ab6",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 147,
              "column": 7
            },
            {
              "title": "selecting a cycle issues a new VendorPurposeFlow query with that cycle",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 277,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:10.783Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-876f1-eFlow-query-with-that-cycle-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-f9b4e907cf9ab0f5d176",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 159,
              "column": 7
            },
            {
              "title": "switching back to All cycles sends cycle: null",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 328,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.078Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-aecf0-All-cycles-sends-cycle-null-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-991420bd044423ba273e",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 179,
              "column": 7
            }
          ]
        },
        {
          "title": "vendor purpose card — filter input",
          "file": "tests/ui/vendor-purposes.spec.ts",
          "line": 197,
          "column": 6,
          "specs": [
            {
              "title": "filter input has aria-label \"Filter purpose groups\"",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 197,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.420Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-3173c-abel-Filter-purpose-groups--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-7ee276eeb86ebedd6b54",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 201,
              "column": 7
            },
            {
              "title": "typing in the filter narrows visible rows by group name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 232,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.634Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-f3055--visible-rows-by-group-name-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-6b70488c25c6b61eeec0",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 210,
              "column": 7
            },
            {
              "title": "filter matches topPurpose text as well as the group name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 225,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.881Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-f6779-t-as-well-as-the-group-name-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-d44b01d8826479b74bd2",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 221,
              "column": 7
            },
            {
              "title": "no match shows the empty message and zero rows",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 224,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:12.121Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-b8c47-empty-message-and-zero-rows-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-ab32474acc004d74f6ba",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 232,
              "column": 7
            }
          ]
        },
        {
          "title": "vendor purpose card — sortable headers",
          "file": "tests/ui/vendor-purposes.spec.ts",
          "line": 244,
          "column": 6,
          "specs": [
            {
              "title": "sortable headers Group, Amount, %, Payments, Clients are present",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 227,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:12.366Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-6167a-ayments-Clients-are-present-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-365b20a02a1208c75e4c",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 248,
              "column": 7
            },
            {
              "title": "default sort is Amount descending — Media Buying first",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 225,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:12.609Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-f6547-ending-—-Media-Buying-first-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-39040b7c2d6ab8ee710b",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 262,
              "column": 7
            },
            {
              "title": "clicking Group sorts alphabetically ascending, then descending",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 271,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:12.845Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-f26bf-y-ascending-then-descending-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-088449e62c586454d490",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 272,
              "column": 7
            },
            {
              "title": "clicking the active Amount header flips from desc to asc and back",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 289,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.130Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-99469-s-from-desc-to-asc-and-back-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-67e14db3fba142c57711",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 288,
              "column": 7
            },
            {
              "title": "non-active headers show aria-sort=\"none\"",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 216,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.435Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-215dc-eaders-show-aria-sort-none--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-d77070761e614b03420c",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 306,
              "column": 7
            }
          ]
        },
        {
          "title": "vendor purpose card — expandable group detail",
          "file": "tests/ui/vendor-purposes.spec.ts",
          "line": 318,
          "column": 6,
          "specs": [
            {
              "title": "each row has a details/summary element with the group name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 187,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.666Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-84aa0-element-with-the-group-name-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-aee3634fc70c27c6e676",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 322,
              "column": 7
            },
            {
              "title": "expanding details reveals topPurposes for that group",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 269,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.866Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-9dcd6--topPurposes-for-that-group-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-834a1301aa31030c82e5",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 336,
              "column": 7
            }
          ]
        },
        {
          "title": "vendor purpose card — Sankey / Table toggle",
          "file": "tests/ui/vendor-purposes.spec.ts",
          "line": 350,
          "column": 6,
          "specs": [
            {
              "title": "Sankey is the default view with a canvas visible",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 256,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.147Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-f797c--view-with-a-canvas-visible-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-f60df3b0e1a2bc247fd1",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 351,
              "column": 7
            },
            {
              "title": "Table button shows the table and hides the chart",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 313,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.413Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-54b56-e-table-and-hides-the-chart-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-d87e42dc7f697dfcfd2b",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 363,
              "column": 7
            },
            {
              "title": "switching back to Sankey restores the canvas",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 333,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:14.736Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-eb032--Sankey-restores-the-canvas-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-08c094850d3797551c61",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 375,
              "column": 7
            }
          ]
        },
        {
          "title": "vendor purpose card — fallback / empty states",
          "file": "tests/ui/vendor-purposes.spec.ts",
          "line": 388,
          "column": 6,
          "specs": [
            {
              "title": "\"Raw purposes\" disclosure appears when vendorPurposeFlow returns null",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 194,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.085Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-7b254-dorPurposeFlow-returns-null-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-6590a658907075686038",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 389,
              "column": 7
            },
            {
              "title": "\"Raw purposes\" disclosure appears when groups array is empty",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 188,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.293Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-6114c--when-groups-array-is-empty-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-01f46cd24f7650b234a4",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 400,
              "column": 7
            },
            {
              "title": "no \"Raw purposes\" disclosure when valid groups are present",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 237,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.493Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-72d06-en-valid-groups-are-present-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-cedf79b9e30f52c9bde6",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 408,
              "column": 7
            },
            {
              "title": "status element shows a message while loading and clears on success",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 28,
                      "status": "passed",
                      "duration": 259,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:15.744Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/vendor-purposes-vendor-pur-92a35-ading-and-clears-on-success-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "77632b1a04bb4d3528ee-ef48471b651b0a19c4d4",
              "file": "tests/ui/vendor-purposes.spec.ts",
              "line": 416,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/visitor-token.spec.ts",
      "file": "tests/ui/visitor-token.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [
        {
          "title": "GET /api/token is never an error, with or without the gate",
          "ok": true,
          "tags": [],
          "tests": [
            {
              "timeout": 30000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 29,
                  "parallelIndex": 29,
                  "status": "passed",
                  "duration": 105,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:29:08.552Z",
                  "annotations": [],
                  "attachments": []
                }
              ],
              "status": "expected"
            }
          ],
          "id": "66d11097bc5ff2c625f4-ba2e689c22ca1eb58a86",
          "file": "tests/ui/visitor-token.spec.ts",
          "line": 30,
          "column": 5
        }
      ],
      "suites": [
        {
          "title": "visitor-token gate",
          "file": "tests/ui/visitor-token.spec.ts",
          "line": 41,
          "column": 6,
          "specs": [
            {
              "title": "GET /api/token sets an HttpOnly token and a readable expiry",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this target has no visitor-token gate",
                      "location": {
                        "file": "/app/tests/ui/visitor-token.spec.ts",
                        "line": 45,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 29,
                      "parallelIndex": 29,
                      "status": "skipped",
                      "duration": 30,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.730Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this target has no visitor-token gate",
                          "location": {
                            "file": "/app/tests/ui/visitor-token.spec.ts",
                            "line": 45,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "66d11097bc5ff2c625f4-6a345a67524e2f99f69c",
              "file": "tests/ui/visitor-token.spec.ts",
              "line": 42,
              "column": 7
            },
            {
              "title": "without a token, /api/graphql answers 401",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this target has no visitor-token gate",
                      "location": {
                        "file": "/app/tests/ui/visitor-token.spec.ts",
                        "line": 58,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 29,
                      "parallelIndex": 29,
                      "status": "skipped",
                      "duration": 25,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.788Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this target has no visitor-token gate",
                          "location": {
                            "file": "/app/tests/ui/visitor-token.spec.ts",
                            "line": 58,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "66d11097bc5ff2c625f4-f396d27256170349746e",
              "file": "tests/ui/visitor-token.spec.ts",
              "line": 57,
              "column": 7
            },
            {
              "title": "an anon token runs persisted documents and nothing else",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this target has no visitor-token gate",
                      "location": {
                        "file": "/app/tests/ui/visitor-token.spec.ts",
                        "line": 70,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 29,
                      "parallelIndex": 29,
                      "status": "skipped",
                      "duration": 37,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.826Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this target has no visitor-token gate",
                          "location": {
                            "file": "/app/tests/ui/visitor-token.spec.ts",
                            "line": 70,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "66d11097bc5ff2c625f4-fb37317a2cef824e3dad",
              "file": "tests/ui/visitor-token.spec.ts",
              "line": 69,
              "column": 7
            }
          ]
        },
        {
          "title": "donor records are premium",
          "file": "tests/ui/visitor-token.spec.ts",
          "line": 98,
          "column": 6,
          "specs": [
            {
              "title": "an anonymous visitor gets the premium notice on Individual Donors",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this target has no visitor-token gate",
                      "location": {
                        "file": "/app/tests/ui/visitor-token.spec.ts",
                        "line": 100,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 29,
                      "parallelIndex": 29,
                      "status": "skipped",
                      "duration": 52,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.874Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this target has no visitor-token gate",
                          "location": {
                            "file": "/app/tests/ui/visitor-token.spec.ts",
                            "line": 100,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "66d11097bc5ff2c625f4-c8ffc6d48edd62fa84f1",
              "file": "tests/ui/visitor-token.spec.ts",
              "line": 103,
              "column": 7
            },
            {
              "title": "an anonymous visitor sees employer totals but not donor names",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this target has no visitor-token gate",
                      "location": {
                        "file": "/app/tests/ui/visitor-token.spec.ts",
                        "line": 100,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 29,
                      "parallelIndex": 29,
                      "status": "skipped",
                      "duration": 29,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.940Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this target has no visitor-token gate",
                          "location": {
                            "file": "/app/tests/ui/visitor-token.spec.ts",
                            "line": 100,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "66d11097bc5ff2c625f4-70bd87774f0fc06f5206",
              "file": "tests/ui/visitor-token.spec.ts",
              "line": 109,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/voter-cycles.spec.ts",
      "file": "tests/ui/voter-cycles.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "voters and the cycle facet (sites#355)",
          "file": "tests/ui/voter-cycles.spec.ts",
          "line": 33,
          "column": 6,
          "specs": [
            {
              "title": "a cycle scopes the voter list; the page offers the cycle and voting-history filters",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 30,
                      "parallelIndex": 30,
                      "status": "failed",
                      "duration": 16124,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:37:63",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 63,
                          "line": 37
                        },
                        "snippet": "\u001b[0m \u001b[90m 35 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockVoters(page)\u001b[33m;\u001b[39m\n \u001b[90m 36 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/?cycle=2024'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 37 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#entity-search-results-list'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'SMITH, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                               \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 38 |\u001b[39m     expect(lists(requests)[\u001b[35m0\u001b[39m]\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mcycle)\u001b[33m.\u001b[39mtoBe(\u001b[35m2024\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 39 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'voted in the 2023–2024 cycle'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 40 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 63,
                            "line": 37
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n\n  35 |     const requests = await mockVoters(page);\n  36 |     await page.goto('/voters/?cycle=2024');\n> 37 |     await expect(page.locator('#entity-search-results-list')).toContainText('SMITH, JANE', { timeout: 15000 });\n     |                                                               ^\n  38 |     expect(lists(requests)[0].variables.cycle).toBe(2024);\n  39 |     await expect(page.locator('.ei-cycle-notice')).toContainText('voted in the 2023–2024 cycle');\n  40 |\n    at /app/tests/ui/voter-cycles.spec.ts:37:63"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.618Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-f07a2--and-voting-history-filters-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-f07a2--and-voting-history-filters-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 63,
                        "line": 37
                      }
                    },
                    {
                      "workerIndex": 65,
                      "parallelIndex": 6,
                      "status": "failed",
                      "duration": 15864,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:37:63",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 63,
                          "line": 37
                        },
                        "snippet": "\u001b[0m \u001b[90m 35 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockVoters(page)\u001b[33m;\u001b[39m\n \u001b[90m 36 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/?cycle=2024'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 37 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#entity-search-results-list'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'SMITH, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                               \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 38 |\u001b[39m     expect(lists(requests)[\u001b[35m0\u001b[39m]\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mcycle)\u001b[33m.\u001b[39mtoBe(\u001b[35m2024\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 39 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'voted in the 2023–2024 cycle'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 40 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 63,
                            "line": 37
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n\n  35 |     const requests = await mockVoters(page);\n  36 |     await page.goto('/voters/?cycle=2024');\n> 37 |     await expect(page.locator('#entity-search-results-list')).toContainText('SMITH, JANE', { timeout: 15000 });\n     |                                                               ^\n  38 |     expect(lists(requests)[0].variables.cycle).toBe(2024);\n  39 |     await expect(page.locator('.ei-cycle-notice')).toContainText('voted in the 2023–2024 cycle');\n  40 |\n    at /app/tests/ui/voter-cycles.spec.ts:37:63"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:25.342Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-f07a2--and-voting-history-filters-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-f07a2--and-voting-history-filters-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-f07a2--and-voting-history-filters-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-f07a2--and-voting-history-filters-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 63,
                        "line": 37
                      }
                    },
                    {
                      "workerIndex": 92,
                      "parallelIndex": 6,
                      "status": "failed",
                      "duration": 15641,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:37:63",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 63,
                          "line": 37
                        },
                        "snippet": "\u001b[0m \u001b[90m 35 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockVoters(page)\u001b[33m;\u001b[39m\n \u001b[90m 36 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/?cycle=2024'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 37 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#entity-search-results-list'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'SMITH, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                               \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 38 |\u001b[39m     expect(lists(requests)[\u001b[35m0\u001b[39m]\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mcycle)\u001b[33m.\u001b[39mtoBe(\u001b[35m2024\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 39 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'voted in the 2023–2024 cycle'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 40 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 63,
                            "line": 37
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n\n  35 |     const requests = await mockVoters(page);\n  36 |     await page.goto('/voters/?cycle=2024');\n> 37 |     await expect(page.locator('#entity-search-results-list')).toContainText('SMITH, JANE', { timeout: 15000 });\n     |                                                               ^\n  38 |     expect(lists(requests)[0].variables.cycle).toBe(2024);\n  39 |     await expect(page.locator('.ei-cycle-notice')).toContainText('voted in the 2023–2024 cycle');\n  40 |\n    at /app/tests/ui/voter-cycles.spec.ts:37:63"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:41.981Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-f07a2--and-voting-history-filters-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-f07a2--and-voting-history-filters-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 63,
                        "line": 37
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "ec825ded4a6ea67b77e4-8dcb0d388f170a31c159",
              "file": "tests/ui/voter-cycles.spec.ts",
              "line": 34,
              "column": 7
            },
            {
              "title": "without a cycle, the primary filter means any cycle and no cycle is sent",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 103,
                      "parallelIndex": 6,
                      "status": "failed",
                      "duration": 15971,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:65:63",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 63,
                          "line": 65
                        },
                        "snippet": "\u001b[0m \u001b[90m 63 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockVoters(page)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/?f_primary=REP'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 65 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#entity-search-results-list'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'SMITH, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                               \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 66 |\u001b[39m     expect(lists(requests)[\u001b[35m0\u001b[39m]\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mcycle)\u001b[33m.\u001b[39mtoBeUndefined()\u001b[33m;\u001b[39m\n \u001b[90m 67 |\u001b[39m     expect(lists(requests)[\u001b[35m0\u001b[39m]\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mfilters)\u001b[33m.\u001b[39mtoEqual([{ field\u001b[33m:\u001b[39m \u001b[32m'primary'\u001b[39m\u001b[33m,\u001b[39m values\u001b[33m:\u001b[39m [\u001b[32m'REP'\u001b[39m] }])\u001b[33m;\u001b[39m\n \u001b[90m 68 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 63,
                            "line": 65
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n\n  63 |     const requests = await mockVoters(page);\n  64 |     await page.goto('/voters/?f_primary=REP');\n> 65 |     await expect(page.locator('#entity-search-results-list')).toContainText('SMITH, JANE', { timeout: 15000 });\n     |                                                               ^\n  66 |     expect(lists(requests)[0].variables.cycle).toBeUndefined();\n  67 |     expect(lists(requests)[0].variables.filters).toEqual([{ field: 'primary', values: ['REP'] }]);\n  68 |     await expect(page.locator('.ei-cycle-notice')).toHaveCount(0);\n    at /app/tests/ui/voter-cycles.spec.ts:65:63"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:58.222Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6d6a--cycle-and-no-cycle-is-sent-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6d6a--cycle-and-no-cycle-is-sent-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 63,
                        "line": 65
                      }
                    },
                    {
                      "workerIndex": 109,
                      "parallelIndex": 6,
                      "status": "failed",
                      "duration": 15921,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:65:63",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 63,
                          "line": 65
                        },
                        "snippet": "\u001b[0m \u001b[90m 63 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockVoters(page)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/?f_primary=REP'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 65 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#entity-search-results-list'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'SMITH, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                               \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 66 |\u001b[39m     expect(lists(requests)[\u001b[35m0\u001b[39m]\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mcycle)\u001b[33m.\u001b[39mtoBeUndefined()\u001b[33m;\u001b[39m\n \u001b[90m 67 |\u001b[39m     expect(lists(requests)[\u001b[35m0\u001b[39m]\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mfilters)\u001b[33m.\u001b[39mtoEqual([{ field\u001b[33m:\u001b[39m \u001b[32m'primary'\u001b[39m\u001b[33m,\u001b[39m values\u001b[33m:\u001b[39m [\u001b[32m'REP'\u001b[39m] }])\u001b[33m;\u001b[39m\n \u001b[90m 68 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 63,
                            "line": 65
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n\n  63 |     const requests = await mockVoters(page);\n  64 |     await page.goto('/voters/?f_primary=REP');\n> 65 |     await expect(page.locator('#entity-search-results-list')).toContainText('SMITH, JANE', { timeout: 15000 });\n     |                                                               ^\n  66 |     expect(lists(requests)[0].variables.cycle).toBeUndefined();\n  67 |     expect(lists(requests)[0].variables.filters).toEqual([{ field: 'primary', values: ['REP'] }]);\n  68 |     await expect(page.locator('.ei-cycle-notice')).toHaveCount(0);\n    at /app/tests/ui/voter-cycles.spec.ts:65:63"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:30:14.776Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6d6a--cycle-and-no-cycle-is-sent-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6d6a--cycle-and-no-cycle-is-sent-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6d6a--cycle-and-no-cycle-is-sent-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6d6a--cycle-and-no-cycle-is-sent-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 63,
                        "line": 65
                      }
                    },
                    {
                      "workerIndex": 112,
                      "parallelIndex": 4,
                      "status": "failed",
                      "duration": 19423,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:65:63",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 63,
                          "line": 65
                        },
                        "snippet": "\u001b[0m \u001b[90m 63 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockVoters(page)\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/?f_primary=REP'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 65 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#entity-search-results-list'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'SMITH, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                               \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 66 |\u001b[39m     expect(lists(requests)[\u001b[35m0\u001b[39m]\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mcycle)\u001b[33m.\u001b[39mtoBeUndefined()\u001b[33m;\u001b[39m\n \u001b[90m 67 |\u001b[39m     expect(lists(requests)[\u001b[35m0\u001b[39m]\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mfilters)\u001b[33m.\u001b[39mtoEqual([{ field\u001b[33m:\u001b[39m \u001b[32m'primary'\u001b[39m\u001b[33m,\u001b[39m values\u001b[33m:\u001b[39m [\u001b[32m'REP'\u001b[39m] }])\u001b[33m;\u001b[39m\n \u001b[90m 68 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 63,
                            "line": 65
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n\n  63 |     const requests = await mockVoters(page);\n  64 |     await page.goto('/voters/?f_primary=REP');\n> 65 |     await expect(page.locator('#entity-search-results-list')).toContainText('SMITH, JANE', { timeout: 15000 });\n     |                                                               ^\n  66 |     expect(lists(requests)[0].variables.cycle).toBeUndefined();\n  67 |     expect(lists(requests)[0].variables.filters).toEqual([{ field: 'primary', values: ['REP'] }]);\n  68 |     await expect(page.locator('.ei-cycle-notice')).toHaveCount(0);\n    at /app/tests/ui/voter-cycles.spec.ts:65:63"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:30:31.408Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6d6a--cycle-and-no-cycle-is-sent-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6d6a--cycle-and-no-cycle-is-sent-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 63,
                        "line": 65
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "ec825ded4a6ea67b77e4-c01c2baeab4bd4c00ab1",
              "file": "tests/ui/voter-cycles.spec.ts",
              "line": 62,
              "column": 7
            },
            {
              "title": "an index without cycle history falls back to all cycles, saying so",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 119,
                      "parallelIndex": 4,
                      "status": "failed",
                      "duration": 16350,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:74:63",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 63,
                          "line": 74
                        },
                        "snippet": "\u001b[0m \u001b[90m 72 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockVoters(page\u001b[33m,\u001b[39m { unavailable\u001b[33m:\u001b[39m \u001b[36mtrue\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 73 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/?cycle=2024'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 74 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#entity-search-results-list'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'SMITH, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                               \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 75 |\u001b[39m     expect(lists(requests)\u001b[33m.\u001b[39mmap(r \u001b[33m=>\u001b[39m r\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mcycle))\u001b[33m.\u001b[39mtoEqual([\u001b[35m2024\u001b[39m\u001b[33m,\u001b[39m undefined])\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'voter cycle history is still being indexed'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 77 |\u001b[39m   })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 63,
                            "line": 74
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n\n  72 |     const requests = await mockVoters(page, { unavailable: true });\n  73 |     await page.goto('/voters/?cycle=2024');\n> 74 |     await expect(page.locator('#entity-search-results-list')).toContainText('SMITH, JANE', { timeout: 15000 });\n     |                                                               ^\n  75 |     expect(lists(requests).map(r => r.variables.cycle)).toEqual([2024, undefined]);\n  76 |     await expect(page.locator('.ei-cycle-notice')).toContainText('voter cycle history is still being indexed');\n  77 |   });\n    at /app/tests/ui/voter-cycles.spec.ts:74:63"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:51.419Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-42022-ack-to-all-cycles-saying-so-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-42022-ack-to-all-cycles-saying-so-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 63,
                        "line": 74
                      }
                    },
                    {
                      "workerIndex": 121,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 16376,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:74:63",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 63,
                          "line": 74
                        },
                        "snippet": "\u001b[0m \u001b[90m 72 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockVoters(page\u001b[33m,\u001b[39m { unavailable\u001b[33m:\u001b[39m \u001b[36mtrue\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 73 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/?cycle=2024'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 74 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#entity-search-results-list'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'SMITH, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                               \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 75 |\u001b[39m     expect(lists(requests)\u001b[33m.\u001b[39mmap(r \u001b[33m=>\u001b[39m r\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mcycle))\u001b[33m.\u001b[39mtoEqual([\u001b[35m2024\u001b[39m\u001b[33m,\u001b[39m undefined])\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'voter cycle history is still being indexed'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 77 |\u001b[39m   })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 63,
                            "line": 74
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n\n  72 |     const requests = await mockVoters(page, { unavailable: true });\n  73 |     await page.goto('/voters/?cycle=2024');\n> 74 |     await expect(page.locator('#entity-search-results-list')).toContainText('SMITH, JANE', { timeout: 15000 });\n     |                                                               ^\n  75 |     expect(lists(requests).map(r => r.variables.cycle)).toEqual([2024, undefined]);\n  76 |     await expect(page.locator('.ei-cycle-notice')).toContainText('voter cycle history is still being indexed');\n  77 |   });\n    at /app/tests/ui/voter-cycles.spec.ts:74:63"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:31:08.354Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-42022-ack-to-all-cycles-saying-so-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-42022-ack-to-all-cycles-saying-so-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-42022-ack-to-all-cycles-saying-so-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-42022-ack-to-all-cycles-saying-so-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 63,
                        "line": 74
                      }
                    },
                    {
                      "workerIndex": 126,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 15563,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:74:63",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 63,
                          "line": 74
                        },
                        "snippet": "\u001b[0m \u001b[90m 72 |\u001b[39m     \u001b[36mconst\u001b[39m requests \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m mockVoters(page\u001b[33m,\u001b[39m { unavailable\u001b[33m:\u001b[39m \u001b[36mtrue\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 73 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/?cycle=2024'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 74 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#entity-search-results-list'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'SMITH, JANE'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                               \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 75 |\u001b[39m     expect(lists(requests)\u001b[33m.\u001b[39mmap(r \u001b[33m=>\u001b[39m r\u001b[33m.\u001b[39mvariables\u001b[33m.\u001b[39mcycle))\u001b[33m.\u001b[39mtoEqual([\u001b[35m2024\u001b[39m\u001b[33m,\u001b[39m undefined])\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'.ei-cycle-notice'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[32m'voter cycle history is still being indexed'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 77 |\u001b[39m   })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 63,
                            "line": 74
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#entity-search-results-list')\nExpected substring: \u001b[32m\"SMITH, JANE\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#entity-search-results-list') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#entity-search-results-list')\u001b[22m\n\n\n  72 |     const requests = await mockVoters(page, { unavailable: true });\n  73 |     await page.goto('/voters/?cycle=2024');\n> 74 |     await expect(page.locator('#entity-search-results-list')).toContainText('SMITH, JANE', { timeout: 15000 });\n     |                                                               ^\n  75 |     expect(lists(requests).map(r => r.variables.cycle)).toEqual([2024, undefined]);\n  76 |     await expect(page.locator('.ei-cycle-notice')).toContainText('voter cycle history is still being indexed');\n  77 |   });\n    at /app/tests/ui/voter-cycles.spec.ts:74:63"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:31:25.495Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-42022-ack-to-all-cycles-saying-so-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-42022-ack-to-all-cycles-saying-so-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 63,
                        "line": 74
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "ec825ded4a6ea67b77e4-251403d4611ce926f6ff",
              "file": "tests/ui/voter-cycles.spec.ts",
              "line": 71,
              "column": 7
            },
            {
              "title": "the voter detail page lists voting by cycle when the index has it",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 128,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 15580,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#cycles')\nExpected substring: \u001b[32m\"2023–2024: general, Democratic primary\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#cycles') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#cycles')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#cycles')\nExpected substring: \u001b[32m\"2023–2024: general, Democratic primary\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#cycles') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#cycles')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:86:27",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 27,
                          "line": 86
                        },
                        "snippet": "\u001b[0m \u001b[90m 84 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/v-1/?cycle=2024'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 85 |\u001b[39m     \u001b[36mconst\u001b[39m section \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#cycles'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 86 |\u001b[39m     \u001b[36mawait\u001b[39m expect(section)\u001b[33m.\u001b[39mtoContainText(\u001b[32m'2023–2024: general, Democratic primary'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                           \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 87 |\u001b[39m     \u001b[36mawait\u001b[39m expect(section\u001b[33m.\u001b[39mlocator(\u001b[32m'strong'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'2023–2024: general, Democratic primary'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 88 |\u001b[39m     \u001b[36mawait\u001b[39m expect(section\u001b[33m.\u001b[39mlocator(\u001b[32m'li'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText([\u001b[32m'2023–2024: general, Democratic primary'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'2019–2020: general'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'2015–2016: other elections'\u001b[39m])\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m   })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 27,
                            "line": 86
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#cycles')\nExpected substring: \u001b[32m\"2023–2024: general, Democratic primary\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#cycles') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#cycles')\u001b[22m\n\n\n  84 |     await page.goto('/voters/v-1/?cycle=2024');\n  85 |     const section = page.locator('#cycles');\n> 86 |     await expect(section).toContainText('2023–2024: general, Democratic primary', { timeout: 15000 });\n     |                           ^\n  87 |     await expect(section.locator('strong')).toHaveText('2023–2024: general, Democratic primary');\n  88 |     await expect(section.locator('li')).toHaveText(['2023–2024: general, Democratic primary', '2019–2020: general', '2015–2016: other elections']);\n  89 |   });\n    at /app/tests/ui/voter-cycles.spec.ts:86:27"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:31:41.647Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6f45-cycle-when-the-index-has-it-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6f45-cycle-when-the-index-has-it-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 27,
                        "line": 86
                      }
                    },
                    {
                      "workerIndex": 131,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 15948,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#cycles')\nExpected substring: \u001b[32m\"2023–2024: general, Democratic primary\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#cycles') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#cycles')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#cycles')\nExpected substring: \u001b[32m\"2023–2024: general, Democratic primary\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#cycles') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#cycles')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:86:27",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 27,
                          "line": 86
                        },
                        "snippet": "\u001b[0m \u001b[90m 84 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/v-1/?cycle=2024'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 85 |\u001b[39m     \u001b[36mconst\u001b[39m section \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#cycles'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 86 |\u001b[39m     \u001b[36mawait\u001b[39m expect(section)\u001b[33m.\u001b[39mtoContainText(\u001b[32m'2023–2024: general, Democratic primary'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                           \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 87 |\u001b[39m     \u001b[36mawait\u001b[39m expect(section\u001b[33m.\u001b[39mlocator(\u001b[32m'strong'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'2023–2024: general, Democratic primary'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 88 |\u001b[39m     \u001b[36mawait\u001b[39m expect(section\u001b[33m.\u001b[39mlocator(\u001b[32m'li'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText([\u001b[32m'2023–2024: general, Democratic primary'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'2019–2020: general'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'2015–2016: other elections'\u001b[39m])\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m   })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 27,
                            "line": 86
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#cycles')\nExpected substring: \u001b[32m\"2023–2024: general, Democratic primary\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#cycles') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#cycles')\u001b[22m\n\n\n  84 |     await page.goto('/voters/v-1/?cycle=2024');\n  85 |     const section = page.locator('#cycles');\n> 86 |     await expect(section).toContainText('2023–2024: general, Democratic primary', { timeout: 15000 });\n     |                           ^\n  87 |     await expect(section.locator('strong')).toHaveText('2023–2024: general, Democratic primary');\n  88 |     await expect(section.locator('li')).toHaveText(['2023–2024: general, Democratic primary', '2019–2020: general', '2015–2016: other elections']);\n  89 |   });\n    at /app/tests/ui/voter-cycles.spec.ts:86:27"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:31:57.810Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6f45-cycle-when-the-index-has-it-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6f45-cycle-when-the-index-has-it-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6f45-cycle-when-the-index-has-it-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6f45-cycle-when-the-index-has-it-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 27,
                        "line": 86
                      }
                    },
                    {
                      "workerIndex": 134,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 15577,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#cycles')\nExpected substring: \u001b[32m\"2023–2024: general, Democratic primary\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#cycles') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#cycles')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#cycles')\nExpected substring: \u001b[32m\"2023–2024: general, Democratic primary\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#cycles') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#cycles')\u001b[22m\n\n    at /app/tests/ui/voter-cycles.spec.ts:86:27",
                        "location": {
                          "file": "/app/tests/ui/voter-cycles.spec.ts",
                          "column": 27,
                          "line": 86
                        },
                        "snippet": "\u001b[0m \u001b[90m 84 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/voters/v-1/?cycle=2024'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 85 |\u001b[39m     \u001b[36mconst\u001b[39m section \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#cycles'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 86 |\u001b[39m     \u001b[36mawait\u001b[39m expect(section)\u001b[33m.\u001b[39mtoContainText(\u001b[32m'2023–2024: general, Democratic primary'\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                           \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 87 |\u001b[39m     \u001b[36mawait\u001b[39m expect(section\u001b[33m.\u001b[39mlocator(\u001b[32m'strong'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText(\u001b[32m'2023–2024: general, Democratic primary'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 88 |\u001b[39m     \u001b[36mawait\u001b[39m expect(section\u001b[33m.\u001b[39mlocator(\u001b[32m'li'\u001b[39m))\u001b[33m.\u001b[39mtoHaveText([\u001b[32m'2023–2024: general, Democratic primary'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'2019–2020: general'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'2015–2016: other elections'\u001b[39m])\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m   })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voter-cycles.spec.ts",
                            "column": 27,
                            "line": 86
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoContainText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#cycles')\nExpected substring: \u001b[32m\"2023–2024: general, Democratic primary\"\u001b[39m\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toContainText\" locator('#cycles') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#cycles')\u001b[22m\n\n\n  84 |     await page.goto('/voters/v-1/?cycle=2024');\n  85 |     const section = page.locator('#cycles');\n> 86 |     await expect(section).toContainText('2023–2024: general, Democratic primary', { timeout: 15000 });\n     |                           ^\n  87 |     await expect(section.locator('strong')).toHaveText('2023–2024: general, Democratic primary');\n  88 |     await expect(section.locator('li')).toHaveText(['2023–2024: general, Democratic primary', '2019–2020: general', '2015–2016: other elections']);\n  89 |   });\n    at /app/tests/ui/voter-cycles.spec.ts:86:27"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:32:14.552Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6f45-cycle-when-the-index-has-it-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-voters-and-th-b6f45-cycle-when-the-index-has-it-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voter-cycles.spec.ts",
                        "column": 27,
                        "line": 86
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "ec825ded4a6ea67b77e4-45177bf124f1603697d9",
              "file": "tests/ui/voter-cycles.spec.ts",
              "line": 79,
              "column": 7
            }
          ]
        },
        {
          "title": "homepage voters count in a cycle (sites#355)",
          "file": "tests/ui/voter-cycles.spec.ts",
          "line": 92,
          "column": 6,
          "specs": [
            {
              "title": "shows voters who voted in the cycle",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 138,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 191,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:32:30.719Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-homepage-vote-ef75e-ters-who-voted-in-the-cycle-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "ec825ded4a6ea67b77e4-460240d59590ab4bf6b9",
              "file": "tests/ui/voter-cycles.spec.ts",
              "line": 99,
              "column": 7
            },
            {
              "title": "before the voters index has cycles: the all-cycles total, labelled",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 138,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 163,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:32:31.005Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voter-cycles-homepage-vote-d30dd-e-all-cycles-total-labelled-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "ec825ded4a6ea67b77e4-c806f2648f3d7ab76d1b",
              "file": "tests/ui/voter-cycles.spec.ts",
              "line": 109,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/voters.spec.ts",
      "file": "tests/ui/voters.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "voters (premium)",
          "file": "tests/ui/voters.spec.ts",
          "line": 25,
          "column": 6,
          "specs": [
            {
              "title": "the public /api/graphql refuses voter queries",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 31,
                      "parallelIndex": 31,
                      "status": "passed",
                      "duration": 124,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.601Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "6970ccac81a50c81e377-5353dc9ff6280b8b8ce8",
              "file": "tests/ui/voters.spec.ts",
              "line": 30,
              "column": 7
            },
            {
              "title": "a premium visitor token reads voters through /api/graphql",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 31,
                      "parallelIndex": 31,
                      "status": "failed",
                      "duration": 52,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n    at /app/tests/ui/voters.spec.ts:60:55",
                        "location": {
                          "file": "/app/tests/ui/voters.spec.ts",
                          "column": 55,
                          "line": 60
                        },
                        "snippet": "\u001b[0m \u001b[90m 58 |\u001b[39m     expect(res\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 59 |\u001b[39m     \u001b[36mconst\u001b[39m body \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson() \u001b[36mas\u001b[39m { data\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { browseEntities\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { results\u001b[33m:\u001b[39m \u001b[33mArray\u001b[39m\u001b[33m<\u001b[39m{ id\u001b[33m:\u001b[39m string }\u001b[33m>\u001b[39m } } }\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 60 |\u001b[39m     expect(body\u001b[33m.\u001b[39mdata\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mbrowseEntities\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresults\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBe(\u001b[35m1\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                       \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 61 |\u001b[39m   })\u001b[33m;\u001b[39m\n \u001b[90m 62 |\u001b[39m\n \u001b[90m 63 |\u001b[39m   test(\u001b[32m'/voters/api/graphql answers voter queries and only POST'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ request }) \u001b[33m=>\u001b[39m {\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 55,
                            "line": 60
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n\n  58 |     expect(res.status()).toBe(200);\n  59 |     const body = await res.json() as { data?: { browseEntities?: { results: Array<{ id: string }> } } };\n> 60 |     expect(body.data?.browseEntities?.results.length).toBe(1);\n     |                                                       ^\n  61 |   });\n  62 |\n  63 |   test('/voters/api/graphql answers voter queries and only POST', async ({ request }) => {\n    at /app/tests/ui/voters.spec.ts:60:55"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:08.802Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-a-pr-c56cf--voters-through-api-graphql-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "column": 55,
                        "line": 60
                      }
                    },
                    {
                      "workerIndex": 33,
                      "parallelIndex": 31,
                      "status": "failed",
                      "duration": 180,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n    at /app/tests/ui/voters.spec.ts:60:55",
                        "location": {
                          "file": "/app/tests/ui/voters.spec.ts",
                          "column": 55,
                          "line": 60
                        },
                        "snippet": "\u001b[0m \u001b[90m 58 |\u001b[39m     expect(res\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 59 |\u001b[39m     \u001b[36mconst\u001b[39m body \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson() \u001b[36mas\u001b[39m { data\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { browseEntities\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { results\u001b[33m:\u001b[39m \u001b[33mArray\u001b[39m\u001b[33m<\u001b[39m{ id\u001b[33m:\u001b[39m string }\u001b[33m>\u001b[39m } } }\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 60 |\u001b[39m     expect(body\u001b[33m.\u001b[39mdata\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mbrowseEntities\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresults\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBe(\u001b[35m1\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                       \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 61 |\u001b[39m   })\u001b[33m;\u001b[39m\n \u001b[90m 62 |\u001b[39m\n \u001b[90m 63 |\u001b[39m   test(\u001b[32m'/voters/api/graphql answers voter queries and only POST'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ request }) \u001b[33m=>\u001b[39m {\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 55,
                            "line": 60
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n\n  58 |     expect(res.status()).toBe(200);\n  59 |     const body = await res.json() as { data?: { browseEntities?: { results: Array<{ id: string }> } } };\n> 60 |     expect(body.data?.browseEntities?.results.length).toBe(1);\n     |                                                       ^\n  61 |   });\n  62 |\n  63 |   test('/voters/api/graphql answers voter queries and only POST', async ({ request }) => {\n    at /app/tests/ui/voters.spec.ts:60:55"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:09.559Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-a-pr-c56cf--voters-through-api-graphql-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-a-pr-c56cf--voters-through-api-graphql-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "column": 55,
                        "line": 60
                      }
                    },
                    {
                      "workerIndex": 36,
                      "parallelIndex": 21,
                      "status": "failed",
                      "duration": 112,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n    at /app/tests/ui/voters.spec.ts:60:55",
                        "location": {
                          "file": "/app/tests/ui/voters.spec.ts",
                          "column": 55,
                          "line": 60
                        },
                        "snippet": "\u001b[0m \u001b[90m 58 |\u001b[39m     expect(res\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 59 |\u001b[39m     \u001b[36mconst\u001b[39m body \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson() \u001b[36mas\u001b[39m { data\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { browseEntities\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { results\u001b[33m:\u001b[39m \u001b[33mArray\u001b[39m\u001b[33m<\u001b[39m{ id\u001b[33m:\u001b[39m string }\u001b[33m>\u001b[39m } } }\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 60 |\u001b[39m     expect(body\u001b[33m.\u001b[39mdata\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mbrowseEntities\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresults\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBe(\u001b[35m1\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                       \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 61 |\u001b[39m   })\u001b[33m;\u001b[39m\n \u001b[90m 62 |\u001b[39m\n \u001b[90m 63 |\u001b[39m   test(\u001b[32m'/voters/api/graphql answers voter queries and only POST'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ request }) \u001b[33m=>\u001b[39m {\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 55,
                            "line": 60
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoBe\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // Object.is equality\u001b[22m\n\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31mundefined\u001b[39m\n\n  58 |     expect(res.status()).toBe(200);\n  59 |     const body = await res.json() as { data?: { browseEntities?: { results: Array<{ id: string }> } } };\n> 60 |     expect(body.data?.browseEntities?.results.length).toBe(1);\n     |                                                       ^\n  61 |   });\n  62 |\n  63 |   test('/voters/api/graphql answers voter queries and only POST', async ({ request }) => {\n    at /app/tests/ui/voters.spec.ts:60:55"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:10.462Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-a-pr-c56cf--voters-through-api-graphql-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "column": 55,
                        "line": 60
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-7fde10790fe436f2ce41",
              "file": "tests/ui/voters.spec.ts",
              "line": 55,
              "column": 7
            },
            {
              "title": "/voters/api/graphql answers voter queries and only POST",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 39,
                      "parallelIndex": 13,
                      "status": "failed",
                      "duration": 396,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoContain\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // indexOf\u001b[22m\n\n\u001b[1mMatcher error\u001b[22m: \u001b[31mreceived\u001b[39m value must not be null nor undefined\n\nReceived has value: \u001b[31mundefined\u001b[39m",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoContain\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // indexOf\u001b[22m\n\n\u001b[1mMatcher error\u001b[22m: \u001b[31mreceived\u001b[39m value must not be null nor undefined\n\nReceived has value: \u001b[31mundefined\u001b[39m\n    at /app/tests/ui/voters.spec.ts:66:44",
                        "location": {
                          "file": "/app/tests/ui/voters.spec.ts",
                          "column": 44,
                          "line": 66
                        },
                        "snippet": "\u001b[0m \u001b[90m 64 |\u001b[39m     \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39mpost(\u001b[32m'/voters/api/graphql'\u001b[39m\u001b[33m,\u001b[39m { data\u001b[33m:\u001b[39m { query\u001b[33m:\u001b[39m \u001b[33mBROWSE\u001b[39m } })\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m     expect(res\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 66 |\u001b[39m     expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                            \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 67 |\u001b[39m     \u001b[36mconst\u001b[39m body \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson() \u001b[36mas\u001b[39m { data\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { browseEntities\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { results\u001b[33m:\u001b[39m \u001b[33mArray\u001b[39m\u001b[33m<\u001b[39m{ id\u001b[33m:\u001b[39m string\u001b[33m;\u001b[39m name\u001b[33m:\u001b[39m string }\u001b[33m>\u001b[39m } } }\u001b[33m;\u001b[39m\n \u001b[90m 68 |\u001b[39m     expect(body\u001b[33m.\u001b[39mdata\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mbrowseEntities\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresults\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBe(\u001b[35m1\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 69 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 44,
                            "line": 66
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoContain\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // indexOf\u001b[22m\n\n\u001b[1mMatcher error\u001b[22m: \u001b[31mreceived\u001b[39m value must not be null nor undefined\n\nReceived has value: \u001b[31mundefined\u001b[39m\n\n  64 |     const res = await request.post('/voters/api/graphql', { data: { query: BROWSE } });\n  65 |     expect(res.status()).toBe(200);\n> 66 |     expect(res.headers()['cache-control']).toContain('no-store');\n     |                                            ^\n  67 |     const body = await res.json() as { data?: { browseEntities?: { results: Array<{ id: string; name: string }> } } };\n  68 |     expect(body.data?.browseEntities?.results.length).toBe(1);\n  69 |\n    at /app/tests/ui/voters.spec.ts:66:44"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:11.186Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-vote-bc862-voter-queries-and-only-POST-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "column": 44,
                        "line": 66
                      }
                    },
                    {
                      "workerIndex": 42,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 213,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoContain\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // indexOf\u001b[22m\n\n\u001b[1mMatcher error\u001b[22m: \u001b[31mreceived\u001b[39m value must not be null nor undefined\n\nReceived has value: \u001b[31mundefined\u001b[39m",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoContain\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // indexOf\u001b[22m\n\n\u001b[1mMatcher error\u001b[22m: \u001b[31mreceived\u001b[39m value must not be null nor undefined\n\nReceived has value: \u001b[31mundefined\u001b[39m\n    at /app/tests/ui/voters.spec.ts:66:44",
                        "location": {
                          "file": "/app/tests/ui/voters.spec.ts",
                          "column": 44,
                          "line": 66
                        },
                        "snippet": "\u001b[0m \u001b[90m 64 |\u001b[39m     \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39mpost(\u001b[32m'/voters/api/graphql'\u001b[39m\u001b[33m,\u001b[39m { data\u001b[33m:\u001b[39m { query\u001b[33m:\u001b[39m \u001b[33mBROWSE\u001b[39m } })\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m     expect(res\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 66 |\u001b[39m     expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                            \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 67 |\u001b[39m     \u001b[36mconst\u001b[39m body \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson() \u001b[36mas\u001b[39m { data\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { browseEntities\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { results\u001b[33m:\u001b[39m \u001b[33mArray\u001b[39m\u001b[33m<\u001b[39m{ id\u001b[33m:\u001b[39m string\u001b[33m;\u001b[39m name\u001b[33m:\u001b[39m string }\u001b[33m>\u001b[39m } } }\u001b[33m;\u001b[39m\n \u001b[90m 68 |\u001b[39m     expect(body\u001b[33m.\u001b[39mdata\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mbrowseEntities\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresults\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBe(\u001b[35m1\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 69 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 44,
                            "line": 66
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoContain\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // indexOf\u001b[22m\n\n\u001b[1mMatcher error\u001b[22m: \u001b[31mreceived\u001b[39m value must not be null nor undefined\n\nReceived has value: \u001b[31mundefined\u001b[39m\n\n  64 |     const res = await request.post('/voters/api/graphql', { data: { query: BROWSE } });\n  65 |     expect(res.status()).toBe(200);\n> 66 |     expect(res.headers()['cache-control']).toContain('no-store');\n     |                                            ^\n  67 |     const body = await res.json() as { data?: { browseEntities?: { results: Array<{ id: string; name: string }> } } };\n  68 |     expect(body.data?.browseEntities?.results.length).toBe(1);\n  69 |\n    at /app/tests/ui/voters.spec.ts:66:44"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:12.168Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-vote-bc862-voter-queries-and-only-POST-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-vote-bc862-voter-queries-and-only-POST-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "column": 44,
                        "line": 66
                      }
                    },
                    {
                      "workerIndex": 44,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 179,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoContain\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // indexOf\u001b[22m\n\n\u001b[1mMatcher error\u001b[22m: \u001b[31mreceived\u001b[39m value must not be null nor undefined\n\nReceived has value: \u001b[31mundefined\u001b[39m",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoContain\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // indexOf\u001b[22m\n\n\u001b[1mMatcher error\u001b[22m: \u001b[31mreceived\u001b[39m value must not be null nor undefined\n\nReceived has value: \u001b[31mundefined\u001b[39m\n    at /app/tests/ui/voters.spec.ts:66:44",
                        "location": {
                          "file": "/app/tests/ui/voters.spec.ts",
                          "column": 44,
                          "line": 66
                        },
                        "snippet": "\u001b[0m \u001b[90m 64 |\u001b[39m     \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39mpost(\u001b[32m'/voters/api/graphql'\u001b[39m\u001b[33m,\u001b[39m { data\u001b[33m:\u001b[39m { query\u001b[33m:\u001b[39m \u001b[33mBROWSE\u001b[39m } })\u001b[33m;\u001b[39m\n \u001b[90m 65 |\u001b[39m     expect(res\u001b[33m.\u001b[39mstatus())\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 66 |\u001b[39m     expect(res\u001b[33m.\u001b[39mheaders()[\u001b[32m'cache-control'\u001b[39m])\u001b[33m.\u001b[39mtoContain(\u001b[32m'no-store'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                            \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 67 |\u001b[39m     \u001b[36mconst\u001b[39m body \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mjson() \u001b[36mas\u001b[39m { data\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { browseEntities\u001b[33m?\u001b[39m\u001b[33m:\u001b[39m { results\u001b[33m:\u001b[39m \u001b[33mArray\u001b[39m\u001b[33m<\u001b[39m{ id\u001b[33m:\u001b[39m string\u001b[33m;\u001b[39m name\u001b[33m:\u001b[39m string }\u001b[33m>\u001b[39m } } }\u001b[33m;\u001b[39m\n \u001b[90m 68 |\u001b[39m     expect(body\u001b[33m.\u001b[39mdata\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mbrowseEntities\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mresults\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBe(\u001b[35m1\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 69 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 44,
                            "line": 66
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mreceived\u001b[39m\u001b[2m).\u001b[22mtoContain\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m) // indexOf\u001b[22m\n\n\u001b[1mMatcher error\u001b[22m: \u001b[31mreceived\u001b[39m value must not be null nor undefined\n\nReceived has value: \u001b[31mundefined\u001b[39m\n\n  64 |     const res = await request.post('/voters/api/graphql', { data: { query: BROWSE } });\n  65 |     expect(res.status()).toBe(200);\n> 66 |     expect(res.headers()['cache-control']).toContain('no-store');\n     |                                            ^\n  67 |     const body = await res.json() as { data?: { browseEntities?: { results: Array<{ id: string; name: string }> } } };\n  68 |     expect(body.data?.browseEntities?.results.length).toBe(1);\n  69 |\n    at /app/tests/ui/voters.spec.ts:66:44"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:29:12.933Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-vote-bc862-voter-queries-and-only-POST-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "column": 44,
                        "line": 66
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-804985811ed788cbb4b3",
              "file": "tests/ui/voters.spec.ts",
              "line": 63,
              "column": 7
            },
            {
              "title": "browse lists the most active voters and links to detail pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 46,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30077,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 35,
                            "line": 78
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  76 |     expect(response?.status()).toBe(200);\n  77 |     const results = page.locator('.entity-search-result');\n> 78 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                   ^\n  79 |     await expect(results.first()).toContainText(/elections voted/);\n  80 |\n  81 |     const href = await results.first().getAttribute('href');\n    at /app/tests/ui/voters.spec.ts:78:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:29:13.653Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-brow-b8f67-s-and-links-to-detail-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-brow-b8f67-s-and-links-to-detail-pages-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 97,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30341,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 35,
                            "line": 78
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  76 |     expect(response?.status()).toBe(200);\n  77 |     const results = page.locator('.entity-search-result');\n> 78 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                   ^\n  79 |     await expect(results.first()).toContainText(/elections voted/);\n  80 |\n  81 |     const href = await results.first().getAttribute('href');\n    at /app/tests/ui/voters.spec.ts:78:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:29:44.360Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-brow-b8f67-s-and-links-to-detail-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-brow-b8f67-s-and-links-to-detail-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-brow-b8f67-s-and-links-to-detail-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-brow-b8f67-s-and-links-to-detail-pages-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 110,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30072,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 35,
                            "line": 78
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  76 |     expect(response?.status()).toBe(200);\n  77 |     const results = page.locator('.entity-search-result');\n> 78 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                   ^\n  79 |     await expect(results.first()).toContainText(/elections voted/);\n  80 |\n  81 |     const href = await results.first().getAttribute('href');\n    at /app/tests/ui/voters.spec.ts:78:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:30:15.518Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-brow-b8f67-s-and-links-to-detail-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-brow-b8f67-s-and-links-to-detail-pages-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-0c1aedbfd096b779cf2a",
              "file": "tests/ui/voters.spec.ts",
              "line": 74,
              "column": 7
            },
            {
              "title": "search needs every term: name plus city",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 117,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30104,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 16,
                            "line": 93
                          },
                          "message": "Error: page.fill: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#entity-search-input')\u001b[22m\n\n\n  91 |   test('search needs every term: name plus city', async ({ page }) => {\n  92 |     await page.goto('/voters/');\n> 93 |     await page.fill('#entity-search-input', 'john smith austin');\n     |                ^\n  94 |     await page.locator('#entity-search-form button[type=\"submit\"]').click();\n  95 |     const results = page.locator('.entity-search-result');\n  96 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/voters.spec.ts:93:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:30:46.201Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-search-needs-every-term-name-plus-city-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-search-needs-every-term-name-plus-city-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 124,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30374,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 16,
                            "line": 93
                          },
                          "message": "Error: page.fill: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#entity-search-input')\u001b[22m\n\n\n  91 |   test('search needs every term: name plus city', async ({ page }) => {\n  92 |     await page.goto('/voters/');\n> 93 |     await page.fill('#entity-search-input', 'john smith austin');\n     |                ^\n  94 |     await page.locator('#entity-search-form button[type=\"submit\"]').click();\n  95 |     const results = page.locator('.entity-search-result');\n  96 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/voters.spec.ts:93:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:31:16.905Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-search-needs-every-term-name-plus-city-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-search-needs-every-term-name-plus-city-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-search-needs-every-term-name-plus-city-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-search-needs-every-term-name-plus-city-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 130,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30104,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 16,
                            "line": 93
                          },
                          "message": "Error: page.fill: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('#entity-search-input')\u001b[22m\n\n\n  91 |   test('search needs every term: name plus city', async ({ page }) => {\n  92 |     await page.goto('/voters/');\n> 93 |     await page.fill('#entity-search-input', 'john smith austin');\n     |                ^\n  94 |     await page.locator('#entity-search-form button[type=\"submit\"]').click();\n  95 |     const results = page.locator('.entity-search-result');\n  96 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/voters.spec.ts:93:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:31:48.129Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-search-needs-every-term-name-plus-city-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-search-needs-every-term-name-plus-city-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-d68c8209b5444194b927",
              "file": "tests/ui/voters.spec.ts",
              "line": 91,
              "column": 7
            },
            {
              "title": "state filter narrows the list and scopes the county and district dropdowns",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 136,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30088,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 65,
                            "line": 102
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  100 |   test('state filter narrows the list and scopes the county and district dropdowns', async ({ page }) => {\n  101 |     await page.goto('/voters/');\n> 102 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                                 ^\n  103 |     await expect(page.locator('.entity-filter-control[data-key=\"county\"]')).toBeHidden();\n  104 |     await page.selectOption('#entity-filter-state', 'FL');\n  105 |     await expect(page.locator('.entity-search-result').first()).toContainText(', FL', { timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/voters.spec.ts:102:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:32:18.892Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-stat-66ee5-unty-and-district-dropdowns-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-stat-66ee5-unty-and-district-dropdowns-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 140,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30316,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 65,
                            "line": 102
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  100 |   test('state filter narrows the list and scopes the county and district dropdowns', async ({ page }) => {\n  101 |     await page.goto('/voters/');\n> 102 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                                 ^\n  103 |     await expect(page.locator('.entity-filter-control[data-key=\"county\"]')).toBeHidden();\n  104 |     await page.selectOption('#entity-filter-state', 'FL');\n  105 |     await expect(page.locator('.entity-search-result').first()).toContainText(', FL', { timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/voters.spec.ts:102:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:32:49.600Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-stat-66ee5-unty-and-district-dropdowns-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-stat-66ee5-unty-and-district-dropdowns-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-stat-66ee5-unty-and-district-dropdowns-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-stat-66ee5-unty-and-district-dropdowns-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 143,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30077,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 65,
                            "line": 102
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  100 |   test('state filter narrows the list and scopes the county and district dropdowns', async ({ page }) => {\n  101 |     await page.goto('/voters/');\n> 102 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                                 ^\n  103 |     await expect(page.locator('.entity-filter-control[data-key=\"county\"]')).toBeHidden();\n  104 |     await page.selectOption('#entity-filter-state', 'FL');\n  105 |     await expect(page.locator('.entity-search-result').first()).toContainText(', FL', { timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/voters.spec.ts:102:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:33:20.774Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-stat-66ee5-unty-and-district-dropdowns-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-stat-66ee5-unty-and-district-dropdowns-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-715d172cd99b39041bec",
              "file": "tests/ui/voters.spec.ts",
              "line": 100,
              "column": 7
            },
            {
              "title": "filters combine, count matches and survive a reload",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 147,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30064,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 35,
                            "line": 114
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  112 |     await page.goto('/voters/?f_state=FL&f_county=MIAMI-DADE&f_age=65-74&f_party=DEM');\n  113 |     const results = page.locator('.entity-search-result');\n> 114 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                   ^\n  115 |     await expect(results.first()).toContainText('Democratic (DEM)');\n  116 |     await expect(results.first()).toContainText(/Age (6[5-9]|7[0-4])\\b/);\n  117 |     await expect(page.locator('#entity-results-count')).toHaveText(/^[\\d,]+ match(es)?$/);\n    at /app/tests/ui/voters.spec.ts:114:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:33:51.441Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-filt-1ca12-atches-and-survive-a-reload-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-filt-1ca12-atches-and-survive-a-reload-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 149,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30308,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 35,
                            "line": 114
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  112 |     await page.goto('/voters/?f_state=FL&f_county=MIAMI-DADE&f_age=65-74&f_party=DEM');\n  113 |     const results = page.locator('.entity-search-result');\n> 114 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                   ^\n  115 |     await expect(results.first()).toContainText('Democratic (DEM)');\n  116 |     await expect(results.first()).toContainText(/Age (6[5-9]|7[0-4])\\b/);\n  117 |     await expect(page.locator('#entity-results-count')).toHaveText(/^[\\d,]+ match(es)?$/);\n    at /app/tests/ui/voters.spec.ts:114:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:34:22.080Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-filt-1ca12-atches-and-survive-a-reload-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-filt-1ca12-atches-and-survive-a-reload-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-filt-1ca12-atches-and-survive-a-reload-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-filt-1ca12-atches-and-survive-a-reload-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 151,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30064,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 35,
                            "line": 114
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  112 |     await page.goto('/voters/?f_state=FL&f_county=MIAMI-DADE&f_age=65-74&f_party=DEM');\n  113 |     const results = page.locator('.entity-search-result');\n> 114 |     await expect(results.first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                   ^\n  115 |     await expect(results.first()).toContainText('Democratic (DEM)');\n  116 |     await expect(results.first()).toContainText(/Age (6[5-9]|7[0-4])\\b/);\n  117 |     await expect(page.locator('#entity-results-count')).toHaveText(/^[\\d,]+ match(es)?$/);\n    at /app/tests/ui/voters.spec.ts:114:35"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:34:53.204Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-filt-1ca12-atches-and-survive-a-reload-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-filt-1ca12-atches-and-survive-a-reload-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-135d5a7d039193b89e35",
              "file": "tests/ui/voters.spec.ts",
              "line": 111,
              "column": 7
            },
            {
              "title": "race and Civitech score filters (persuadable, high-turnout Latinx voters in Miami-Dade)",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 155,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30090,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 65,
                            "line": 128
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  126 |   test('race and Civitech score filters (persuadable, high-turnout Latinx voters in Miami-Dade)', async ({ page }) => {\n  127 |     await page.goto('/voters/?f_state=FL&f_county=MIAMI-DADE&f_race=LATINX&f_support_dem=tossup&f_turnout_pres=high');\n> 128 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                                 ^\n  129 |     await expect(page.locator('#entity-results-count')).toHaveText(/^[\\d,]+ match(es)?$/);\n  130 |     await expect(page.locator('#entity-results-title')).toContainText('Latinx');\n  131 |     await expect(page.locator('#entity-filter-support_dem')).toHaveValue('tossup');\n    at /app/tests/ui/voters.spec.ts:128:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:35:23.879Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-race-5358f-atinx-voters-in-Miami-Dade--ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-race-5358f-atinx-voters-in-Miami-Dade--ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 157,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30406,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 65,
                            "line": 128
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  126 |   test('race and Civitech score filters (persuadable, high-turnout Latinx voters in Miami-Dade)', async ({ page }) => {\n  127 |     await page.goto('/voters/?f_state=FL&f_county=MIAMI-DADE&f_race=LATINX&f_support_dem=tossup&f_turnout_pres=high');\n> 128 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                                 ^\n  129 |     await expect(page.locator('#entity-results-count')).toHaveText(/^[\\d,]+ match(es)?$/);\n  130 |     await expect(page.locator('#entity-results-title')).toContainText('Latinx');\n  131 |     await expect(page.locator('#entity-filter-support_dem')).toHaveValue('tossup');\n    at /app/tests/ui/voters.spec.ts:128:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:35:54.553Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-race-5358f-atinx-voters-in-Miami-Dade--ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-race-5358f-atinx-voters-in-Miami-Dade--ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-race-5358f-atinx-voters-in-Miami-Dade--ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-race-5358f-atinx-voters-in-Miami-Dade--ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 159,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30094,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 65,
                            "line": 128
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.entity-search-result').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  126 |   test('race and Civitech score filters (persuadable, high-turnout Latinx voters in Miami-Dade)', async ({ page }) => {\n  127 |     await page.goto('/voters/?f_state=FL&f_county=MIAMI-DADE&f_race=LATINX&f_support_dem=tossup&f_turnout_pres=high');\n> 128 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                                 ^\n  129 |     await expect(page.locator('#entity-results-count')).toHaveText(/^[\\d,]+ match(es)?$/);\n  130 |     await expect(page.locator('#entity-results-title')).toContainText('Latinx');\n  131 |     await expect(page.locator('#entity-filter-support_dem')).toHaveValue('tossup');\n    at /app/tests/ui/voters.spec.ts:128:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:36:25.723Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-race-5358f-atinx-voters-in-Miami-Dade--ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-race-5358f-atinx-voters-in-Miami-Dade--ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-8448f6ea1dd523d04da6",
              "file": "tests/ui/voters.spec.ts",
              "line": 126,
              "column": 7
            },
            {
              "title": "every Districts row links; legislative districts open the filtered voters list",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 160,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30096,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 50,
                            "line": 138
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('section#districts').locator('a').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('section#districts').locator('a').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('section#districts').locator('a').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  136 |     await page.goto('/voters/0c13135d-8e3d-3aa4-1077-28a81eb5d10f/');\n  137 |     const districts = page.locator('section#districts');\n> 138 |     await expect(districts.locator('a').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                  ^\n  139 |     const hrefs = await districts.locator('a').evaluateAll(as => as.map(a => a.getAttribute('href')));\n  140 |     expect(hrefs).toEqual(expect.arrayContaining([\n  141 |       '/districts/ny-25/',\n    at /app/tests/ui/voters.spec.ts:138:50"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:36:56.408Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-ever-c7b29-en-the-filtered-voters-list-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-ever-c7b29-en-the-filtered-voters-list-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 161,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30372,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 50,
                            "line": 138
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('section#districts').locator('a').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('section#districts').locator('a').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('section#districts').locator('a').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  136 |     await page.goto('/voters/0c13135d-8e3d-3aa4-1077-28a81eb5d10f/');\n  137 |     const districts = page.locator('section#districts');\n> 138 |     await expect(districts.locator('a').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                  ^\n  139 |     const hrefs = await districts.locator('a').evaluateAll(as => as.map(a => a.getAttribute('href')));\n  140 |     expect(hrefs).toEqual(expect.arrayContaining([\n  141 |       '/districts/ny-25/',\n    at /app/tests/ui/voters.spec.ts:138:50"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:37:27.124Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-ever-c7b29-en-the-filtered-voters-list-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-ever-c7b29-en-the-filtered-voters-list-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-ever-c7b29-en-the-filtered-voters-list-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-ever-c7b29-en-the-filtered-voters-list-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 162,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30083,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 50,
                            "line": 138
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('section#districts').locator('a').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('section#districts').locator('a').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('section#districts').locator('a').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  136 |     await page.goto('/voters/0c13135d-8e3d-3aa4-1077-28a81eb5d10f/');\n  137 |     const districts = page.locator('section#districts');\n> 138 |     await expect(districts.locator('a').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                  ^\n  139 |     const hrefs = await districts.locator('a').evaluateAll(as => as.map(a => a.getAttribute('href')));\n  140 |     expect(hrefs).toEqual(expect.arrayContaining([\n  141 |       '/districts/ny-25/',\n    at /app/tests/ui/voters.spec.ts:138:50"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:37:58.360Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-ever-c7b29-en-the-filtered-voters-list-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-ever-c7b29-en-the-filtered-voters-list-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-73036fbfee8d2c5e0709",
              "file": "tests/ui/voters.spec.ts",
              "line": 134,
              "column": 7
            },
            {
              "title": "an unknown voter id renders Not Found",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 163,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30079,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 56,
                            "line": 171
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Voter Not Found/\u001b[39m\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  169 |   test('an unknown voter id renders Not Found', async ({ page }) => {\n  170 |     await page.goto('/voters/00000000-0000-0000-0000-000000000000/');\n> 171 |     await expect(page.locator('.leaf-detail-page h1')).toHaveText(/Voter Not Found/, { timeout: DATA_LOAD_TIMEOUT });\n      |                                                        ^\n  172 |   });\n  173 | });\n  174 |\n    at /app/tests/ui/voters.spec.ts:171:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:38:29.042Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-an-unknown-voter-id-renders-Not-Found-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-an-unknown-voter-id-renders-Not-Found-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 164,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30331,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 56,
                            "line": 171
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Voter Not Found/\u001b[39m\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  169 |   test('an unknown voter id renders Not Found', async ({ page }) => {\n  170 |     await page.goto('/voters/00000000-0000-0000-0000-000000000000/');\n> 171 |     await expect(page.locator('.leaf-detail-page h1')).toHaveText(/Voter Not Found/, { timeout: DATA_LOAD_TIMEOUT });\n      |                                                        ^\n  172 |   });\n  173 | });\n  174 |\n    at /app/tests/ui/voters.spec.ts:171:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:38:59.716Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-an-unknown-voter-id-renders-Not-Found-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-an-unknown-voter-id-renders-Not-Found-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-an-unknown-voter-id-renders-Not-Found-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-an-unknown-voter-id-renders-Not-Found-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 165,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30089,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 56,
                            "line": 171
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.leaf-detail-page h1')\nExpected pattern: \u001b[32m/Voter Not Found/\u001b[39m\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toHaveText\" locator('.leaf-detail-page h1') with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('.leaf-detail-page h1')\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  169 |   test('an unknown voter id renders Not Found', async ({ page }) => {\n  170 |     await page.goto('/voters/00000000-0000-0000-0000-000000000000/');\n> 171 |     await expect(page.locator('.leaf-detail-page h1')).toHaveText(/Voter Not Found/, { timeout: DATA_LOAD_TIMEOUT });\n      |                                                        ^\n  172 |   });\n  173 | });\n  174 |\n    at /app/tests/ui/voters.spec.ts:171:56"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:39:30.859Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-an-unknown-voter-id-renders-Not-Found-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voters-premium-an-unknown-voter-id-renders-Not-Found-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-e0441edf222b4f45ecb0",
              "file": "tests/ui/voters.spec.ts",
              "line": 169,
              "column": 7
            }
          ]
        },
        {
          "title": "voter Location card (mocked)",
          "file": "tests/ui/voters.spec.ts",
          "line": 175,
          "column": 6,
          "specs": [
            {
              "title": "State, Place, Postal code and County link their pages plus the filtered voters list; Overview and Districts drop them",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 166,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30094,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 49,
                            "line": 200
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('section#location').locator('a').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('section#location').locator('a').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('section#location').locator('a').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  198 |     await page.goto('/voters/v-loc/');\n  199 |     const location = page.locator('section#location');\n> 200 |     await expect(location.locator('a').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                 ^\n  201 |     expect(await location.locator('a').evaluateAll(as => as.map(a => a.getAttribute('href')))).toEqual([\n  202 |       '/states/ma/', '/voters/?f_state=MA',\n  203 |       '/places/place-wrentham/', '/voters/?f_state=MA&f_city=WRENTHAM',\n    at /app/tests/ui/voters.spec.ts:200:49"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:40:01.552Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-bd726-iew-and-Districts-drop-them-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-bd726-iew-and-Districts-drop-them-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 167,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30326,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 49,
                            "line": 200
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('section#location').locator('a').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('section#location').locator('a').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('section#location').locator('a').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  198 |     await page.goto('/voters/v-loc/');\n  199 |     const location = page.locator('section#location');\n> 200 |     await expect(location.locator('a').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                 ^\n  201 |     expect(await location.locator('a').evaluateAll(as => as.map(a => a.getAttribute('href')))).toEqual([\n  202 |       '/states/ma/', '/voters/?f_state=MA',\n  203 |       '/places/place-wrentham/', '/voters/?f_state=MA&f_city=WRENTHAM',\n    at /app/tests/ui/voters.spec.ts:200:49"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:40:32.253Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-bd726-iew-and-Districts-drop-them-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-bd726-iew-and-Districts-drop-them-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-bd726-iew-and-Districts-drop-them-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-bd726-iew-and-Districts-drop-them-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 168,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30089,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 49,
                            "line": 200
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('section#location').locator('a').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('section#location').locator('a').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('section#location').locator('a').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  198 |     await page.goto('/voters/v-loc/');\n  199 |     const location = page.locator('section#location');\n> 200 |     await expect(location.locator('a').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                 ^\n  201 |     expect(await location.locator('a').evaluateAll(as => as.map(a => a.getAttribute('href')))).toEqual([\n  202 |       '/states/ma/', '/voters/?f_state=MA',\n  203 |       '/places/place-wrentham/', '/voters/?f_state=MA&f_city=WRENTHAM',\n    at /app/tests/ui/voters.spec.ts:200:49"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:41:03.456Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-bd726-iew-and-Districts-drop-them-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-bd726-iew-and-Districts-drop-them-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-9ec004703b65c8d29915",
              "file": "tests/ui/voters.spec.ts",
              "line": 182,
              "column": 7
            },
            {
              "title": "without graph matches (or a failed lookup) each value opens the filtered voters list",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 169,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30090,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 49,
                            "line": 222
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('section#location').locator('a').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('section#location').locator('a').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('section#location').locator('a').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  220 |     await page.goto('/voters/v-loc/');\n  221 |     const location = page.locator('section#location');\n> 222 |     await expect(location.locator('a').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                 ^\n  223 |     expect(await location.locator('a').evaluateAll(as => as.map(a => a.getAttribute('href')))).toEqual([\n  224 |       '/states/ma/', '/voters/?f_state=MA',\n  225 |       '/voters/?f_state=MA&f_city=WRENTHAM',\n    at /app/tests/ui/voters.spec.ts:222:49"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:41:34.133Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-6c347-ns-the-filtered-voters-list-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-6c347-ns-the-filtered-voters-list-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 170,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30346,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 49,
                            "line": 222
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('section#location').locator('a').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('section#location').locator('a').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('section#location').locator('a').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  220 |     await page.goto('/voters/v-loc/');\n  221 |     const location = page.locator('section#location');\n> 222 |     await expect(location.locator('a').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                 ^\n  223 |     expect(await location.locator('a').evaluateAll(as => as.map(a => a.getAttribute('href')))).toEqual([\n  224 |       '/states/ma/', '/voters/?f_state=MA',\n  225 |       '/voters/?f_state=MA&f_city=WRENTHAM',\n    at /app/tests/ui/voters.spec.ts:222:49"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:42:04.851Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-6c347-ns-the-filtered-voters-list-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-6c347-ns-the-filtered-voters-list-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-6c347-ns-the-filtered-voters-list-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-6c347-ns-the-filtered-voters-list-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 171,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30080,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "column": 49,
                            "line": 222
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('section#location').locator('a').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('section#location').locator('a').first() with timeout 30000ms\u001b[22m\n\u001b[2m  - waiting for locator('section#location').locator('a').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  220 |     await page.goto('/voters/v-loc/');\n  221 |     const location = page.locator('section#location');\n> 222 |     await expect(location.locator('a').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                 ^\n  223 |     expect(await location.locator('a').evaluateAll(as => as.map(a => a.getAttribute('href')))).toEqual([\n  224 |       '/states/ma/', '/voters/?f_state=MA',\n  225 |       '/voters/?f_state=MA&f_city=WRENTHAM',\n    at /app/tests/ui/voters.spec.ts:222:49"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:42:36.083Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-6c347-ns-the-filtered-voters-list-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-manual-20261024/us-preview/test-output/voters-voter-Location-card-6c347-ns-the-filtered-voters-list-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "6970ccac81a50c81e377-9e2248c87e42f3e8058a",
              "file": "tests/ui/voters.spec.ts",
              "line": 213,
              "column": 7
            }
          ]
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-10-24T00:29:06.855Z",
    "duration": 839474.1290000001,
    "expected": 303,
    "skipped": 7,
    "unexpected": 48,
    "flaky": 0
  }
}