{
  "config": {
    "argv": [
      "/usr/bin/node",
      "/app/node_modules/.bin/playwright",
      "test",
      "tests/ui/auth.spec.ts",
      "tests/ui/layout.spec.ts",
      "tests/ui/leaf-details.spec.ts",
      "tests/ui/voters.spec.ts",
      "tests/ui/voter-cycles.spec.ts",
      "tests/ui/entity-filters.spec.ts",
      "tests/ui/routing.spec.ts",
      "tests/ui/cycle-index.spec.ts",
      "tests/ui/county-filters.spec.ts",
      "tests/ui/map-insets.spec.ts",
      "tests/ui/entities.spec.ts",
      "tests/ui/identity-bar.spec.ts",
      "--project=ui",
      "--output=/workspace/artifacts/prod-signed-in-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": 12
    },
    "preserveOutput": "always",
    "projects": [
      {
        "outputDir": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 12
        },
        "id": "ui",
        "name": "ui",
        "testDir": "/app/tests/ui",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      },
      {
        "outputDir": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 12
        },
        "id": "api",
        "name": "api",
        "testDir": "/app/tests/api",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      }
    ],
    "filteredProjects": [
      {
        "grep": {},
        "grepInvert": null,
        "outputDir": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 12
        },
        "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": {
            "Authorization": "Basic cHJldmlldy1lMmU6RnY4R3lxclBwdHJHTENENWlCamw5T0N6ZFp0UXZPSjRRRndpSjhsczNyZ2F0TGRSVThuWWZzMmdkVXAz"
          },
          "screenshot": "on",
          "video": "on-first-retry",
          "trace": "on-first-retry"
        },
        "dependencies": [],
        "ignoreSnapshots": false,
        "__projectId": "ui"
      }
    ],
    "quiet": false,
    "reporter": [
      [
        "html",
        {
          "outputFolder": "/workspace/artifacts/prod-signed-in-20261024/us-preview/reports/html",
          "open": "never"
        }
      ],
      [
        "json",
        {
          "outputFile": "/workspace/artifacts/prod-signed-in-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": 470,
                      "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:44:18.800Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 14,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 27820,
                      "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:44:19.814Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 27,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 306,
                      "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:44:48.226Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 30,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 418,
                      "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:44:49.053Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 35,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 750,
                      "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:44:50.000Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 37,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 362,
                      "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:44:51.330Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 39,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 325,
                      "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:44:52.209Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 40,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 291,
                      "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:44:53.051Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 41,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 378,
                      "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:44:53.894Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 42,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 257,
                      "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:44:54.802Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 43,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 376,
                      "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:44:55.576Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 45,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 273,
                      "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:44:56.530Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 47,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 300,
                      "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:44:57.568Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 49,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 492,
                      "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:44:58.435Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 51,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 344,
                      "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:44:59.523Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 52,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 267,
                      "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:45:00.394Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 53,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 368,
                      "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:45:01.173Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 54,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 294,
                      "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:45:02.118Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 55,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 248,
                      "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:45:02.946Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 56,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 293,
                      "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:45:03.701Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 58,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 205,
                      "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:45:04.570Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 61,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 324,
                      "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:45:05.322Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 62,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 301,
                      "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:45:06.192Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 64,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 501,
                      "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:45:07.092Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 65,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 245,
                      "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:45:08.119Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 66,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 384,
                      "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:45:09.028Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 67,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 290,
                      "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:45:10.082Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 68,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 274,
                      "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:45:11.025Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 70,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 325,
                      "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:45:12.096Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 71,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 543,
                      "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:45:13.183Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 73,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 310,
                      "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:45:14.490Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 74,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 318,
                      "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:45:15.527Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 75,
                      "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: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:45:16.532Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 76,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 282,
                      "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:45:17.521Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 77,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 394,
                      "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:45:18.653Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 78,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 636,
                      "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:45:19.704Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 117,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:20.965Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5909,
                      "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:45:21.171Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 85,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 621,
                      "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:45:27.610Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 87,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 273,
                      "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:45:28.863Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 88,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 228,
                      "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:45:29.751Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 89,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 387,
                      "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:45:30.569Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 90,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 327,
                      "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:45:31.639Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 91,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 64,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:32.546Z",
                      "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": 91,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 29,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:32.647Z",
                      "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": 91,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 30,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:32.689Z",
                      "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": 91,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 28,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:32.729Z",
                      "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": 91,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 245,
                      "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:45:32.767Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 93,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 337,
                      "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:45:33.566Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 95,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 281,
                      "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:45:34.530Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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/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": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 1558,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:44:18.769Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 1,
                  "parallelIndex": 1,
                  "status": "timedOut",
                  "duration": 120089,
                  "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:44:20.517Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui/error-context.md"
                    }
                  ]
                },
                {
                  "workerIndex": 111,
                  "parallelIndex": 1,
                  "status": "timedOut",
                  "duration": 120504,
                  "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:46:21.120Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui-retry1/trace.zip"
                    }
                  ]
                },
                {
                  "workerIndex": 131,
                  "parallelIndex": 1,
                  "status": "timedOut",
                  "duration": 120102,
                  "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:48:22.933Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 143,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 741,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:50:23.614Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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-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": 60,
                  "parallelIndex": 2,
                  "status": "passed",
                  "duration": 368,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:45:04.993Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 60,
                  "parallelIndex": 2,
                  "status": "passed",
                  "duration": 301,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:45:05.450Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 60,
                  "parallelIndex": 2,
                  "status": "passed",
                  "duration": 274,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:45:05.771Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 60,
                  "parallelIndex": 2,
                  "status": "passed",
                  "duration": 287,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:45:06.057Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 60,
                  "parallelIndex": 2,
                  "status": "passed",
                  "duration": 708,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:45:06.356Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 60,
                  "parallelIndex": 2,
                  "status": "passed",
                  "duration": 161,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:45:07.077Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 60,
                  "parallelIndex": 2,
                  "status": "passed",
                  "duration": 238,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:45:07.255Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 60,
                  "parallelIndex": 2,
                  "status": "passed",
                  "duration": 206,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:45:07.504Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 618,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:18.796Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 349,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:19.578Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 172,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:19.939Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 176,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.123Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 486,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.309Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 559,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.804Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 2,
                      "parallelIndex": 2,
                      "status": "timedOut",
                      "duration": 30046,
                      "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/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\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\u001b[2m  - Test timeout of 30000ms exceeded.\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:44:21.373Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/cycle-index-cycle-index-UR-78d64-ly-of-lifetime-profile-data-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 38,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 5932,
                      "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:44:51.958Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 50,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 5728,
                      "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:44:58.623Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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/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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 1149,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] candidates section - index and random pages: /politicians/972721e4-173f-5925-b1c4-535ff83ffd0b/, /politicians/f4d462f8-addd-1c43-7a18-e6542446a3aa/, /politicians/502b3f1b-f119-87ec-965b-b2bd622c947d/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:18.814Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 821,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] committees section - index and random pages: /committees/63a536ce-a26c-62d9-8b96-3fbb01c34130/, /committees/e924b6cf-d95b-f392-714c-9be43e5ee2f1/, /committees/0c1dc29f-4c16-d088-4721-a10b1634a797/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.116Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 1121,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] parties section - index and random pages: /parties/412e2507-6b3c-2d47-6fcc-7f2fe6f7aeb0/, /parties/12cac40d-b40d-abcc-6735-5e49f3925192/, /parties/f93836bb-d946-079d-7dbb-b593f71006b5/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.952Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 345,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] offices section - index and random pages: /offices/82fbdb29-d08e-ad19-d664-580dabfcf109/, /offices/91f59a74-fdb0-4ab4-dfd5-c2c40cad277b/, /offices/20e183aa-eb55-7916-17e3-bfd156bf9cf2/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:22.085Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 694,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] districts section - index and random pages: /districts/ca-15/, /districts/ca-10/, /districts/ca-16/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:22.446Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 4466,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] states section - index and random pages: /states/in/, /states/al/, /states/hi/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:23.149Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 452,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] elections section - index and random pages: /elections/2000/, /elections/2010/, /elections/1992/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:27.631Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 187,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:28.097Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 211,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:28.296Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 189,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:28.524Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 365,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:28.731Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 170,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:29.112Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 196,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:29.295Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 183,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:29.500Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 156,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:29.694Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 195,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:29.865Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 428,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:30.072Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 3,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 17748,
                      "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"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 366
                          },
                          "message": "Error: page.goto: Test ended.\nCall log:\n\u001b[2m  - navigating to \"https://us.elect.info/individuals/\", waiting until \"load\"\u001b[22m\n\n\n  364 |     return body.includes('browseEntities');\n  365 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 366 |   await page.goto(url);\n      |              ^\n  367 |   const response = await responsePromise;\n  368 |   const json = await response.json();\n  369 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:14)\n    at /app/tests/ui/entities.spec.ts:401:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:30.512Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 29,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 15341,
                      "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:44:48.792Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 59,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 15153,
                      "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:45:04.892Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 81,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 215,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:20.685Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 81,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 321,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] employers section - index and random pages: /employers/f3b91900-a6f1-5ef3-e977-d11bd6644234/, /employers/9ba78b2b-197c-2ec7-bb27-baeb24ddf906/, /employers/a3c70989-0fb6-1336-b986-f8e43a738ad5/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:20.991Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 81,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 310,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] vendors section - index and random pages: /vendors/b4933d51-1079-e820-025f-362e332d013f/, /vendors/0966d116-aea0-c9b1-d66a-621dacb4b87e/, /vendors/a2e9cfea-dee0-2824-46f2-843916cd2199/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:21.325Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 81,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 813,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] counties section - index and random detail pages: /counties/7bf931c8-aaef-c646-303b-b858999f30a4/, /counties/620c5d0a-6ca3-3231-4233-457825879d17/, /counties/4d2f0322-fa82-d0d1-7197-f513a0b5149a/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:21.649Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 81,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 921,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] places section - index and random detail pages: /places/26f0d35e-397c-99bb-b83b-a8bfbac63445/, /places/eee02042-1836-823e-9cf9-f01e1754f058/, /places/63559b57-1ee1-ea17-07ad-3df858ddfb7b/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:22.472Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 81,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 804,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] postalcodes section - index and random detail pages: /postalcodes/8a8b9abd-060a-4179-a17e-c84173b0e729/, /postalcodes/0feaa35e-bab6-2caf-9e8a-c292e6c8266a/, /postalcodes/7035aefd-88f1-258f-4cf4-65a9c3981093/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:23.406Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 81,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 859,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] precincts section - map view and state filter: /precincts/5a826ca9-3922-df08-6177-1c54899a07ad/, /precincts/3cb042e7-126d-f83c-d884-80197712896b/, /precincts/3ae79024-e06c-dfc7-2737-3ce6046026c3/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:24.226Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 81,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 856,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] tracts section - state/county filter and random detail pages: /tracts/34aa88f8-957f-207b-713f-22b6e0d82915/, /tracts/18f0baf4-cb58-3680-efb0-59a0ca76aeec/, /tracts/600448f2-7a2e-cce1-9624-63645e8a33e9/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:25.101Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 81,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 8007,
                      "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    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/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    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/entities.spec.ts:665:38",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 38,
                          "line": 665
                        },
                        "snippet": "\u001b[0m \u001b[90m 663 |\u001b[39m     \u001b[36mconst\u001b[39m indexResponse \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 664 |\u001b[39m     expect(indexResponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/individuals/ should answer 200'\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 665 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/Individual/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 666 |\u001b[39m\n \u001b[90m 667 |\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({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 668 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 38,
                            "line": 665
                          },
                          "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    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  663 |     const indexResponse = await page.goto('/individuals/');\n  664 |     expect(indexResponse?.status(), '/individuals/ should answer 200').toBe(200);\n> 665 |     await expect(page.locator('h1')).toContainText(/Individual/i);\n      |                                      ^\n  666 |\n  667 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n  668 |\n    at /app/tests/ui/entities.spec.ts:665:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:25.972Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/entities-us-elect-info-ent-7f2e9-on---index-and-random-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/entities-us-elect-info-ent-7f2e9-on---index-and-random-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 38,
                        "line": 665
                      }
                    },
                    {
                      "workerIndex": 94,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 5882,
                      "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/entities.spec.ts:665:38",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 38,
                          "line": 665
                        },
                        "snippet": "\u001b[0m \u001b[90m 663 |\u001b[39m     \u001b[36mconst\u001b[39m indexResponse \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 664 |\u001b[39m     expect(indexResponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/individuals/ should answer 200'\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 665 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/Individual/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 666 |\u001b[39m\n \u001b[90m 667 |\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({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 668 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 38,
                            "line": 665
                          },
                          "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  663 |     const indexResponse = await page.goto('/individuals/');\n  664 |     expect(indexResponse?.status(), '/individuals/ should answer 200').toBe(200);\n> 665 |     await expect(page.locator('h1')).toContainText(/Individual/i);\n      |                                      ^\n  666 |\n  667 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n  668 |\n    at /app/tests/ui/entities.spec.ts:665:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:45:34.521Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/entities-us-elect-info-ent-7f2e9-on---index-and-random-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/entities-us-elect-info-ent-7f2e9-on---index-and-random-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/entities-us-elect-info-ent-7f2e9-on---index-and-random-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/entities-us-elect-info-ent-7f2e9-on---index-and-random-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 38,
                        "line": 665
                      }
                    },
                    {
                      "workerIndex": 97,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 5648,
                      "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/entities.spec.ts:665:38",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 38,
                          "line": 665
                        },
                        "snippet": "\u001b[0m \u001b[90m 663 |\u001b[39m     \u001b[36mconst\u001b[39m indexResponse \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/individuals/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 664 |\u001b[39m     expect(indexResponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/individuals/ should answer 200'\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 665 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/Individual/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 666 |\u001b[39m\n \u001b[90m 667 |\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({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 668 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 38,
                            "line": 665
                          },
                          "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  663 |     const indexResponse = await page.goto('/individuals/');\n  664 |     expect(indexResponse?.status(), '/individuals/ should answer 200').toBe(200);\n> 665 |     await expect(page.locator('h1')).toContainText(/Individual/i);\n      |                                      ^\n  666 |\n  667 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n  668 |\n    at /app/tests/ui/entities.spec.ts:665:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:45:41.169Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/entities-us-elect-info-ent-7f2e9-on---index-and-random-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/entities-us-elect-info-ent-7f2e9-on---index-and-random-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 38,
                        "line": 665
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "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": 4,
                      "parallelIndex": 4,
                      "status": "timedOut",
                      "duration": 30065,
                      "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:44:18.798Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/entity-filters-individual--168cd-he-list-and-land-in-the-URL-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 32,
                      "parallelIndex": 4,
                      "status": "timedOut",
                      "duration": 30304,
                      "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:44:49.519Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/entity-filters-individual--168cd-he-list-and-land-in-the-URL-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 82,
                      "parallelIndex": 4,
                      "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/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:45:20.665Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 102,
                      "parallelIndex": 4,
                      "status": "timedOut",
                      "duration": 30086,
                      "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:45:51.361Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/entity-filters-individual--88dba-ers-employer-and-ZIP-prefix-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 113,
                      "parallelIndex": 4,
                      "status": "timedOut",
                      "duration": 30302,
                      "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:46:22.091Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/entity-filters-individual--88dba-ers-employer-and-ZIP-prefix-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 118,
                      "parallelIndex": 4,
                      "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/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:46:53.213Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 124,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 128,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:47:23.893Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "589b4d2d59414df6d16a-2f26c7bcfc0fe5f858da",
              "file": "tests/ui/entity-filters.spec.ts",
              "line": 58,
              "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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 615,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:18.799Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 436,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:19.576Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 195,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.023Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 204,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.229Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 246,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.443Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 194,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.705Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 199,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.915Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 208,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:21.126Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 208,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:21.344Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 210,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:21.563Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 5,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 181,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:21.785Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 536,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:18.801Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 161,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:19.499Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 324,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:19.682Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 317,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.018Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 152,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.347Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 172,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:20.509Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 6,
                      "parallelIndex": 6,
                      "status": "timedOut",
                      "duration": 30062,
                      "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/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')\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    6 × 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\u001b[2m  - Test timeout of 30000ms exceeded.\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:44:20.692Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/layout-landing-page-layout-b60e0--loads-with-correct-heading-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 36,
                      "parallelIndex": 6,
                      "status": "failed",
                      "duration": 6013,
                      "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:44:51.270Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 48,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 5891,
                      "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    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/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    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/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    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": 2,
                      "startTime": "2026-10-24T00:44:57.982Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 57,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 183,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:04.486Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 57,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 127,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:04.765Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 57,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 429,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:04.912Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 57,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 437,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:05.351Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 57,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 374,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:05.799Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 57,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 393,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:06.183Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 57,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 389,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:06.589Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 57,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 5726,
                      "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:45:06.988Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 72,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 6184,
                      "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    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/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    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/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    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": 1,
                      "startTime": "2026-10-24T00:45:13.229Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 80,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 7180,
                      "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: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    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  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:45:20.120Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 86,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 477,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:27.887Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 86,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 211,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:28.453Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 86,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 165,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:28.691Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 86,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 169,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:28.872Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 86,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 174,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:29.053Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 86,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 200,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:29.240Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 86,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 315,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:29.457Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 86,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 152,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:29.790Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 86,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 134,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:29.958Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 86,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 5556,
                      "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: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    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  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:45:30.101Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 96,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5863,
                      "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: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    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  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:45:36.136Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 98,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5616,
                      "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    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/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    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: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    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  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:45:42.697Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 100,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 186,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:48.895Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 100,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 190,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:49.166Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 100,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 482,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:49.375Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 100,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 432,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:49.871Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 100,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 409,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:50.318Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 100,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 445,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:50.740Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 100,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 428,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:51.197Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 100,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6001,
                      "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": 0,
                      "startTime": "2026-10-24T00:45:51.644Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 105,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5880,
                      "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    13 × 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    13 × 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    13 × 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": 1,
                      "startTime": "2026-10-24T00:45:58.175Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 107,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5745,
                      "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: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    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  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:46:04.764Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 108,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 201,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:46:11.077Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 108,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 168,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:46:11.366Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 7,
                      "parallelIndex": 7,
                      "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/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\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\u001b[2m  - Test timeout of 30000ms exceeded.\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:44:18.842Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/leaf-details-leaf-collecti-c5a9d-ounded-contribution-profile-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 34,
                      "parallelIndex": 7,
                      "status": "failed",
                      "duration": 21570,
                      "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:44:49.624Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 69,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 20715,
                      "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:45:11.903Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 92,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 334,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:33.237Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 92,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 357,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:45:33.660Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 92,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 20537,
                      "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:45:34.033Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 104,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 20967,
                      "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:45:55.103Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 109,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20580,
                      "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:46:16.823Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 115,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20693,
                      "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:46:38.029Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 119,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20953,
                      "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:46:59.331Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 121,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20572,
                      "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:47:21.080Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 127,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 426,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:47:42.300Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 127,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 347,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:47:42.814Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 127,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 186,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:47:43.182Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 127,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 208,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:47:43.384Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 127,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 359,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:47:43.605Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 127,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20623,
                      "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:47:43.979Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 130,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 21057,
                      "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:48:05.155Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 133,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20730,
                      "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:48:27.007Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 134,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20669,
                      "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:48:48.358Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 137,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 21131,
                      "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:49:09.651Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 139,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20814,
                      "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:49:31.590Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 140,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20818,
                      "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:49:53.017Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 142,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 21337,
                      "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:50:14.449Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 145,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 20611,
                      "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:50:36.596Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 146,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 366,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:50:57.816Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 8,
                  "parallelIndex": 8,
                  "status": "passed",
                  "duration": 925,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:44:18.820Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 8,
                  "parallelIndex": 8,
                  "status": "passed",
                  "duration": 529,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:44:19.897Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 8,
                  "parallelIndex": 8,
                  "status": "passed",
                  "duration": 576,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:44:20.446Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 8,
                  "parallelIndex": 8,
                  "status": "passed",
                  "duration": 562,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:44:21.039Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 8,
                  "parallelIndex": 8,
                  "status": "passed",
                  "duration": 627,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:44:21.615Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 8,
                  "parallelIndex": 8,
                  "status": "passed",
                  "duration": 574,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:44:22.255Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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": 8,
                  "parallelIndex": 8,
                  "status": "timedOut",
                  "duration": 90070,
                  "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:44:22.845Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/map-insets--blocks-map-dra-47d1e--and-drills-in-from-a-label-ui/error-context.md"
                    }
                  ]
                },
                {
                  "workerIndex": 103,
                  "parallelIndex": 6,
                  "status": "timedOut",
                  "duration": 90497,
                  "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:45:53.394Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/map-insets--blocks-map-dra-47d1e--and-drills-in-from-a-label-ui-retry1/trace.zip"
                    }
                  ]
                },
                {
                  "workerIndex": 125,
                  "parallelIndex": 4,
                  "status": "timedOut",
                  "duration": 90061,
                  "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:47:24.902Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 135,
                  "parallelIndex": 3,
                  "status": "passed",
                  "duration": 792,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-24T00:48:55.543Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/prod-signed-in-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/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": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "failed",
                      "duration": 114,
                      "error": {
                        "message": "Error: /candidates/sitemap-candidates-j.xml should answer 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[31m404\u001b[39m",
                        "stack": "Error: /candidates/sitemap-candidates-j.xml should answer 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[31m404\u001b[39m\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:36:63)\n    at /app/tests/ui/routing.spec.ts:46:27",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 63,
                          "line": 36
                        },
                        "snippet": "\u001b[0m \u001b[90m 34 |\u001b[39m   \u001b[36mconst\u001b[39m childPath \u001b[33m=\u001b[39m toRelativePath(child)\u001b[33m;\u001b[39m\n \u001b[90m 35 |\u001b[39m   \u001b[36mconst\u001b[39m childRes \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(childPath)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 36 |\u001b[39m   expect(childRes\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${childPath} should answer 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 37 |\u001b[39m   \u001b[36mreturn\u001b[39m locs(\u001b[36mawait\u001b[39m childRes\u001b[33m.\u001b[39mtext())\u001b[33m;\u001b[39m\n \u001b[90m 38 |\u001b[39m }\n \u001b[90m 39 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 63,
                            "line": 36
                          },
                          "message": "Error: /candidates/sitemap-candidates-j.xml should answer 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[31m404\u001b[39m\n\n  34 |   const childPath = toRelativePath(child);\n  35 |   const childRes = await request.get(childPath);\n> 36 |   expect(childRes.status(), `${childPath} should answer 200`).toBe(200);\n     |                                                               ^\n  37 |   return locs(await childRes.text());\n  38 | }\n  39 |\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:36:63)\n    at /app/tests/ui/routing.spec.ts:46:27"
                        }
                      ],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] child:/candidates/sitemap-candidates.xml: https://us.elect.info/candidates/sitemap-candidates-j.xml\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:18.856Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--459c7-l-canonical-the-sitemap-URL-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 63,
                        "line": 36
                      }
                    },
                    {
                      "workerIndex": 12,
                      "parallelIndex": 9,
                      "status": "failed",
                      "duration": 369,
                      "error": {
                        "message": "Error: /candidates/sitemap-candidates-j.xml should answer 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[31m404\u001b[39m",
                        "stack": "Error: /candidates/sitemap-candidates-j.xml should answer 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[31m404\u001b[39m\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:36:63)\n    at /app/tests/ui/routing.spec.ts:46:27",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 63,
                          "line": 36
                        },
                        "snippet": "\u001b[0m \u001b[90m 34 |\u001b[39m   \u001b[36mconst\u001b[39m childPath \u001b[33m=\u001b[39m toRelativePath(child)\u001b[33m;\u001b[39m\n \u001b[90m 35 |\u001b[39m   \u001b[36mconst\u001b[39m childRes \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(childPath)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 36 |\u001b[39m   expect(childRes\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${childPath} should answer 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 37 |\u001b[39m   \u001b[36mreturn\u001b[39m locs(\u001b[36mawait\u001b[39m childRes\u001b[33m.\u001b[39mtext())\u001b[33m;\u001b[39m\n \u001b[90m 38 |\u001b[39m }\n \u001b[90m 39 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 63,
                            "line": 36
                          },
                          "message": "Error: /candidates/sitemap-candidates-j.xml should answer 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[31m404\u001b[39m\n\n  34 |   const childPath = toRelativePath(child);\n  35 |   const childRes = await request.get(childPath);\n> 36 |   expect(childRes.status(), `${childPath} should answer 200`).toBe(200);\n     |                                                               ^\n  37 |   return locs(await childRes.text());\n  38 | }\n  39 |\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:36:63)\n    at /app/tests/ui/routing.spec.ts:46:27"
                        }
                      ],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] child:/candidates/sitemap-candidates.xml: https://us.elect.info/candidates/sitemap-candidates-j.xml\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:44:19.505Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--459c7-l-canonical-the-sitemap-URL-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--459c7-l-canonical-the-sitemap-URL-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 63,
                        "line": 36
                      }
                    },
                    {
                      "workerIndex": 16,
                      "parallelIndex": 9,
                      "status": "failed",
                      "duration": 74,
                      "error": {
                        "message": "Error: /candidates/sitemap-candidates-j.xml should answer 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[31m404\u001b[39m",
                        "stack": "Error: /candidates/sitemap-candidates-j.xml should answer 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[31m404\u001b[39m\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:36:63)\n    at /app/tests/ui/routing.spec.ts:46:27",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 63,
                          "line": 36
                        },
                        "snippet": "\u001b[0m \u001b[90m 34 |\u001b[39m   \u001b[36mconst\u001b[39m childPath \u001b[33m=\u001b[39m toRelativePath(child)\u001b[33m;\u001b[39m\n \u001b[90m 35 |\u001b[39m   \u001b[36mconst\u001b[39m childRes \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(childPath)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 36 |\u001b[39m   expect(childRes\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${childPath} should answer 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 37 |\u001b[39m   \u001b[36mreturn\u001b[39m locs(\u001b[36mawait\u001b[39m childRes\u001b[33m.\u001b[39mtext())\u001b[33m;\u001b[39m\n \u001b[90m 38 |\u001b[39m }\n \u001b[90m 39 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 63,
                            "line": 36
                          },
                          "message": "Error: /candidates/sitemap-candidates-j.xml should answer 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[31m404\u001b[39m\n\n  34 |   const childPath = toRelativePath(child);\n  35 |   const childRes = await request.get(childPath);\n> 36 |   expect(childRes.status(), `${childPath} should answer 200`).toBe(200);\n     |                                                               ^\n  37 |   return locs(await childRes.text());\n  38 | }\n  39 |\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:36:63)\n    at /app/tests/ui/routing.spec.ts:46:27"
                        }
                      ],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] child:/candidates/sitemap-candidates.xml: https://us.elect.info/candidates/sitemap-candidates-j.xml\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:44:20.493Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--459c7-l-canonical-the-sitemap-URL-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 63,
                        "line": 36
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "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": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 18,
                      "parallelIndex": 9,
                      "status": "failed",
                      "duration": 70,
                      "error": {
                        "message": "Error: /committees/sitemap-committees.xml should answer 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[31m404\u001b[39m",
                        "stack": "Error: /committees/sitemap-committees.xml should answer 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[31m404\u001b[39m\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 53,
                          "line": 30
                        },
                        "snippet": "\u001b[0m \u001b[90m 28 |\u001b[39m   \u001b[36mconst\u001b[39m path \u001b[33m=\u001b[39m \u001b[32m`/${collection}/sitemap-${collection}.xml`\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 29 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 30 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${path} should answer 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 31 |\u001b[39m   \u001b[36mconst\u001b[39m xml \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mtext()\u001b[33m;\u001b[39m\n \u001b[90m 32 |\u001b[39m   \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39mxml\u001b[33m.\u001b[39mincludes(\u001b[32m'<sitemapindex'\u001b[39m)) \u001b[36mreturn\u001b[39m locs(xml)\u001b[33m;\u001b[39m\n \u001b[90m 33 |\u001b[39m   \u001b[36mconst\u001b[39m [child] \u001b[33m=\u001b[39m getRandomItems(locs(xml)\u001b[33m,\u001b[39m \u001b[35m1\u001b[39m\u001b[33m,\u001b[39m \u001b[32m`child:${path}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 53,
                            "line": 30
                          },
                          "message": "Error: /committees/sitemap-committees.xml should answer 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[31m404\u001b[39m\n\n  28 |   const path = `/${collection}/sitemap-${collection}.xml`;\n  29 |   const res = await request.get(path);\n> 30 |   expect(res.status(), `${path} should answer 200`).toBe(200);\n     |                                                     ^\n  31 |   const xml = await res.text();\n  32 |   if (!xml.includes('<sitemapindex')) return locs(xml);\n  33 |   const [child] = getRandomItems(locs(xml), 1, `child:${path}`);\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:21.133Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--043d7-l-canonical-the-sitemap-URL-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 53,
                        "line": 30
                      }
                    },
                    {
                      "workerIndex": 19,
                      "parallelIndex": 9,
                      "status": "failed",
                      "duration": 103,
                      "error": {
                        "message": "Error: /committees/sitemap-committees-e.xml should answer 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[31m404\u001b[39m",
                        "stack": "Error: /committees/sitemap-committees-e.xml should answer 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[31m404\u001b[39m\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:36:63)\n    at /app/tests/ui/routing.spec.ts:46:27",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 63,
                          "line": 36
                        },
                        "snippet": "\u001b[0m \u001b[90m 34 |\u001b[39m   \u001b[36mconst\u001b[39m childPath \u001b[33m=\u001b[39m toRelativePath(child)\u001b[33m;\u001b[39m\n \u001b[90m 35 |\u001b[39m   \u001b[36mconst\u001b[39m childRes \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(childPath)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 36 |\u001b[39m   expect(childRes\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${childPath} should answer 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 37 |\u001b[39m   \u001b[36mreturn\u001b[39m locs(\u001b[36mawait\u001b[39m childRes\u001b[33m.\u001b[39mtext())\u001b[33m;\u001b[39m\n \u001b[90m 38 |\u001b[39m }\n \u001b[90m 39 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 63,
                            "line": 36
                          },
                          "message": "Error: /committees/sitemap-committees-e.xml should answer 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[31m404\u001b[39m\n\n  34 |   const childPath = toRelativePath(child);\n  35 |   const childRes = await request.get(childPath);\n> 36 |   expect(childRes.status(), `${childPath} should answer 200`).toBe(200);\n     |                                                               ^\n  37 |   return locs(await childRes.text());\n  38 | }\n  39 |\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:36:63)\n    at /app/tests/ui/routing.spec.ts:46:27"
                        }
                      ],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] child:/committees/sitemap-committees.xml: https://us.elect.info/committees/sitemap-committees-e.xml\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:44:21.740Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--043d7-l-canonical-the-sitemap-URL-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--043d7-l-canonical-the-sitemap-URL-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 63,
                        "line": 36
                      }
                    },
                    {
                      "workerIndex": 20,
                      "parallelIndex": 9,
                      "status": "failed",
                      "duration": 66,
                      "error": {
                        "message": "Error: /committees/sitemap-committees.xml should answer 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[31m404\u001b[39m",
                        "stack": "Error: /committees/sitemap-committees.xml should answer 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[31m404\u001b[39m\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 53,
                          "line": 30
                        },
                        "snippet": "\u001b[0m \u001b[90m 28 |\u001b[39m   \u001b[36mconst\u001b[39m path \u001b[33m=\u001b[39m \u001b[32m`/${collection}/sitemap-${collection}.xml`\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 29 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 30 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${path} should answer 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 31 |\u001b[39m   \u001b[36mconst\u001b[39m xml \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mtext()\u001b[33m;\u001b[39m\n \u001b[90m 32 |\u001b[39m   \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39mxml\u001b[33m.\u001b[39mincludes(\u001b[32m'<sitemapindex'\u001b[39m)) \u001b[36mreturn\u001b[39m locs(xml)\u001b[33m;\u001b[39m\n \u001b[90m 33 |\u001b[39m   \u001b[36mconst\u001b[39m [child] \u001b[33m=\u001b[39m getRandomItems(locs(xml)\u001b[33m,\u001b[39m \u001b[35m1\u001b[39m\u001b[33m,\u001b[39m \u001b[32m`child:${path}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 53,
                            "line": 30
                          },
                          "message": "Error: /committees/sitemap-committees.xml should answer 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[31m404\u001b[39m\n\n  28 |   const path = `/${collection}/sitemap-${collection}.xml`;\n  29 |   const res = await request.get(path);\n> 30 |   expect(res.status(), `${path} should answer 200`).toBe(200);\n     |                                                     ^\n  31 |   const xml = await res.text();\n  32 |   if (!xml.includes('<sitemapindex')) return locs(xml);\n  33 |   const [child] = getRandomItems(locs(xml), 1, `child:${path}`);\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:44:22.392Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--043d7-l-canonical-the-sitemap-URL-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 53,
                        "line": 30
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "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": 21,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 799,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] parties: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/parties/usw/, https://us.elect.info/parties/agu/, https://us.elect.info/parties/bdy/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:22.977Z",
                      "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": 21,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 23,
                      "error": {
                        "message": "Error: /offices/sitemap-offices.xml should answer 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[31m404\u001b[39m",
                        "stack": "Error: /offices/sitemap-offices.xml should answer 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[31m404\u001b[39m\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 53,
                          "line": 30
                        },
                        "snippet": "\u001b[0m \u001b[90m 28 |\u001b[39m   \u001b[36mconst\u001b[39m path \u001b[33m=\u001b[39m \u001b[32m`/${collection}/sitemap-${collection}.xml`\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 29 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 30 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${path} should answer 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 31 |\u001b[39m   \u001b[36mconst\u001b[39m xml \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mtext()\u001b[33m;\u001b[39m\n \u001b[90m 32 |\u001b[39m   \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39mxml\u001b[33m.\u001b[39mincludes(\u001b[32m'<sitemapindex'\u001b[39m)) \u001b[36mreturn\u001b[39m locs(xml)\u001b[33m;\u001b[39m\n \u001b[90m 33 |\u001b[39m   \u001b[36mconst\u001b[39m [child] \u001b[33m=\u001b[39m getRandomItems(locs(xml)\u001b[33m,\u001b[39m \u001b[35m1\u001b[39m\u001b[33m,\u001b[39m \u001b[32m`child:${path}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 53,
                            "line": 30
                          },
                          "message": "Error: /offices/sitemap-offices.xml should answer 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[31m404\u001b[39m\n\n  28 |   const path = `/${collection}/sitemap-${collection}.xml`;\n  29 |   const res = await request.get(path);\n> 30 |   expect(res.status(), `${path} should answer 200`).toBe(200);\n     |                                                     ^\n  31 |   const xml = await res.text();\n  32 |   if (!xml.includes('<sitemapindex')) return locs(xml);\n  33 |   const [child] = getRandomItems(locs(xml), 1, `child:${path}`);\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:23.821Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--bf407-l-canonical-the-sitemap-URL-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 53,
                        "line": 30
                      }
                    },
                    {
                      "workerIndex": 22,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 114,
                      "error": {
                        "message": "Error: /offices/sitemap-offices.xml should answer 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[31m404\u001b[39m",
                        "stack": "Error: /offices/sitemap-offices.xml should answer 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[31m404\u001b[39m\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 53,
                          "line": 30
                        },
                        "snippet": "\u001b[0m \u001b[90m 28 |\u001b[39m   \u001b[36mconst\u001b[39m path \u001b[33m=\u001b[39m \u001b[32m`/${collection}/sitemap-${collection}.xml`\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 29 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 30 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${path} should answer 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 31 |\u001b[39m   \u001b[36mconst\u001b[39m xml \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mtext()\u001b[33m;\u001b[39m\n \u001b[90m 32 |\u001b[39m   \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39mxml\u001b[33m.\u001b[39mincludes(\u001b[32m'<sitemapindex'\u001b[39m)) \u001b[36mreturn\u001b[39m locs(xml)\u001b[33m;\u001b[39m\n \u001b[90m 33 |\u001b[39m   \u001b[36mconst\u001b[39m [child] \u001b[33m=\u001b[39m getRandomItems(locs(xml)\u001b[33m,\u001b[39m \u001b[35m1\u001b[39m\u001b[33m,\u001b[39m \u001b[32m`child:${path}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 53,
                            "line": 30
                          },
                          "message": "Error: /offices/sitemap-offices.xml should answer 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[31m404\u001b[39m\n\n  28 |   const path = `/${collection}/sitemap-${collection}.xml`;\n  29 |   const res = await request.get(path);\n> 30 |   expect(res.status(), `${path} should answer 200`).toBe(200);\n     |                                                     ^\n  31 |   const xml = await res.text();\n  32 |   if (!xml.includes('<sitemapindex')) return locs(xml);\n  33 |   const [child] = getRandomItems(locs(xml), 1, `child:${path}`);\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:44:24.316Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--bf407-l-canonical-the-sitemap-URL-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--bf407-l-canonical-the-sitemap-URL-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 53,
                        "line": 30
                      }
                    },
                    {
                      "workerIndex": 23,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 893,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] offices: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/offices/house/ny-08/, https://us.elect.info/offices/house/tx-37/, https://us.elect.info/offices/senate/louisiana/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-24T00:44:24.954Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "flaky"
                }
              ],
              "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": 5,
                      "status": "failed",
                      "duration": 23,
                      "error": {
                        "message": "Error: /districts/sitemap-districts.xml should answer 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[31m404\u001b[39m",
                        "stack": "Error: /districts/sitemap-districts.xml should answer 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[31m404\u001b[39m\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 53,
                          "line": 30
                        },
                        "snippet": "\u001b[0m \u001b[90m 28 |\u001b[39m   \u001b[36mconst\u001b[39m path \u001b[33m=\u001b[39m \u001b[32m`/${collection}/sitemap-${collection}.xml`\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 29 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 30 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${path} should answer 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 31 |\u001b[39m   \u001b[36mconst\u001b[39m xml \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mtext()\u001b[33m;\u001b[39m\n \u001b[90m 32 |\u001b[39m   \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39mxml\u001b[33m.\u001b[39mincludes(\u001b[32m'<sitemapindex'\u001b[39m)) \u001b[36mreturn\u001b[39m locs(xml)\u001b[33m;\u001b[39m\n \u001b[90m 33 |\u001b[39m   \u001b[36mconst\u001b[39m [child] \u001b[33m=\u001b[39m getRandomItems(locs(xml)\u001b[33m,\u001b[39m \u001b[35m1\u001b[39m\u001b[33m,\u001b[39m \u001b[32m`child:${path}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 53,
                            "line": 30
                          },
                          "message": "Error: /districts/sitemap-districts.xml should answer 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[31m404\u001b[39m\n\n  28 |   const path = `/${collection}/sitemap-${collection}.xml`;\n  29 |   const res = await request.get(path);\n> 30 |   expect(res.status(), `${path} should answer 200`).toBe(200);\n     |                                                     ^\n  31 |   const xml = await res.text();\n  32 |   if (!xml.includes('<sitemapindex')) return locs(xml);\n  33 |   const [child] = getRandomItems(locs(xml), 1, `child:${path}`);\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:25.889Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--e1e35-l-canonical-the-sitemap-URL-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 53,
                        "line": 30
                      }
                    },
                    {
                      "workerIndex": 24,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 135,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] districts: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/districts/mo-05/, https://us.elect.info/districts/ny-04/, https://us.elect.info/districts/sc-02/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:44:26.388Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--e1e35-l-canonical-the-sitemap-URL-ui-retry1/trace.zip"
                        }
                      ]
                    }
                  ],
                  "status": "flaky"
                }
              ],
              "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": 24,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 2494,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] states: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/states/new-york/, https://us.elect.info/states/louisiana/, https://us.elect.info/states/minnesota/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:26.580Z",
                      "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": 24,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 31,
                      "error": {
                        "message": "Error: /elections/sitemap-elections.xml should answer 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[31m404\u001b[39m",
                        "stack": "Error: /elections/sitemap-elections.xml should answer 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[31m404\u001b[39m\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 53,
                          "line": 30
                        },
                        "snippet": "\u001b[0m \u001b[90m 28 |\u001b[39m   \u001b[36mconst\u001b[39m path \u001b[33m=\u001b[39m \u001b[32m`/${collection}/sitemap-${collection}.xml`\u001b[39m\u001b[33m;\u001b[39m\n \u001b[90m 29 |\u001b[39m   \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39m\u001b[36mget\u001b[39m(path)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 30 |\u001b[39m   expect(res\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${path} should answer 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 31 |\u001b[39m   \u001b[36mconst\u001b[39m xml \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m res\u001b[33m.\u001b[39mtext()\u001b[33m;\u001b[39m\n \u001b[90m 32 |\u001b[39m   \u001b[36mif\u001b[39m (\u001b[33m!\u001b[39mxml\u001b[33m.\u001b[39mincludes(\u001b[32m'<sitemapindex'\u001b[39m)) \u001b[36mreturn\u001b[39m locs(xml)\u001b[33m;\u001b[39m\n \u001b[90m 33 |\u001b[39m   \u001b[36mconst\u001b[39m [child] \u001b[33m=\u001b[39m getRandomItems(locs(xml)\u001b[33m,\u001b[39m \u001b[35m1\u001b[39m\u001b[33m,\u001b[39m \u001b[32m`child:${path}`\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 53,
                            "line": 30
                          },
                          "message": "Error: /elections/sitemap-elections.xml should answer 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[31m404\u001b[39m\n\n  28 |   const path = `/${collection}/sitemap-${collection}.xml`;\n  29 |   const res = await request.get(path);\n> 30 |   expect(res.status(), `${path} should answer 200`).toBe(200);\n     |                                                     ^\n  31 |   const xml = await res.text();\n  32 |   if (!xml.includes('<sitemapindex')) return locs(xml);\n  33 |   const [child] = getRandomItems(locs(xml), 1, `child:${path}`);\n    at sitemapLocs (/app/tests/ui/routing.spec.ts:30:53)\n    at /app/tests/ui/routing.spec.ts:46:27"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:29.092Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--8baac-l-canonical-the-sitemap-URL-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 53,
                        "line": 30
                      }
                    },
                    {
                      "workerIndex": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 257,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=prod-signed-in-20261024] elections: sitemap URLs serve their page with rel=canonical = the sitemap URL: https://us.elect.info/elections/1988/, https://us.elect.info/elections/1994/, https://us.elect.info/elections/1996/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-24T00:44:29.617Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/prod-signed-in-20261024/us-preview/test-output/routing-routing-canonical--8baac-l-canonical-the-sitemap-URL-ui-retry1/trace.zip"
                        }
                      ]
                    }
                  ],
                  "status": "flaky"
                }
              ],
              "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": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 31,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:29.940Z",
                      "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": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 12787,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:29.986Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 5371,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:42.834Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 860,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:48.226Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 658,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:49.108Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 941,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:49.780Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 1753,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:50.735Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 2629,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:52.500Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 429,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:55.143Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 25,
                      "parallelIndex": 5,
                      "status": "passed",
                      "duration": 30,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:55.589Z",
                      "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": 25,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 103,
                      "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:44:55.631Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 44,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 150,
                      "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:44:56.284Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 46,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 160,
                      "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:44:57.005Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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/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": 10,
                      "parallelIndex": 10,
                      "status": "timedOut",
                      "duration": 30081,
                      "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/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:44:18.858Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/voter-cycles-voters-and-th-f07a2--and-voting-history-filters-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 33,
                      "parallelIndex": 10,
                      "status": "failed",
                      "duration": 16209,
                      "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:44:49.567Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 63,
                      "parallelIndex": 6,
                      "status": "failed",
                      "duration": 15660,
                      "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:45:06.506Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 84,
                      "parallelIndex": 6,
                      "status": "failed",
                      "duration": 20967,
                      "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:45:22.789Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 99,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 16017,
                      "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:45:44.330Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 106,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 15696,
                      "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:46:01.090Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 110,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 15606,
                      "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:46:17.380Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 114,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 16016,
                      "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:46:33.598Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 116,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 15605,
                      "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:46:50.357Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 120,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 15604,
                      "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:47:06.586Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 122,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 15996,
                      "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:47:22.787Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-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": 126,
                      "parallelIndex": 2,
                      "status": "failed",
                      "duration": 15765,
                      "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:47:39.593Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 129,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 219,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:47:55.981Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 129,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 184,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:47:56.304Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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": 11,
                      "parallelIndex": 11,
                      "status": "passed",
                      "duration": 117,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-24T00:44:18.867Z",
                      "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": 11,
                      "parallelIndex": 11,
                      "status": "failed",
                      "duration": 36,
                      "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:44:19.036Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 13,
                      "parallelIndex": 11,
                      "status": "failed",
                      "duration": 276,
                      "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:44:19.566Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 15,
                      "parallelIndex": 11,
                      "status": "failed",
                      "duration": 79,
                      "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:44:20.439Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 17,
                      "parallelIndex": 11,
                      "status": "failed",
                      "duration": 9896,
                      "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:44:21.098Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 26,
                      "parallelIndex": 9,
                      "status": "failed",
                      "duration": 16259,
                      "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:44:31.491Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 28,
                      "parallelIndex": 9,
                      "status": "failed",
                      "duration": 423,
                      "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:44:48.336Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/prod-signed-in-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": 31,
                      "parallelIndex": 9,
                      "status": "timedOut",
                      "duration": 30058,
                      "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:44:49.300Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-brow-b8f67-s-and-links-to-detail-pages-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 79,
                      "parallelIndex": 7,
                      "status": "timedOut",
                      "duration": 30364,
                      "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:45:19.941Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-brow-b8f67-s-and-links-to-detail-pages-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 101,
                      "parallelIndex": 3,
                      "status": "timedOut",
                      "duration": 30098,
                      "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:45:51.043Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 112,
                      "parallelIndex": 3,
                      "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": 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:46:21.736Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-search-needs-every-term-name-plus-city-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 117,
                      "parallelIndex": 3,
                      "status": "timedOut",
                      "duration": 30364,
                      "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:46:52.463Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-search-needs-every-term-name-plus-city-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 123,
                      "parallelIndex": 3,
                      "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": 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:47:23.600Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 128,
                      "parallelIndex": 3,
                      "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": 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:47:54.311Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-stat-66ee5-unty-and-district-dropdowns-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 132,
                      "parallelIndex": 2,
                      "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": 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:48:24.972Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-stat-66ee5-unty-and-district-dropdowns-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 136,
                      "parallelIndex": 2,
                      "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/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:48:56.249Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 138,
                      "parallelIndex": 2,
                      "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": 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:49:26.953Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-filt-1ca12-atches-and-survive-a-reload-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 141,
                      "parallelIndex": 2,
                      "status": "timedOut",
                      "duration": 30325,
                      "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:49:57.628Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-filt-1ca12-atches-and-survive-a-reload-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 144,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30095,
                      "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:50:28.691Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 147,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30071,
                      "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:50:59.370Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-race-5358f-atinx-voters-in-Miami-Dade--ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 148,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30380,
                      "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:51:30.050Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-race-5358f-atinx-voters-in-Miami-Dade--ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 149,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30070,
                      "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:52:01.260Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 150,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30075,
                      "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:52:31.932Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-ever-c7b29-en-the-filtered-voters-list-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 151,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30420,
                      "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:53:02.605Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-ever-c7b29-en-the-filtered-voters-list-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 152,
                      "parallelIndex": 0,
                      "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": 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:53:33.886Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 153,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30093,
                      "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:54:04.590Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-an-unknown-voter-id-renders-Not-Found-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 154,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30343,
                      "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:54:35.308Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voters-premium-an-unknown-voter-id-renders-Not-Found-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 155,
                      "parallelIndex": 0,
                      "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/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:55:06.436Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 156,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30093,
                      "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:55:37.114Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voter-Location-card-bd726-iew-and-Districts-drop-them-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 157,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30507,
                      "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:56:07.811Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voter-Location-card-bd726-iew-and-Districts-drop-them-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 158,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30076,
                      "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:56:39.583Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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": 159,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30048,
                      "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:57:10.344Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voter-Location-card-6c347-ns-the-filtered-voters-list-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 160,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30363,
                      "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:57:40.987Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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-signed-in-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-signed-in-20261024/us-preview/test-output/voters-voter-Location-card-6c347-ns-the-filtered-voters-list-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 161,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30075,
                      "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:58:12.135Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/prod-signed-in-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-signed-in-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:44:17.835Z",
    "duration": 864533.2679999999,
    "expected": 119,
    "skipped": 0,
    "unexpected": 50,
    "flaky": 3
  }
}