{
  "config": {
    "argv": [
      "/usr/bin/node",
      "/app/node_modules/.bin/playwright",
      "test",
      "--project=ui",
      "--output=/workspace/artifacts/a8df286/us/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": 19
    },
    "preserveOutput": "always",
    "projects": [
      {
        "outputDir": "/workspace/artifacts/a8df286/us/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 19
        },
        "id": "ui",
        "name": "ui",
        "testDir": "/app/tests/ui",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      },
      {
        "outputDir": "/workspace/artifacts/a8df286/us/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 19
        },
        "id": "api",
        "name": "api",
        "testDir": "/app/tests/api",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      }
    ],
    "filteredProjects": [
      {
        "grep": {},
        "grepInvert": null,
        "outputDir": "/workspace/artifacts/a8df286/us/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 19
        },
        "name": "ui",
        "testDir": "/app/tests/ui",
        "snapshotDir": "/app/tests/ui",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000,
        "use": {
          "browserName": "chromium",
          "baseURL": "http://10.1.74.226",
          "extraHTTPHeaders": {},
          "screenshot": "on",
          "video": "on-first-retry",
          "trace": "on-first-retry"
        },
        "dependencies": [],
        "ignoreSnapshots": false,
        "__projectId": "ui"
      }
    ],
    "quiet": false,
    "reporter": [
      [
        "html",
        {
          "outputFolder": "/workspace/artifacts/a8df286/us/reports/html",
          "open": "never"
        }
      ],
      [
        "json",
        {
          "outputFile": "/workspace/artifacts/a8df286/us/reports/results.json"
        }
      ],
      [
        "list",
        null
      ]
    ],
    "reportSlowTests": {
      "max": 5,
      "threshold": 300000
    },
    "shard": null,
    "tags": [],
    "updateSnapshots": "default",
    "updateSourceMethod": "patch",
    "version": "1.64.0",
    "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": 29,
          "column": 6,
          "specs": [
            {
              "title": "/auth/whoami returns well-formed JSON",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 41,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.890Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-34adcfbb6e371e5c1571",
              "file": "tests/ui/auth.spec.ts",
              "line": 30,
              "column": 7
            },
            {
              "title": "a forged identity header grants nothing where Authentik is off",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 20,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.983Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-d16713a710dd32aba362",
              "file": "tests/ui/auth.spec.ts",
              "line": 46,
              "column": 7
            },
            {
              "title": "a forged elect-info-premium group header grants nothing where Authentik is off",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 16,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.020Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-8b08522ffb6040767729",
              "file": "tests/ui/auth.spec.ts",
              "line": 57,
              "column": 9
            },
            {
              "title": "a forged ei-voter-viewers group header grants nothing where Authentik is off",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 10,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.054Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-331a481ae815f21adbb5",
              "file": "tests/ui/auth.spec.ts",
              "line": 57,
              "column": 9
            },
            {
              "title": "a forged ei-donor-viewers group header grants nothing where Authentik is off",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 12,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.077Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-627faecc86d75e536556",
              "file": "tests/ui/auth.spec.ts",
              "line": 57,
              "column": 9
            },
            {
              "title": "a forged ei-block-viewers group header grants nothing where Authentik is off",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 12,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.104Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-bafaf85fa26bf5a6d3e5",
              "file": "tests/ui/auth.spec.ts",
              "line": 57,
              "column": 9
            },
            {
              "title": "a forged elect-news-curators group header grants nothing where Authentik is off",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 18,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.128Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-05316fe4e949eabf6cf3",
              "file": "tests/ui/auth.spec.ts",
              "line": 57,
              "column": 9
            },
            {
              "title": "/voters/ answers 200 for the test identity",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 222,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.160Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/auth-sign-in-and-premium-s-c6449-s-200-for-the-test-identity-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-e0c978ff2eac96857528",
              "file": "tests/ui/auth.spec.ts",
              "line": 70,
              "column": 9
            },
            {
              "title": "/individuals/ answers 200 for the test identity",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 138,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.515Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/auth-sign-in-and-premium-s-57df6-s-200-for-the-test-identity-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-8e763adcb4584d4cc03c",
              "file": "tests/ui/auth.spec.ts",
              "line": 70,
              "column": 9
            },
            {
              "title": "/blocks/ answers 200 for the test identity",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 394,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.673Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/auth-sign-in-and-premium-s-e6064-s-200-for-the-test-identity-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-ac0d57b9b95cd8b304be",
              "file": "tests/ui/auth.spec.ts",
              "line": 70,
              "column": 9
            },
            {
              "title": "/voters/ is the voter search page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 190,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.083Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/auth-sign-in-and-premium-s-ff81e-rs-is-the-voter-search-page-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-24cc7566a4f160062737",
              "file": "tests/ui/auth.spec.ts",
              "line": 79,
              "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": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 110,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.288Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 86,
              "column": 7
            },
            {
              "title": "homepage premium cards follow the account",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 241,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.411Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/auth-sign-in-and-premium-s-b27b9-um-cards-follow-the-account-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-25a6d4e0f106df1269de",
              "file": "tests/ui/auth.spec.ts",
              "line": 91,
              "column": 7
            },
            {
              "title": "account slot shows the signed-in email where Authentik is on",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 170,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.664Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/auth-sign-in-and-premium-s-b2077-email-where-Authentik-is-on-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-1e049c825edca23851b9",
              "file": "tests/ui/auth.spec.ts",
              "line": 109,
              "column": 7
            }
          ]
        },
        {
          "title": "sign-in panel",
          "file": "tests/ui/auth.spec.ts",
          "line": 130,
          "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": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 11,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.846Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-8ef04c02a5acbc6b0869",
              "file": "tests/ui/auth.spec.ts",
              "line": 131,
              "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": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 8,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.868Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-93dbd48805f61db758bc",
              "file": "tests/ui/auth.spec.ts",
              "line": 148,
              "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": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 14,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.887Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-3bb8375e8399bd8ed909",
              "file": "tests/ui/auth.spec.ts",
              "line": 159,
              "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": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 13,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.914Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d748ac400d08b85935ef-f0802db54d500bb3e896",
              "file": "tests/ui/auth.spec.ts",
              "line": 167,
              "column": 7
            },
            {
              "title": "Log In opens the sign-in panel with Google and email",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "needs Authentik on and a signed-out visitor",
                      "location": {
                        "file": "/app/tests/ui/auth.spec.ts",
                        "line": 175,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "skipped",
                      "duration": 86,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.939Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "needs Authentik on and a signed-out visitor",
                          "location": {
                            "file": "/app/tests/ui/auth.spec.ts",
                            "line": 175,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/auth-sign-in-panel-Log-In--c8811-panel-with-Google-and-email-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "d748ac400d08b85935ef-985d1e0afe9b23e56167",
              "file": "tests/ui/auth.spec.ts",
              "line": 173,
              "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": 1013,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-15T02:58:41.924Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/a8df286/us/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": true,
          "tags": [],
          "tests": [
            {
              "timeout": 120000,
              "annotations": [],
              "expectedStatus": "passed",
              "projectId": "ui",
              "projectName": "ui",
              "results": [
                {
                  "workerIndex": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 6309,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-15T02:58:43.306Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/a8df286/us/test-output/county-filters-blocks-coun-76060-es-list-the-county-s-blocks-ui/test-finished-1.png"
                    }
                  ]
                }
              ],
              "status": "expected"
            }
          ],
          "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": 1,
                  "parallelIndex": 1,
                  "status": "passed",
                  "duration": 561,
                  "errors": [],
                  "stdout": [],
                  "stderr": [],
                  "retry": 0,
                  "startTime": "2026-10-15T02:58:49.630Z",
                  "annotations": [],
                  "attachments": [
                    {
                      "name": "screenshot",
                      "contentType": "image/png",
                      "path": "/workspace/artifacts/a8df286/us/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/data-contracts.spec.ts",
      "file": "tests/ui/data-contracts.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "graph data contracts",
          "file": "tests/ui/data-contracts.spec.ts",
          "line": 24,
          "column": 6,
          "specs": [
            {
              "title": "county state_fips + county_fips is the GEOID tracts and blocks join on",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 471,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=a8df286] county state_fips + county_fips is the GEOID tracts and blocks join on: {\"name\":\"Hale County\",\"state_fips\":\"48\",\"county_fips\":\"189\"}, {\"name\":\"Matagorda County\",\"state_fips\":\"48\",\"county_fips\":\"321\"}, {\"name\":\"Hudspeth County\",\"state_fips\":\"48\",\"county_fips\":\"229\"}\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.926Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-f384fe1a5980f6fbbab9",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 25,
              "column": 7
            },
            {
              "title": "precincts join on the 5-digit county GEOID",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 17,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.454Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-4429b8eac19c273f24bb",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 50,
              "column": 7
            },
            {
              "title": "candidate ids are UUID5s and carry their FEC id",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 74,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.485Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-0d399e3f265b47191366",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 58,
              "column": 7
            },
            {
              "title": "Party exposes its FEC code",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 16,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.572Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-a452252060391ae22369",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 71,
              "column": 7
            },
            {
              "title": "the graph serves every scalar the schema declares (seeded sample per type)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 240000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 10446,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=a8df286] scalars:Block: 50000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Candidate: 5000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:CodeSource: 5000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Committee: 5000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Contributor: 50000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:County: 20000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Cycle: 5000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:DataSource: 20000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:District: 5000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Employer: 20000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Individual: 5000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Office: 5000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Party: 20000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Place: 20000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:PostalCode: 20000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Precinct: 1000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Tract: 1000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Stage: 0\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:State: 20000\n"
                        },
                        {
                          "text": "[sample seed=a8df286] scalars:Vendor: 5000\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.598Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-83e55b3a887e2ecf6eaf",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 81,
              "column": 7
            },
            {
              "title": "entity counts stay above the accepted baseline",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 16,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:53.058Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "370fc745607416148837-d1674ff7d0fddc5795da",
              "file": "tests/ui/data-contracts.spec.ts",
              "line": 162,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/disabled-pages.spec.ts",
      "file": "tests/ui/disabled-pages.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "disabled entity pages",
          "file": "tests/ui/disabled-pages.spec.ts",
          "line": 8,
          "column": 6,
          "specs": [
            {
              "title": "/contributors returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 167,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.931Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-en-15012-es-contributors-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-eeaf2a96904f5fab5855",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/contributors/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 96,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.456Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-en-15012-es-contributors-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-4ef4084687b4fd401e0e",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/contributors/any-entity-id/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 109,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.580Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-en-dad75-s-any-entity-id-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-e3ed295c83582d4283c6",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "homepage has no link or visible card for /contributors/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 197,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.709Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-en-a3004-ible-card-for-contributors--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-dc932c58cabd7e95e978",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 17,
              "column": 9
            },
            {
              "title": "/codesources returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 106,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.924Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-entity-pages-codesources-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-fb06178d006e6578315a",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/codesources/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 99,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.044Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-entity-pages-codesources-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-8235710cd0b53cf94f3d",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/codesources/any-entity-id/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 110,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.159Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-en-808a2-s-any-entity-id-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-d46c47f30cca6317f3ef",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "homepage has no link or visible card for /codesources/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 183,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.281Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-en-269ae-sible-card-for-codesources--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-315ac629d40ead7d7e3f",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 17,
              "column": 9
            },
            {
              "title": "homepage still shows enabled entity cards",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 208,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.478Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-en-839ee--shows-enabled-entity-cards-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-9cd10ec808f3bc4b54f0",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 24,
              "column": 7
            },
            {
              "title": "homepage loads without script errors",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 678,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.699Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-en-9b095-loads-without-script-errors-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-4bdcb6be185099980649",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 31,
              "column": 7
            },
            {
              "title": "disabled-pages runtime script is served",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 138,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:44.391Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/disabled-pages-disabled-en-07214-es-runtime-script-is-served-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-41968bac84ec1d02c2e6",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 39,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/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": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "failed",
                      "duration": 15240,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:21:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 21
                        },
                        "snippet": "\u001b[0m \u001b[90m 19 |\u001b[39m\n \u001b[90m 20 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 21 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 22 |\u001b[39m\n \u001b[90m 23 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 24 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 21
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  19 |\n  20 |     // Wait for GraphQL browseEntities to populate results\n> 21 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  22 |\n  23 |     const links = await page.locator('.entity-search-result').all();\n  24 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:21:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.956Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-54da5-on---index-and-random-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-54da5-on---index-and-random-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 21
                      }
                    },
                    {
                      "workerIndex": 18,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15669,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:21:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 21
                        },
                        "snippet": "\u001b[0m \u001b[90m 19 |\u001b[39m\n \u001b[90m 20 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 21 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 22 |\u001b[39m\n \u001b[90m 23 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 24 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 21
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  19 |\n  20 |     // Wait for GraphQL browseEntities to populate results\n> 21 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  22 |\n  23 |     const links = await page.locator('.entity-search-result').all();\n  24 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:21:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T02:58:58.100Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-54da5-on---index-and-random-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-54da5-on---index-and-random-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-54da5-on---index-and-random-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-54da5-on---index-and-random-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 21
                      }
                    },
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15148,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:21:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 21
                        },
                        "snippet": "\u001b[0m \u001b[90m 19 |\u001b[39m\n \u001b[90m 20 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 21 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 22 |\u001b[39m\n \u001b[90m 23 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 24 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 21
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  19 |\n  20 |     // Wait for GraphQL browseEntities to populate results\n> 21 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  22 |\n  23 |     const links = await page.locator('.entity-search-result').all();\n  24 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:21:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T02:59:14.506Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-54da5-on---index-and-random-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-54da5-on---index-and-random-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 21
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-27dbb3fc8778de5a92d1",
              "file": "tests/ui/entities.spec.ts",
              "line": 15,
              "column": 7
            },
            {
              "title": "committees section - index and random pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15164,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:42:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 42
                        },
                        "snippet": "\u001b[0m \u001b[90m 40 |\u001b[39m\n \u001b[90m 41 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 42 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 43 |\u001b[39m\n \u001b[90m 44 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 45 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 42
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  40 |\n  41 |     // Wait for GraphQL browseEntities to populate results\n> 42 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  43 |\n  44 |     const links = await page.locator('.entity-search-result').all();\n  45 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:42:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:59:30.282Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-9ea35-on---index-and-random-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-9ea35-on---index-and-random-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 42
                      }
                    },
                    {
                      "workerIndex": 24,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15598,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:42:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 42
                        },
                        "snippet": "\u001b[0m \u001b[90m 40 |\u001b[39m\n \u001b[90m 41 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 42 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 43 |\u001b[39m\n \u001b[90m 44 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 45 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 42
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  40 |\n  41 |     // Wait for GraphQL browseEntities to populate results\n> 42 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  43 |\n  44 |     const links = await page.locator('.entity-search-result').all();\n  45 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:42:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T02:59:46.080Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-9ea35-on---index-and-random-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-9ea35-on---index-and-random-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-9ea35-on---index-and-random-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-9ea35-on---index-and-random-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 42
                      }
                    },
                    {
                      "workerIndex": 26,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15160,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:42:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 42
                        },
                        "snippet": "\u001b[0m \u001b[90m 40 |\u001b[39m\n \u001b[90m 41 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 42 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 43 |\u001b[39m\n \u001b[90m 44 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 45 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 42
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  40 |\n  41 |     // Wait for GraphQL browseEntities to populate results\n> 42 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  43 |\n  44 |     const links = await page.locator('.entity-search-result').all();\n  45 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:42:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:00:02.365Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-9ea35-on---index-and-random-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-9ea35-on---index-and-random-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 42
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-e974c5cf3a3265485947",
              "file": "tests/ui/entities.spec.ts",
              "line": 36,
              "column": 7
            },
            {
              "title": "parties section - index and random pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 28,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15147,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:63:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 63
                        },
                        "snippet": "\u001b[0m \u001b[90m 61 |\u001b[39m\n \u001b[90m 62 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 63 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 64 |\u001b[39m\n \u001b[90m 65 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 66 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 63
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  61 |\n  62 |     // Wait for GraphQL browseEntities to populate results\n> 63 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  64 |\n  65 |     const links = await page.locator('.entity-search-result').all();\n  66 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:63:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:00:18.156Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-de35a-on---index-and-random-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-de35a-on---index-and-random-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 63
                      }
                    },
                    {
                      "workerIndex": 30,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15580,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:63:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 63
                        },
                        "snippet": "\u001b[0m \u001b[90m 61 |\u001b[39m\n \u001b[90m 62 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 63 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 64 |\u001b[39m\n \u001b[90m 65 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 66 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 63
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  61 |\n  62 |     // Wait for GraphQL browseEntities to populate results\n> 63 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  64 |\n  65 |     const links = await page.locator('.entity-search-result').all();\n  66 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:63:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:00:33.915Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-de35a-on---index-and-random-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-de35a-on---index-and-random-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-de35a-on---index-and-random-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-de35a-on---index-and-random-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 63
                      }
                    },
                    {
                      "workerIndex": 32,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15171,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:63:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 63
                        },
                        "snippet": "\u001b[0m \u001b[90m 61 |\u001b[39m\n \u001b[90m 62 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 63 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 64 |\u001b[39m\n \u001b[90m 65 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 66 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 63
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  61 |\n  62 |     // Wait for GraphQL browseEntities to populate results\n> 63 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  64 |\n  65 |     const links = await page.locator('.entity-search-result').all();\n  66 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:63:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:00:50.179Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-de35a-on---index-and-random-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-de35a-on---index-and-random-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 63
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-10bf5643f2069b30d1e6",
              "file": "tests/ui/entities.spec.ts",
              "line": 57,
              "column": 7
            },
            {
              "title": "offices section - index and random pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 34,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15153,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:84:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 84
                        },
                        "snippet": "\u001b[0m \u001b[90m 82 |\u001b[39m\n \u001b[90m 83 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 84 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 85 |\u001b[39m\n \u001b[90m 86 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 87 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 84
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  82 |\n  83 |     // Wait for GraphQL browseEntities to populate results\n> 84 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  85 |\n  86 |     const links = await page.locator('.entity-search-result').all();\n  87 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:84:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:01:05.978Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-430dd-on---index-and-random-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-430dd-on---index-and-random-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 84
                      }
                    },
                    {
                      "workerIndex": 36,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15616,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:84:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 84
                        },
                        "snippet": "\u001b[0m \u001b[90m 82 |\u001b[39m\n \u001b[90m 83 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 84 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 85 |\u001b[39m\n \u001b[90m 86 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 87 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 84
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  82 |\n  83 |     // Wait for GraphQL browseEntities to populate results\n> 84 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  85 |\n  86 |     const links = await page.locator('.entity-search-result').all();\n  87 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:84:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:01:21.740Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-430dd-on---index-and-random-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-430dd-on---index-and-random-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-430dd-on---index-and-random-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-430dd-on---index-and-random-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 84
                      }
                    },
                    {
                      "workerIndex": 38,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15171,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:84:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 84
                        },
                        "snippet": "\u001b[0m \u001b[90m 82 |\u001b[39m\n \u001b[90m 83 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 84 |\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    |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 85 |\u001b[39m\n \u001b[90m 86 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 87 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 84
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  82 |\n  83 |     // Wait for GraphQL browseEntities to populate results\n> 84 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n     |                                                                 ^\n  85 |\n  86 |     const links = await page.locator('.entity-search-result').all();\n  87 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:84:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:01:38.061Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-430dd-on---index-and-random-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-430dd-on---index-and-random-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 84
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "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": 40,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 791,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=a8df286] districts section - index and random pages: /districts/2b47719d-1181-ea86-9f9d-bb857ad4dd4c/, /districts/5c364e8f-de12-0a9a-35de-c52e67d67846/, /districts/e2e3fbeb-18f7-36e7-8f1a-3949a5683e83/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:01:53.869Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 40,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1057,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "[sample seed=a8df286] states section - index and random pages: /states/ca/, /states/ia/, /states/ar/\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:01:54.749Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 141,
              "column": 7
            },
            {
              "title": "elections section - index and random pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 40,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15127,
                      "error": {
                        "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:176:65",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 65,
                          "line": 176
                        },
                        "snippet": "\u001b[0m \u001b[90m 174 |\u001b[39m\n \u001b[90m 175 |\u001b[39m     \u001b[90m// Wait for GraphQL browseEntities to populate results\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 176 |\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     |\u001b[39m                                                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 177 |\u001b[39m\n \u001b[90m 178 |\u001b[39m     \u001b[36mconst\u001b[39m links \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mall()\u001b[33m;\u001b[39m\n \u001b[90m 179 |\u001b[39m     expect(links\u001b[33m.\u001b[39mlength)\u001b[33m.\u001b[39mtoBeGreaterThan(\u001b[35m0\u001b[39m)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 65,
                            "line": 176
                          },
                          "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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  174 |\n  175 |     // Wait for GraphQL browseEntities to populate results\n> 176 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n      |                                                                 ^\n  177 |\n  178 |     const links = await page.locator('.entity-search-result').all();\n  179 |     expect(links.length).toBeGreaterThan(0);\n    at /app/tests/ui/entities.spec.ts:176:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:01:55.821Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-8bb93-on---index-and-random-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-8bb93-on---index-and-random-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 65,
                        "line": 176
                      }
                    },
                    {
                      "workerIndex": 44,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 40784,
                      "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/entities.spec.ts",
                            "column": 38,
                            "line": 171
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/elections/\", waiting until \"load\"\u001b[22m\n\n\n  169 |\n  170 |   test('elections section - index and random pages', async ({ page }) => {\n> 171 |     const indexResponse = await page.goto('/elections/');\n      |                                      ^\n  172 |     expect(indexResponse?.status(), '/elections/ should answer 200').toBe(200);\n  173 |     await expect(page.locator('h1')).toContainText(/Election/i);\n  174 |\n    at /app/tests/ui/entities.spec.ts:171:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:02:11.496Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-8bb93-on---index-and-random-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-8bb93-on---index-and-random-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-8bb93-on---index-and-random-pages-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 46,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 40043,
                      "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/entities.spec.ts",
                            "column": 38,
                            "line": 171
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/elections/\", waiting until \"load\"\u001b[22m\n\n\n  169 |\n  170 |   test('elections section - index and random pages', async ({ page }) => {\n> 171 |     const indexResponse = await page.goto('/elections/');\n      |                                      ^\n  172 |     expect(indexResponse?.status(), '/elections/ should answer 200').toBe(200);\n  173 |     await expect(page.locator('h1')).toContainText(/Election/i);\n  174 |\n    at /app/tests/ui/entities.spec.ts:171:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:02:52.937Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-8bb93-on---index-and-random-pages-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-b8ea6926bb024b138407",
              "file": "tests/ui/entities.spec.ts",
              "line": 170,
              "column": 7
            }
          ]
        },
        {
          "title": "office profile - dynamic candidates",
          "file": "tests/ui/entities.spec.ts",
          "line": 192,
          "column": 6,
          "specs": [
            {
              "title": "office profile loads candidates filtered to office",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25086,
                      "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 /app/tests/ui/entities.spec.ts:198:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 198
                        },
                        "snippet": "\u001b[0m \u001b[90m 196 |\u001b[39m   test(\u001b[32m'office profile loads candidates filtered to office'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 197 |\u001b[39m     \u001b[90m// Intercept the browseEntities GraphQL request to verify filter is applied\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 198 |\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 199 |\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 200 |\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 201 |\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": 34,
                            "line": 198
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  196 |   test('office profile loads candidates filtered to office', async ({ page }) => {\n  197 |     // Intercept the browseEntities GraphQL request to verify filter is applied\n> 198 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  199 |       if (!resp.url().includes('/api/graphql')) return false;\n  200 |       if (resp.request().method() !== 'POST') return false;\n  201 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:198:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 205
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/offices/684f6e2d-7105-932b-8b7f-94016580f727/\", waiting until \"load\"\u001b[22m\n\n\n  203 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  204 |\n> 205 |     await page.goto(PRESIDENT_PATH);\n      |                ^\n  206 |     const response = await responsePromise;\n  207 |\n  208 |     // Verify the request includes the office filter\n    at /app/tests/ui/entities.spec.ts:205:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:03:33.680Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----cd2a4-ndidates-filtered-to-office-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 198
                      }
                    },
                    {
                      "workerIndex": 48,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25271,
                      "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 /app/tests/ui/entities.spec.ts:198:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 198
                        },
                        "snippet": "\u001b[0m \u001b[90m 196 |\u001b[39m   test(\u001b[32m'office profile loads candidates filtered to office'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 197 |\u001b[39m     \u001b[90m// Intercept the browseEntities GraphQL request to verify filter is applied\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 198 |\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 199 |\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 200 |\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 201 |\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": 34,
                            "line": 198
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  196 |   test('office profile loads candidates filtered to office', async ({ page }) => {\n  197 |     // Intercept the browseEntities GraphQL request to verify filter is applied\n> 198 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  199 |       if (!resp.url().includes('/api/graphql')) return false;\n  200 |       if (resp.request().method() !== 'POST') return false;\n  201 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:198:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 205
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/offices/684f6e2d-7105-932b-8b7f-94016580f727/\", waiting until \"load\"\u001b[22m\n\n\n  203 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  204 |\n> 205 |     await page.goto(PRESIDENT_PATH);\n      |                ^\n  206 |     const response = await responsePromise;\n  207 |\n  208 |     // Verify the request includes the office filter\n    at /app/tests/ui/entities.spec.ts:205:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:03:59.425Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----cd2a4-ndidates-filtered-to-office-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----cd2a4-ndidates-filtered-to-office-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----cd2a4-ndidates-filtered-to-office-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 198
                      }
                    },
                    {
                      "workerIndex": 50,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25079,
                      "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 /app/tests/ui/entities.spec.ts:198:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 198
                        },
                        "snippet": "\u001b[0m \u001b[90m 196 |\u001b[39m   test(\u001b[32m'office profile loads candidates filtered to office'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 197 |\u001b[39m     \u001b[90m// Intercept the browseEntities GraphQL request to verify filter is applied\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 198 |\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 199 |\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 200 |\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 201 |\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": 34,
                            "line": 198
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  196 |   test('office profile loads candidates filtered to office', async ({ page }) => {\n  197 |     // Intercept the browseEntities GraphQL request to verify filter is applied\n> 198 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  199 |       if (!resp.url().includes('/api/graphql')) return false;\n  200 |       if (resp.request().method() !== 'POST') return false;\n  201 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:198:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 205
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/offices/684f6e2d-7105-932b-8b7f-94016580f727/\", waiting until \"load\"\u001b[22m\n\n\n  203 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  204 |\n> 205 |     await page.goto(PRESIDENT_PATH);\n      |                ^\n  206 |     const response = await responsePromise;\n  207 |\n  208 |     // Verify the request includes the office filter\n    at /app/tests/ui/entities.spec.ts:205:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:04:25.328Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----cd2a4-ndidates-filtered-to-office-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 198
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-754cb9c02b5294c0dd5c",
              "file": "tests/ui/entities.spec.ts",
              "line": 196,
              "column": 7
            },
            {
              "title": "office profile candidates sorted by total contributions descending",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 51,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25081,
                      "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 /app/tests/ui/entities.spec.ts:219:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 219
                        },
                        "snippet": "\u001b[0m \u001b[90m 217 |\u001b[39m\n \u001b[90m 218 |\u001b[39m   test(\u001b[32m'office profile candidates sorted by total contributions descending'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 219 |\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 220 |\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 221 |\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 222 |\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": 34,
                            "line": 219
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  217 |\n  218 |   test('office profile candidates sorted by total contributions descending', async ({ page }) => {\n> 219 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  220 |       if (!resp.url().includes('/api/graphql')) return false;\n  221 |       if (resp.request().method() !== 'POST') return false;\n  222 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:219:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 226
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/offices/684f6e2d-7105-932b-8b7f-94016580f727/\", waiting until \"load\"\u001b[22m\n\n\n  224 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  225 |\n> 226 |     await page.goto(PRESIDENT_PATH);\n      |                ^\n  227 |     const response = await responsePromise;\n  228 |\n  229 |     const json = await response.json();\n    at /app/tests/ui/entities.spec.ts:226:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:04:51.075Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----9afcc-al-contributions-descending-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 219
                      }
                    },
                    {
                      "workerIndex": 52,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25568,
                      "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 /app/tests/ui/entities.spec.ts:219:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 219
                        },
                        "snippet": "\u001b[0m \u001b[90m 217 |\u001b[39m\n \u001b[90m 218 |\u001b[39m   test(\u001b[32m'office profile candidates sorted by total contributions descending'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 219 |\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 220 |\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 221 |\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 222 |\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": 34,
                            "line": 219
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  217 |\n  218 |   test('office profile candidates sorted by total contributions descending', async ({ page }) => {\n> 219 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  220 |       if (!resp.url().includes('/api/graphql')) return false;\n  221 |       if (resp.request().method() !== 'POST') return false;\n  222 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:219:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 226
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/offices/684f6e2d-7105-932b-8b7f-94016580f727/\", waiting until \"load\"\u001b[22m\n\n\n  224 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  225 |\n> 226 |     await page.goto(PRESIDENT_PATH);\n      |                ^\n  227 |     const response = await responsePromise;\n  228 |\n  229 |     const json = await response.json();\n    at /app/tests/ui/entities.spec.ts:226:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:05:16.800Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----9afcc-al-contributions-descending-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----9afcc-al-contributions-descending-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----9afcc-al-contributions-descending-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 219
                      }
                    },
                    {
                      "workerIndex": 53,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25080,
                      "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 /app/tests/ui/entities.spec.ts:219:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 219
                        },
                        "snippet": "\u001b[0m \u001b[90m 217 |\u001b[39m\n \u001b[90m 218 |\u001b[39m   test(\u001b[32m'office profile candidates sorted by total contributions descending'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 219 |\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 220 |\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 221 |\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 222 |\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": 34,
                            "line": 219
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  217 |\n  218 |   test('office profile candidates sorted by total contributions descending', async ({ page }) => {\n> 219 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  220 |       if (!resp.url().includes('/api/graphql')) return false;\n  221 |       if (resp.request().method() !== 'POST') return false;\n  222 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:219:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 226
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/offices/684f6e2d-7105-932b-8b7f-94016580f727/\", waiting until \"load\"\u001b[22m\n\n\n  224 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  225 |\n> 226 |     await page.goto(PRESIDENT_PATH);\n      |                ^\n  227 |     const response = await responsePromise;\n  228 |\n  229 |     const json = await response.json();\n    at /app/tests/ui/entities.spec.ts:226:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:05:43.014Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----9afcc-al-contributions-descending-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 219
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-6e65f0bd8866689ca94b",
              "file": "tests/ui/entities.spec.ts",
              "line": 218,
              "column": 7
            },
            {
              "title": "office profile renders candidate results in UI",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 54,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 40033,
                      "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/entities.spec.ts",
                            "column": 16,
                            "line": 247
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/offices/684f6e2d-7105-932b-8b7f-94016580f727/\", waiting until \"load\"\u001b[22m\n\n\n  245 |\n  246 |   test('office profile renders candidate results in UI', async ({ page }) => {\n> 247 |     await page.goto(PRESIDENT_PATH);\n      |                ^\n  248 |\n  249 |     // Wait for candidate results to render\n  250 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:247:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:06:08.745Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----0556c-ers-candidate-results-in-UI-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 56,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 40767,
                      "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/entities.spec.ts",
                            "column": 16,
                            "line": 247
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/offices/684f6e2d-7105-932b-8b7f-94016580f727/\", waiting until \"load\"\u001b[22m\n\n\n  245 |\n  246 |   test('office profile renders candidate results in UI', async ({ page }) => {\n> 247 |     await page.goto(PRESIDENT_PATH);\n      |                ^\n  248 |\n  249 |     // Wait for candidate results to render\n  250 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:247:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:06:49.428Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----0556c-ers-candidate-results-in-UI-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----0556c-ers-candidate-results-in-UI-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----0556c-ers-candidate-results-in-UI-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 57,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 40037,
                      "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/entities.spec.ts",
                            "column": 16,
                            "line": 247
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/offices/684f6e2d-7105-932b-8b7f-94016580f727/\", waiting until \"load\"\u001b[22m\n\n\n  245 |\n  246 |   test('office profile renders candidate results in UI', async ({ page }) => {\n> 247 |     await page.goto(PRESIDENT_PATH);\n      |                ^\n  248 |\n  249 |     // Wait for candidate results to render\n  250 |     await expect(page.locator('.entity-search-result').first()).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:247:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:07:30.878Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-office-profile----0556c-ers-candidate-results-in-UI-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-138301d01ff79967b9fa",
              "file": "tests/ui/entities.spec.ts",
              "line": 246,
              "column": 7
            }
          ]
        },
        {
          "title": "state profile - dynamic candidates",
          "file": "tests/ui/entities.spec.ts",
          "line": 261,
          "column": 6,
          "specs": [
            {
              "title": "state profile loads candidates filtered to state",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 58,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25076,
                      "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 /app/tests/ui/entities.spec.ts:265:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 265
                        },
                        "snippet": "\u001b[0m \u001b[90m 263 |\u001b[39m\n \u001b[90m 264 |\u001b[39m   test(\u001b[32m'state profile loads candidates filtered to state'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 265 |\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 266 |\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 267 |\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 268 |\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": 34,
                            "line": 265
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  263 |\n  264 |   test('state profile loads candidates filtered to state', async ({ page }) => {\n> 265 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  266 |       if (!resp.url().includes('/api/graphql')) return false;\n  267 |       if (resp.request().method() !== 'POST') return false;\n  268 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:265:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 272
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/states/tx/\", waiting until \"load\"\u001b[22m\n\n\n  270 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  271 |\n> 272 |     await page.goto(TEXAS_PATH);\n      |                ^\n  273 |     const response = await responsePromise;\n  274 |\n  275 |     const requestBody = JSON.parse(response.request().postData() || '{}');\n    at /app/tests/ui/entities.spec.ts:272:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:08:11.590Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-state-profile---d-e1647-andidates-filtered-to-state-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 265
                      }
                    },
                    {
                      "workerIndex": 59,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25552,
                      "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 /app/tests/ui/entities.spec.ts:265:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 265
                        },
                        "snippet": "\u001b[0m \u001b[90m 263 |\u001b[39m\n \u001b[90m 264 |\u001b[39m   test(\u001b[32m'state profile loads candidates filtered to state'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 265 |\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 266 |\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 267 |\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 268 |\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": 34,
                            "line": 265
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  263 |\n  264 |   test('state profile loads candidates filtered to state', async ({ page }) => {\n> 265 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  266 |       if (!resp.url().includes('/api/graphql')) return false;\n  267 |       if (resp.request().method() !== 'POST') return false;\n  268 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:265:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 272
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/states/tx/\", waiting until \"load\"\u001b[22m\n\n\n  270 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  271 |\n> 272 |     await page.goto(TEXAS_PATH);\n      |                ^\n  273 |     const response = await responsePromise;\n  274 |\n  275 |     const requestBody = JSON.parse(response.request().postData() || '{}');\n    at /app/tests/ui/entities.spec.ts:272:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:08:37.285Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-state-profile---d-e1647-andidates-filtered-to-state-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-state-profile---d-e1647-andidates-filtered-to-state-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-state-profile---d-e1647-andidates-filtered-to-state-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 265
                      }
                    },
                    {
                      "workerIndex": 61,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25085,
                      "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 /app/tests/ui/entities.spec.ts:265:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 265
                        },
                        "snippet": "\u001b[0m \u001b[90m 263 |\u001b[39m\n \u001b[90m 264 |\u001b[39m   test(\u001b[32m'state profile loads candidates filtered to state'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 265 |\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 266 |\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 267 |\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 268 |\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": 34,
                            "line": 265
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  263 |\n  264 |   test('state profile loads candidates filtered to state', async ({ page }) => {\n> 265 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  266 |       if (!resp.url().includes('/api/graphql')) return false;\n  267 |       if (resp.request().method() !== 'POST') return false;\n  268 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:265:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 272
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/states/tx/\", waiting until \"load\"\u001b[22m\n\n\n  270 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  271 |\n> 272 |     await page.goto(TEXAS_PATH);\n      |                ^\n  273 |     const response = await responsePromise;\n  274 |\n  275 |     const requestBody = JSON.parse(response.request().postData() || '{}');\n    at /app/tests/ui/entities.spec.ts:272:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:09:03.488Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-state-profile---d-e1647-andidates-filtered-to-state-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 265
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-23323ef80148534fb960",
              "file": "tests/ui/entities.spec.ts",
              "line": 264,
              "column": 7
            },
            {
              "title": "state profile candidates sorted by total contributions descending",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 62,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25072,
                      "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 /app/tests/ui/entities.spec.ts:284:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 284
                        },
                        "snippet": "\u001b[0m \u001b[90m 282 |\u001b[39m\n \u001b[90m 283 |\u001b[39m   test(\u001b[32m'state profile candidates sorted by total contributions descending'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 284 |\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 285 |\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 286 |\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 287 |\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": 34,
                            "line": 284
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  282 |\n  283 |   test('state profile candidates sorted by total contributions descending', async ({ page }) => {\n> 284 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  285 |       if (!resp.url().includes('/api/graphql')) return false;\n  286 |       if (resp.request().method() !== 'POST') return false;\n  287 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:284:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 291
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/states/tx/\", waiting until \"load\"\u001b[22m\n\n\n  289 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  290 |\n> 291 |     await page.goto(TEXAS_PATH);\n      |                ^\n  292 |     const response = await responsePromise;\n  293 |\n  294 |     const json = await response.json();\n    at /app/tests/ui/entities.spec.ts:291:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:09:29.446Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-state-profile---d-b2908-al-contributions-descending-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 284
                      }
                    },
                    {
                      "workerIndex": 63,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25284,
                      "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 /app/tests/ui/entities.spec.ts:284:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 284
                        },
                        "snippet": "\u001b[0m \u001b[90m 282 |\u001b[39m\n \u001b[90m 283 |\u001b[39m   test(\u001b[32m'state profile candidates sorted by total contributions descending'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 284 |\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 285 |\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 286 |\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 287 |\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": 34,
                            "line": 284
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  282 |\n  283 |   test('state profile candidates sorted by total contributions descending', async ({ page }) => {\n> 284 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  285 |       if (!resp.url().includes('/api/graphql')) return false;\n  286 |       if (resp.request().method() !== 'POST') return false;\n  287 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:284:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 291
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/states/tx/\", waiting until \"load\"\u001b[22m\n\n\n  289 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  290 |\n> 291 |     await page.goto(TEXAS_PATH);\n      |                ^\n  292 |     const response = await responsePromise;\n  293 |\n  294 |     const json = await response.json();\n    at /app/tests/ui/entities.spec.ts:291:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:09:55.158Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-state-profile---d-b2908-al-contributions-descending-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-state-profile---d-b2908-al-contributions-descending-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-state-profile---d-b2908-al-contributions-descending-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 284
                      }
                    },
                    {
                      "workerIndex": 64,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25811,
                      "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 /app/tests/ui/entities.spec.ts:284:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 284
                        },
                        "snippet": "\u001b[0m \u001b[90m 282 |\u001b[39m\n \u001b[90m 283 |\u001b[39m   test(\u001b[32m'state profile candidates sorted by total contributions descending'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 284 |\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 285 |\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 286 |\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 287 |\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": 34,
                            "line": 284
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  282 |\n  283 |   test('state profile candidates sorted by total contributions descending', async ({ page }) => {\n> 284 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  285 |       if (!resp.url().includes('/api/graphql')) return false;\n  286 |       if (resp.request().method() !== 'POST') return false;\n  287 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:284:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 291
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/states/tx/\", waiting until \"load\"\u001b[22m\n\n\n  289 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  290 |\n> 291 |     await page.goto(TEXAS_PATH);\n      |                ^\n  292 |     const response = await responsePromise;\n  293 |\n  294 |     const json = await response.json();\n    at /app/tests/ui/entities.spec.ts:291:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:10:21.162Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-state-profile---d-b2908-al-contributions-descending-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 284
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-631c42730cdb715cf791",
              "file": "tests/ui/entities.spec.ts",
              "line": 283,
              "column": 7
            }
          ]
        },
        {
          "title": "district profile - dynamic candidates",
          "file": "tests/ui/entities.spec.ts",
          "line": 311,
          "column": 6,
          "specs": [
            {
              "title": "district profile loads candidates filtered to district",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 65,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25082,
                      "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 /app/tests/ui/entities.spec.ts:315:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 315
                        },
                        "snippet": "\u001b[0m \u001b[90m 313 |\u001b[39m\n \u001b[90m 314 |\u001b[39m   test(\u001b[32m'district profile loads candidates filtered to district'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 315 |\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 316 |\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 317 |\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 318 |\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": 34,
                            "line": 315
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  313 |\n  314 |   test('district profile loads candidates filtered to district', async ({ page }) => {\n> 315 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  316 |       if (!resp.url().includes('/api/graphql')) return false;\n  317 |       if (resp.request().method() !== 'POST') return false;\n  318 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:315:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 322
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/districts/tx-10/\", waiting until \"load\"\u001b[22m\n\n\n  320 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  321 |\n> 322 |     await page.goto(DISTRICT_PATH);\n      |                ^\n  323 |     const response = await responsePromise;\n  324 |\n  325 |     const requestBody = JSON.parse(response.request().postData() || '{}');\n    at /app/tests/ui/entities.spec.ts:322:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:10:47.613Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-district-profile--c0956-idates-filtered-to-district-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 315
                      }
                    },
                    {
                      "workerIndex": 67,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25275,
                      "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 /app/tests/ui/entities.spec.ts:315:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 315
                        },
                        "snippet": "\u001b[0m \u001b[90m 313 |\u001b[39m\n \u001b[90m 314 |\u001b[39m   test(\u001b[32m'district profile loads candidates filtered to district'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 315 |\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 316 |\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 317 |\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 318 |\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": 34,
                            "line": 315
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  313 |\n  314 |   test('district profile loads candidates filtered to district', async ({ page }) => {\n> 315 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  316 |       if (!resp.url().includes('/api/graphql')) return false;\n  317 |       if (resp.request().method() !== 'POST') return false;\n  318 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:315:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 322
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/districts/tx-10/\", waiting until \"load\"\u001b[22m\n\n\n  320 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  321 |\n> 322 |     await page.goto(DISTRICT_PATH);\n      |                ^\n  323 |     const response = await responsePromise;\n  324 |\n  325 |     const requestBody = JSON.parse(response.request().postData() || '{}');\n    at /app/tests/ui/entities.spec.ts:322:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:11:13.335Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-district-profile--c0956-idates-filtered-to-district-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-district-profile--c0956-idates-filtered-to-district-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-district-profile--c0956-idates-filtered-to-district-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 315
                      }
                    },
                    {
                      "workerIndex": 68,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25075,
                      "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 /app/tests/ui/entities.spec.ts:315:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 315
                        },
                        "snippet": "\u001b[0m \u001b[90m 313 |\u001b[39m\n \u001b[90m 314 |\u001b[39m   test(\u001b[32m'district profile loads candidates filtered to district'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 315 |\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 316 |\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 317 |\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 318 |\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": 34,
                            "line": 315
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  313 |\n  314 |   test('district profile loads candidates filtered to district', async ({ page }) => {\n> 315 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  316 |       if (!resp.url().includes('/api/graphql')) return false;\n  317 |       if (resp.request().method() !== 'POST') return false;\n  318 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:315:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 322
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/districts/tx-10/\", waiting until \"load\"\u001b[22m\n\n\n  320 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  321 |\n> 322 |     await page.goto(DISTRICT_PATH);\n      |                ^\n  323 |     const response = await responsePromise;\n  324 |\n  325 |     const requestBody = JSON.parse(response.request().postData() || '{}');\n    at /app/tests/ui/entities.spec.ts:322:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:11:39.275Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-district-profile--c0956-idates-filtered-to-district-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 315
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-775cbc1b1c48b28b5324",
              "file": "tests/ui/entities.spec.ts",
              "line": 314,
              "column": 7
            },
            {
              "title": "district profile candidates sorted by total contributions descending",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 69,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25075,
                      "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 /app/tests/ui/entities.spec.ts:337:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 337
                        },
                        "snippet": "\u001b[0m \u001b[90m 335 |\u001b[39m\n \u001b[90m 336 |\u001b[39m   test(\u001b[32m'district profile candidates sorted by total contributions descending'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 337 |\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 338 |\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 339 |\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 340 |\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": 34,
                            "line": 337
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  335 |\n  336 |   test('district profile candidates sorted by total contributions descending', async ({ page }) => {\n> 337 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  338 |       if (!resp.url().includes('/api/graphql')) return false;\n  339 |       if (resp.request().method() !== 'POST') return false;\n  340 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:337:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 344
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/districts/tx-10/\", waiting until \"load\"\u001b[22m\n\n\n  342 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  343 |\n> 344 |     await page.goto(DISTRICT_PATH);\n      |                ^\n  345 |     const response = await responsePromise;\n  346 |\n  347 |     const json = await response.json();\n    at /app/tests/ui/entities.spec.ts:344:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:12:04.988Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-district-profile--1321e-al-contributions-descending-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 337
                      }
                    },
                    {
                      "workerIndex": 70,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25360,
                      "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 /app/tests/ui/entities.spec.ts:337:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 337
                        },
                        "snippet": "\u001b[0m \u001b[90m 335 |\u001b[39m\n \u001b[90m 336 |\u001b[39m   test(\u001b[32m'district profile candidates sorted by total contributions descending'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 337 |\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 338 |\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 339 |\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 340 |\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": 34,
                            "line": 337
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  335 |\n  336 |   test('district profile candidates sorted by total contributions descending', async ({ page }) => {\n> 337 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  338 |       if (!resp.url().includes('/api/graphql')) return false;\n  339 |       if (resp.request().method() !== 'POST') return false;\n  340 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:337:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 344
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/districts/tx-10/\", waiting until \"load\"\u001b[22m\n\n\n  342 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  343 |\n> 344 |     await page.goto(DISTRICT_PATH);\n      |                ^\n  345 |     const response = await responsePromise;\n  346 |\n  347 |     const json = await response.json();\n    at /app/tests/ui/entities.spec.ts:344:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:12:30.966Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-district-profile--1321e-al-contributions-descending-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-district-profile--1321e-al-contributions-descending-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-district-profile--1321e-al-contributions-descending-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 337
                      }
                    },
                    {
                      "workerIndex": 71,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25078,
                      "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 /app/tests/ui/entities.spec.ts:337:34",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 34,
                          "line": 337
                        },
                        "snippet": "\u001b[0m \u001b[90m 335 |\u001b[39m\n \u001b[90m 336 |\u001b[39m   test(\u001b[32m'district profile candidates sorted by total contributions descending'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 337 |\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 338 |\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 339 |\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 340 |\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": 34,
                            "line": 337
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  335 |\n  336 |   test('district profile candidates sorted by total contributions descending', async ({ page }) => {\n> 337 |     const responsePromise = page.waitForResponse(resp => {\n      |                                  ^\n  338 |       if (!resp.url().includes('/api/graphql')) return false;\n  339 |       if (resp.request().method() !== 'POST') return false;\n  340 |       const body = resp.request().postData() || '';\n    at /app/tests/ui/entities.spec.ts:337:34"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 344
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/districts/tx-10/\", waiting until \"load\"\u001b[22m\n\n\n  342 |     }, { timeout: DATA_LOAD_TIMEOUT });\n  343 |\n> 344 |     await page.goto(DISTRICT_PATH);\n      |                ^\n  345 |     const response = await responsePromise;\n  346 |\n  347 |     const json = await response.json();\n    at /app/tests/ui/entities.spec.ts:344:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:12:56.958Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-district-profile--1321e-al-contributions-descending-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 34,
                        "line": 337
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-f00bfce3824e336086aa",
              "file": "tests/ui/entities.spec.ts",
              "line": 336,
              "column": 7
            }
          ]
        },
        {
          "title": "entity browse sort order - quantitative fields",
          "file": "tests/ui/entities.spec.ts",
          "line": 379,
          "column": 6,
          "specs": [
            {
              "title": "candidates sorted by total contributions descending",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 73,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25074,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:382:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:382:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/candidates/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:382:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:13:22.678Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-5c84b-al-contributions-descending-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    },
                    {
                      "workerIndex": 75,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25576,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:382:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:382:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/candidates/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:382:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:13:48.409Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-5c84b-al-contributions-descending-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-5c84b-al-contributions-descending-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-5c84b-al-contributions-descending-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    },
                    {
                      "workerIndex": 77,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25078,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:382:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:382:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/candidates/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:382:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:14:14.619Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-5c84b-al-contributions-descending-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-e799dea180dde7b078da",
              "file": "tests/ui/entities.spec.ts",
              "line": 381,
              "column": 7
            },
            {
              "title": "committees sorted by total receipts descending",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 79,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25066,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:390:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:390:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/committees/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:390:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:14:40.325Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-e4166-y-total-receipts-descending-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    },
                    {
                      "workerIndex": 80,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25537,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:390:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:390:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/committees/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:390:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:15:06.032Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-e4166-y-total-receipts-descending-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-e4166-y-total-receipts-descending-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-e4166-y-total-receipts-descending-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    },
                    {
                      "workerIndex": 82,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25070,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:390:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:390:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/committees/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:390:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:15:32.238Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-e4166-y-total-receipts-descending-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-717048594564fd91aeee",
              "file": "tests/ui/entities.spec.ts",
              "line": 389,
              "column": 7
            },
            {
              "title": "vendors sorted by total received descending",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 84,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25075,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:398:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:398:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:398:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:15:58.749Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-fb9d9-y-total-received-descending-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    },
                    {
                      "workerIndex": 85,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25266,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:398:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:398:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:398:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:16:24.501Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-fb9d9-y-total-received-descending-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-fb9d9-y-total-received-descending-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-fb9d9-y-total-received-descending-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    },
                    {
                      "workerIndex": 86,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25077,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:398:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:398:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:398:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:16:50.465Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-fb9d9-y-total-received-descending-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-3102f0e0d367177cc559",
              "file": "tests/ui/entities.spec.ts",
              "line": 397,
              "column": 7
            },
            {
              "title": "individuals sorted by total contributions descending",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 87,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25267,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:407:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:407:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/individuals/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:407:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:17:16.184Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/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": 366
                      }
                    },
                    {
                      "workerIndex": 88,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25316,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:407:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:407:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/individuals/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:407:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:17:42.122Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-9b1cc-al-contributions-descending-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-9b1cc-al-contributions-descending-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/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": 366
                      }
                    },
                    {
                      "workerIndex": 89,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25070,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:407:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:407:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/individuals/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:407:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:18:08.293Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/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": 366
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-4172cf90fdc39f1e8b04",
              "file": "tests/ui/entities.spec.ts",
              "line": 405,
              "column": 7
            },
            {
              "title": "employers sorted by total employee contributions descending",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 90,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25081,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:417:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:417:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:417:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:18:34.079Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-2868b-ee-contributions-descending-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    },
                    {
                      "workerIndex": 91,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25270,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:417:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:417:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:417:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:18:59.832Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-2868b-ee-contributions-descending-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-2868b-ee-contributions-descending-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-2868b-ee-contributions-descending-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    },
                    {
                      "workerIndex": 92,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 25069,
                      "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:366:32)\n    at /app/tests/ui/entities.spec.ts:417:26",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 32,
                          "line": 366
                        },
                        "snippet": "\u001b[0m \u001b[90m 364 |\u001b[39m \u001b[90m// Helper to intercept browseEntities GraphQL response and extract score values\u001b[39m\n \u001b[90m 365 |\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 366 |\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 367 |\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 368 |\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 369 |\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": 366
                          },
                          "message": "TimeoutError: page.waitForResponse: Timeout 15000ms exceeded while waiting for event \"response\"\n\n  364 | // Helper to intercept browseEntities GraphQL response and extract score values\n  365 | async function getBrowseScores(page: import('@playwright/test').Page, url: string): Promise<number[]> {\n> 366 |   const responsePromise = page.waitForResponse(resp => {\n      |                                ^\n  367 |     if (!resp.url().includes('/api/graphql')) return false;\n  368 |     if (resp.request().method() !== 'POST') return false;\n  369 |     const body = resp.request().postData() || '';\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:366:32)\n    at /app/tests/ui/entities.spec.ts:417:26"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 14,
                            "line": 372
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n\n  370 |     return body.includes('browseEntities');\n  371 |   }, { timeout: DATA_LOAD_TIMEOUT });\n> 372 |   await page.goto(url);\n      |              ^\n  373 |   const response = await responsePromise;\n  374 |   const json = await response.json();\n  375 |   const results = json.data?.browseEntities?.results || [];\n    at getBrowseScores (/app/tests/ui/entities.spec.ts:372:14)\n    at /app/tests/ui/entities.spec.ts:417:26"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:19:25.766Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-entity-browse-sor-2868b-ee-contributions-descending-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 32,
                        "line": 366
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-2ca76e131a1ccafc504c",
              "file": "tests/ui/entities.spec.ts",
              "line": 416,
              "column": 7
            }
          ]
        },
        {
          "title": "us.elect.info entity sections - additional index + detail",
          "file": "tests/ui/entities.spec.ts",
          "line": 425,
          "column": 6,
          "specs": [
            {
              "title": "employers section - index and random pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 93,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 137,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:428:38",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 38,
                          "line": 428
                        },
                        "snippet": "\u001b[0m \u001b[90m 426 |\u001b[39m\n \u001b[90m 427 |\u001b[39m   test(\u001b[32m'employers section - index and random pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 428 |\u001b[39m     \u001b[36mconst\u001b[39m indexResponse \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/employers/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 429 |\u001b[39m     expect(indexResponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/employers/ should answer 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 430 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/Employers/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 431 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 38,
                            "line": 428
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n\n  426 |\n  427 |   test('employers section - index and random pages', async ({ page }) => {\n> 428 |     const indexResponse = await page.goto('/employers/');\n      |                                      ^\n  429 |     expect(indexResponse?.status(), '/employers/ should answer 200').toBe(200);\n  430 |     await expect(page.locator('h1')).toContainText(/Employers/i);\n  431 |\n    at /app/tests/ui/entities.spec.ts:428:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:19:51.525Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-095ba-on---index-and-random-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-095ba-on---index-and-random-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 38,
                        "line": 428
                      }
                    },
                    {
                      "workerIndex": 94,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 702,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:428:38",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 38,
                          "line": 428
                        },
                        "snippet": "\u001b[0m \u001b[90m 426 |\u001b[39m\n \u001b[90m 427 |\u001b[39m   test(\u001b[32m'employers section - index and random pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 428 |\u001b[39m     \u001b[36mconst\u001b[39m indexResponse \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/employers/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 429 |\u001b[39m     expect(indexResponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/employers/ should answer 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 430 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/Employers/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 431 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 38,
                            "line": 428
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n\n  426 |\n  427 |   test('employers section - index and random pages', async ({ page }) => {\n> 428 |     const indexResponse = await page.goto('/employers/');\n      |                                      ^\n  429 |     expect(indexResponse?.status(), '/employers/ should answer 200').toBe(200);\n  430 |     await expect(page.locator('h1')).toContainText(/Employers/i);\n  431 |\n    at /app/tests/ui/entities.spec.ts:428:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:19:52.269Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-095ba-on---index-and-random-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-095ba-on---index-and-random-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-095ba-on---index-and-random-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-095ba-on---index-and-random-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 38,
                        "line": 428
                      }
                    },
                    {
                      "workerIndex": 95,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 130,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:428:38",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 38,
                          "line": 428
                        },
                        "snippet": "\u001b[0m \u001b[90m 426 |\u001b[39m\n \u001b[90m 427 |\u001b[39m   test(\u001b[32m'employers section - index and random pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 428 |\u001b[39m     \u001b[36mconst\u001b[39m indexResponse \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/employers/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 429 |\u001b[39m     expect(indexResponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/employers/ should answer 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 430 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/Employers/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 431 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 38,
                            "line": 428
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n\n  426 |\n  427 |   test('employers section - index and random pages', async ({ page }) => {\n> 428 |     const indexResponse = await page.goto('/employers/');\n      |                                      ^\n  429 |     expect(indexResponse?.status(), '/employers/ should answer 200').toBe(200);\n  430 |     await expect(page.locator('h1')).toContainText(/Employers/i);\n  431 |\n    at /app/tests/ui/entities.spec.ts:428:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:19:53.632Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-095ba-on---index-and-random-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-095ba-on---index-and-random-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 38,
                        "line": 428
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-b6b14a576f48b71af5e5",
              "file": "tests/ui/entities.spec.ts",
              "line": 427,
              "column": 7
            },
            {
              "title": "vendors section - index and random pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 96,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 132,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/vendors/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/vendors/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:448:38",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 38,
                          "line": 448
                        },
                        "snippet": "\u001b[0m \u001b[90m 446 |\u001b[39m\n \u001b[90m 447 |\u001b[39m   test(\u001b[32m'vendors section - index and random pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 448 |\u001b[39m     \u001b[36mconst\u001b[39m indexResponse \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/vendors/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 449 |\u001b[39m     expect(indexResponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/vendors/ should answer 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 450 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/Vendors/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 451 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 38,
                            "line": 448
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/vendors/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n\n  446 |\n  447 |   test('vendors section - index and random pages', async ({ page }) => {\n> 448 |     const indexResponse = await page.goto('/vendors/');\n      |                                      ^\n  449 |     expect(indexResponse?.status(), '/vendors/ should answer 200').toBe(200);\n  450 |     await expect(page.locator('h1')).toContainText(/Vendors/i);\n  451 |\n    at /app/tests/ui/entities.spec.ts:448:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:19:54.378Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-29463-on---index-and-random-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-29463-on---index-and-random-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 38,
                        "line": 448
                      }
                    },
                    {
                      "workerIndex": 97,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 205,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/vendors/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/vendors/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:448:38",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 38,
                          "line": 448
                        },
                        "snippet": "\u001b[0m \u001b[90m 446 |\u001b[39m\n \u001b[90m 447 |\u001b[39m   test(\u001b[32m'vendors section - index and random pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 448 |\u001b[39m     \u001b[36mconst\u001b[39m indexResponse \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/vendors/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 449 |\u001b[39m     expect(indexResponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/vendors/ should answer 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 450 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/Vendors/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 451 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 38,
                            "line": 448
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/vendors/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n\n  446 |\n  447 |   test('vendors section - index and random pages', async ({ page }) => {\n> 448 |     const indexResponse = await page.goto('/vendors/');\n      |                                      ^\n  449 |     expect(indexResponse?.status(), '/vendors/ should answer 200').toBe(200);\n  450 |     await expect(page.locator('h1')).toContainText(/Vendors/i);\n  451 |\n    at /app/tests/ui/entities.spec.ts:448:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:19:55.137Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-29463-on---index-and-random-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-29463-on---index-and-random-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-29463-on---index-and-random-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-29463-on---index-and-random-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 38,
                        "line": 448
                      }
                    },
                    {
                      "workerIndex": 98,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 712,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/vendors/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/vendors/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:448:38",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 38,
                          "line": 448
                        },
                        "snippet": "\u001b[0m \u001b[90m 446 |\u001b[39m\n \u001b[90m 447 |\u001b[39m   test(\u001b[32m'vendors section - index and random pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 448 |\u001b[39m     \u001b[36mconst\u001b[39m indexResponse \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/vendors/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                                      \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 449 |\u001b[39m     expect(indexResponse\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m'/vendors/ should answer 200'\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 450 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'h1'\u001b[39m))\u001b[33m.\u001b[39mtoContainText(\u001b[35m/Vendors/i\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 451 |\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 38,
                            "line": 448
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/vendors/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n\n  446 |\n  447 |   test('vendors section - index and random pages', async ({ page }) => {\n> 448 |     const indexResponse = await page.goto('/vendors/');\n      |                                      ^\n  449 |     expect(indexResponse?.status(), '/vendors/ should answer 200').toBe(200);\n  450 |     await expect(page.locator('h1')).toContainText(/Vendors/i);\n  451 |\n    at /app/tests/ui/entities.spec.ts:448:38"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:19:55.994Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-29463-on---index-and-random-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-29463-on---index-and-random-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 38,
                        "line": 448
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-586eade1e031f2078f6b",
              "file": "tests/ui/entities.spec.ts",
              "line": 447,
              "column": 7
            },
            {
              "title": "counties section - index and random detail pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 99,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 159,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/counties/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/counties/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/counties/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/counties/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:468:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 468
                        },
                        "snippet": "\u001b[0m \u001b[90m 466 |\u001b[39m\n \u001b[90m 467 |\u001b[39m   test(\u001b[32m'counties section - index and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 468 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/counties/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 469 |\u001b[39m\n \u001b[90m 470 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 471 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 468
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/counties/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/counties/\", waiting until \"load\"\u001b[22m\n\n\n  466 |\n  467 |   test('counties section - index and random detail pages', async ({ page }) => {\n> 468 |     await page.goto('/counties/');\n      |                ^\n  469 |\n  470 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  471 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:468:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:19:57.353Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-a02d5-dex-and-random-detail-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-a02d5-dex-and-random-detail-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 468
                      }
                    },
                    {
                      "workerIndex": 100,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 221,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/counties/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/counties/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/counties/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/counties/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:468:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 468
                        },
                        "snippet": "\u001b[0m \u001b[90m 466 |\u001b[39m\n \u001b[90m 467 |\u001b[39m   test(\u001b[32m'counties section - index and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 468 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/counties/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 469 |\u001b[39m\n \u001b[90m 470 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 471 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 468
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/counties/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/counties/\", waiting until \"load\"\u001b[22m\n\n\n  466 |\n  467 |   test('counties section - index and random detail pages', async ({ page }) => {\n> 468 |     await page.goto('/counties/');\n      |                ^\n  469 |\n  470 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  471 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:468:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:19:58.293Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-a02d5-dex-and-random-detail-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-a02d5-dex-and-random-detail-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-a02d5-dex-and-random-detail-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-a02d5-dex-and-random-detail-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 468
                      }
                    },
                    {
                      "workerIndex": 101,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 134,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/counties/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/counties/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/counties/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/counties/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:468:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 468
                        },
                        "snippet": "\u001b[0m \u001b[90m 466 |\u001b[39m\n \u001b[90m 467 |\u001b[39m   test(\u001b[32m'counties section - index and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 468 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/counties/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 469 |\u001b[39m\n \u001b[90m 470 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 471 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 468
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/counties/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/counties/\", waiting until \"load\"\u001b[22m\n\n\n  466 |\n  467 |   test('counties section - index and random detail pages', async ({ page }) => {\n> 468 |     await page.goto('/counties/');\n      |                ^\n  469 |\n  470 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  471 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:468:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:19:59.195Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-a02d5-dex-and-random-detail-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-a02d5-dex-and-random-detail-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 468
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-6889bbe45fe800e5d9be",
              "file": "tests/ui/entities.spec.ts",
              "line": 467,
              "column": 7
            },
            {
              "title": "places section - index and random detail pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 102,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 161,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/places/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/places/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/places/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/places/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:496:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 496
                        },
                        "snippet": "\u001b[0m \u001b[90m 494 |\u001b[39m\n \u001b[90m 495 |\u001b[39m   test(\u001b[32m'places section - index and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 496 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/places/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 497 |\u001b[39m\n \u001b[90m 498 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 499 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 496
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/places/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/places/\", waiting until \"load\"\u001b[22m\n\n\n  494 |\n  495 |   test('places section - index and random detail pages', async ({ page }) => {\n> 496 |     await page.goto('/places/');\n      |                ^\n  497 |\n  498 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  499 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:496:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:19:59.973Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-45389-dex-and-random-detail-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-45389-dex-and-random-detail-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 496
                      }
                    },
                    {
                      "workerIndex": 103,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 524,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/places/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/places/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/places/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/places/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:496:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 496
                        },
                        "snippet": "\u001b[0m \u001b[90m 494 |\u001b[39m\n \u001b[90m 495 |\u001b[39m   test(\u001b[32m'places section - index and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 496 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/places/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 497 |\u001b[39m\n \u001b[90m 498 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 499 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 496
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/places/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/places/\", waiting until \"load\"\u001b[22m\n\n\n  494 |\n  495 |   test('places section - index and random detail pages', async ({ page }) => {\n> 496 |     await page.goto('/places/');\n      |                ^\n  497 |\n  498 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  499 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:496:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:20:00.748Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-45389-dex-and-random-detail-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-45389-dex-and-random-detail-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-45389-dex-and-random-detail-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-45389-dex-and-random-detail-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 496
                      }
                    },
                    {
                      "workerIndex": 104,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 135,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/places/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/places/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/places/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/places/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:496:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 496
                        },
                        "snippet": "\u001b[0m \u001b[90m 494 |\u001b[39m\n \u001b[90m 495 |\u001b[39m   test(\u001b[32m'places section - index and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 496 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/places/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 497 |\u001b[39m\n \u001b[90m 498 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 499 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 496
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/places/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/places/\", waiting until \"load\"\u001b[22m\n\n\n  494 |\n  495 |   test('places section - index and random detail pages', async ({ page }) => {\n> 496 |     await page.goto('/places/');\n      |                ^\n  497 |\n  498 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  499 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:496:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:20:01.893Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-45389-dex-and-random-detail-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-45389-dex-and-random-detail-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 496
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-c9580fbe75551276dc4a",
              "file": "tests/ui/entities.spec.ts",
              "line": 495,
              "column": 7
            },
            {
              "title": "postalcodes section - index and random detail pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 105,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 127,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/postalcodes/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/postalcodes/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/postalcodes/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/postalcodes/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:524:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 524
                        },
                        "snippet": "\u001b[0m \u001b[90m 522 |\u001b[39m\n \u001b[90m 523 |\u001b[39m   test(\u001b[32m'postalcodes section - index and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 524 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/postalcodes/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 525 |\u001b[39m\n \u001b[90m 526 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 527 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 524
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/postalcodes/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/postalcodes/\", waiting until \"load\"\u001b[22m\n\n\n  522 |\n  523 |   test('postalcodes section - index and random detail pages', async ({ page }) => {\n> 524 |     await page.goto('/postalcodes/');\n      |                ^\n  525 |\n  526 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  527 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:524:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:20:02.651Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-7c577-dex-and-random-detail-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-7c577-dex-and-random-detail-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 524
                      }
                    },
                    {
                      "workerIndex": 106,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 381,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/postalcodes/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/postalcodes/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/postalcodes/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/postalcodes/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:524:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 524
                        },
                        "snippet": "\u001b[0m \u001b[90m 522 |\u001b[39m\n \u001b[90m 523 |\u001b[39m   test(\u001b[32m'postalcodes section - index and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 524 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/postalcodes/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 525 |\u001b[39m\n \u001b[90m 526 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 527 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 524
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/postalcodes/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/postalcodes/\", waiting until \"load\"\u001b[22m\n\n\n  522 |\n  523 |   test('postalcodes section - index and random detail pages', async ({ page }) => {\n> 524 |     await page.goto('/postalcodes/');\n      |                ^\n  525 |\n  526 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  527 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:524:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:20:03.386Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-7c577-dex-and-random-detail-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-7c577-dex-and-random-detail-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-7c577-dex-and-random-detail-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-7c577-dex-and-random-detail-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 524
                      }
                    },
                    {
                      "workerIndex": 107,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 132,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/postalcodes/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/postalcodes/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/postalcodes/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/postalcodes/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:524:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 524
                        },
                        "snippet": "\u001b[0m \u001b[90m 522 |\u001b[39m\n \u001b[90m 523 |\u001b[39m   test(\u001b[32m'postalcodes section - index and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 524 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/postalcodes/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 525 |\u001b[39m\n \u001b[90m 526 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 527 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 524
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/postalcodes/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/postalcodes/\", waiting until \"load\"\u001b[22m\n\n\n  522 |\n  523 |   test('postalcodes section - index and random detail pages', async ({ page }) => {\n> 524 |     await page.goto('/postalcodes/');\n      |                ^\n  525 |\n  526 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  527 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:524:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:20:04.417Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-7c577-dex-and-random-detail-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-7c577-dex-and-random-detail-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 524
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-7378845a8b20f0ca8dc7",
              "file": "tests/ui/entities.spec.ts",
              "line": 523,
              "column": 7
            },
            {
              "title": "precincts section - map view and state filter",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 108,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 157,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/precincts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/precincts/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/precincts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/precincts/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:552:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 552
                        },
                        "snippet": "\u001b[0m \u001b[90m 550 |\u001b[39m\n \u001b[90m 551 |\u001b[39m   test(\u001b[32m'precincts section - map view and state filter'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 552 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/precincts/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 553 |\u001b[39m\n \u001b[90m 554 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 555 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 552
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/precincts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/precincts/\", waiting until \"load\"\u001b[22m\n\n\n  550 |\n  551 |   test('precincts section - map view and state filter', async ({ page }) => {\n> 552 |     await page.goto('/precincts/');\n      |                ^\n  553 |\n  554 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  555 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:552:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:20:05.174Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-94b96---map-view-and-state-filter-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-94b96---map-view-and-state-filter-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 552
                      }
                    },
                    {
                      "workerIndex": 109,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 405,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/precincts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/precincts/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/precincts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/precincts/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:552:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 552
                        },
                        "snippet": "\u001b[0m \u001b[90m 550 |\u001b[39m\n \u001b[90m 551 |\u001b[39m   test(\u001b[32m'precincts section - map view and state filter'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 552 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/precincts/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 553 |\u001b[39m\n \u001b[90m 554 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 555 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 552
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/precincts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/precincts/\", waiting until \"load\"\u001b[22m\n\n\n  550 |\n  551 |   test('precincts section - map view and state filter', async ({ page }) => {\n> 552 |     await page.goto('/precincts/');\n      |                ^\n  553 |\n  554 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  555 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:552:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:20:05.944Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-94b96---map-view-and-state-filter-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-94b96---map-view-and-state-filter-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-94b96---map-view-and-state-filter-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-94b96---map-view-and-state-filter-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 552
                      }
                    },
                    {
                      "workerIndex": 110,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 176,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/precincts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/precincts/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/precincts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/precincts/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:552:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 552
                        },
                        "snippet": "\u001b[0m \u001b[90m 550 |\u001b[39m\n \u001b[90m 551 |\u001b[39m   test(\u001b[32m'precincts section - map view and state filter'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 552 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/precincts/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 553 |\u001b[39m\n \u001b[90m 554 |\u001b[39m     \u001b[90m// Map view is default — verify Leaflet map renders with GeoJSON state shapes\u001b[39m\n \u001b[90m 555 |\u001b[39m     \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(\u001b[32m'#map.leaflet-container'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[33mDATA_LOAD_TIMEOUT\u001b[39m })\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 552
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/precincts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/precincts/\", waiting until \"load\"\u001b[22m\n\n\n  550 |\n  551 |   test('precincts section - map view and state filter', async ({ page }) => {\n> 552 |     await page.goto('/precincts/');\n      |                ^\n  553 |\n  554 |     // Map view is default — verify Leaflet map renders with GeoJSON state shapes\n  555 |     await expect(page.locator('#map.leaflet-container')).toBeVisible({ timeout: DATA_LOAD_TIMEOUT });\n    at /app/tests/ui/entities.spec.ts:552:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:20:07.039Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-94b96---map-view-and-state-filter-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-94b96---map-view-and-state-filter-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 552
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-b994931c7f61cea69263",
              "file": "tests/ui/entities.spec.ts",
              "line": 551,
              "column": 7
            },
            {
              "title": "tracts section - state/county filter and random detail pages",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 111,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 151,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/tracts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/tracts/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/tracts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/tracts/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:606:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 606
                        },
                        "snippet": "\u001b[0m \u001b[90m 604 |\u001b[39m   test(\u001b[32m'tracts section - state/county filter and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 605 |\u001b[39m     test\u001b[33m.\u001b[39msetTimeout(\u001b[35m120000\u001b[39m)\u001b[33m;\u001b[39m \u001b[90m// Tracts require sequential state→county→tract interactions with GraphQL\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 606 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/tracts/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 607 |\u001b[39m\n \u001b[90m 608 |\u001b[39m     \u001b[90m// Switch to List view — tract-index.js loads dynamically on list view activation\u001b[39m\n \u001b[90m 609 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.toggle-btn[data-view=\"list\"]'\u001b[39m)\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 606
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/tracts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/tracts/\", waiting until \"load\"\u001b[22m\n\n\n  604 |   test('tracts section - state/county filter and random detail pages', async ({ page }) => {\n  605 |     test.setTimeout(120000); // Tracts require sequential state→county→tract interactions with GraphQL\n> 606 |     await page.goto('/tracts/');\n      |                ^\n  607 |\n  608 |     // Switch to List view — tract-index.js loads dynamically on list view activation\n  609 |     await page.locator('.toggle-btn[data-view=\"list\"]').click();\n    at /app/tests/ui/entities.spec.ts:606:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:20:07.861Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-bf75c-ter-and-random-detail-pages-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-bf75c-ter-and-random-detail-pages-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 606
                      }
                    },
                    {
                      "workerIndex": 112,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 200,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/tracts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/tracts/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/tracts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/tracts/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:606:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 606
                        },
                        "snippet": "\u001b[0m \u001b[90m 604 |\u001b[39m   test(\u001b[32m'tracts section - state/county filter and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 605 |\u001b[39m     test\u001b[33m.\u001b[39msetTimeout(\u001b[35m120000\u001b[39m)\u001b[33m;\u001b[39m \u001b[90m// Tracts require sequential state→county→tract interactions with GraphQL\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 606 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/tracts/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 607 |\u001b[39m\n \u001b[90m 608 |\u001b[39m     \u001b[90m// Switch to List view — tract-index.js loads dynamically on list view activation\u001b[39m\n \u001b[90m 609 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.toggle-btn[data-view=\"list\"]'\u001b[39m)\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 606
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/tracts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/tracts/\", waiting until \"load\"\u001b[22m\n\n\n  604 |   test('tracts section - state/county filter and random detail pages', async ({ page }) => {\n  605 |     test.setTimeout(120000); // Tracts require sequential state→county→tract interactions with GraphQL\n> 606 |     await page.goto('/tracts/');\n      |                ^\n  607 |\n  608 |     // Switch to List view — tract-index.js loads dynamically on list view activation\n  609 |     await page.locator('.toggle-btn[data-view=\"list\"]').click();\n    at /app/tests/ui/entities.spec.ts:606:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:20:08.621Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-bf75c-ter-and-random-detail-pages-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-bf75c-ter-and-random-detail-pages-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-bf75c-ter-and-random-detail-pages-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-bf75c-ter-and-random-detail-pages-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 606
                      }
                    },
                    {
                      "workerIndex": 113,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 143,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/tracts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/tracts/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/tracts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/tracts/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/entities.spec.ts:606:16",
                        "location": {
                          "file": "/app/tests/ui/entities.spec.ts",
                          "column": 16,
                          "line": 606
                        },
                        "snippet": "\u001b[0m \u001b[90m 604 |\u001b[39m   test(\u001b[32m'tracts section - state/county filter and random detail pages'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\n \u001b[90m 605 |\u001b[39m     test\u001b[33m.\u001b[39msetTimeout(\u001b[35m120000\u001b[39m)\u001b[33m;\u001b[39m \u001b[90m// Tracts require sequential state→county→tract interactions with GraphQL\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 606 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[32m'/tracts/'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m     |\u001b[39m                \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 607 |\u001b[39m\n \u001b[90m 608 |\u001b[39m     \u001b[90m// Switch to List view — tract-index.js loads dynamically on list view activation\u001b[39m\n \u001b[90m 609 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.toggle-btn[data-view=\"list\"]'\u001b[39m)\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "column": 16,
                            "line": 606
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/tracts/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/tracts/\", waiting until \"load\"\u001b[22m\n\n\n  604 |   test('tracts section - state/county filter and random detail pages', async ({ page }) => {\n  605 |     test.setTimeout(120000); // Tracts require sequential state→county→tract interactions with GraphQL\n> 606 |     await page.goto('/tracts/');\n      |                ^\n  607 |\n  608 |     // Switch to List view — tract-index.js loads dynamically on list view activation\n  609 |     await page.locator('.toggle-btn[data-view=\"list\"]').click();\n    at /app/tests/ui/entities.spec.ts:606:16"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:20:09.469Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-bf75c-ter-and-random-detail-pages-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-bf75c-ter-and-random-detail-pages-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "column": 16,
                        "line": 606
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "e590b0e25242679a26f1-073b2eb60264357a1ca9",
              "file": "tests/ui/entities.spec.ts",
              "line": 604,
              "column": 7
            }
          ]
        },
        {
          "title": "us.elect.info entity sections - individuals (premium)",
          "file": "tests/ui/entities.spec.ts",
          "line": 657,
          "column": 6,
          "specs": [
            {
              "title": "individuals section - index and random pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Requires PLAYWRIGHT_AUTH_USER/PLAYWRIGHT_AUTH_PASS",
                      "location": {
                        "file": "/app/tests/ui/entities.spec.ts",
                        "line": 666,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 114,
                      "parallelIndex": 0,
                      "status": "skipped",
                      "duration": 99,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:20:10.218Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Requires PLAYWRIGHT_AUTH_USER/PLAYWRIGHT_AUTH_PASS",
                          "location": {
                            "file": "/app/tests/ui/entities.spec.ts",
                            "line": 666,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entities-us-elect-info-ent-7f2e9-on---index-and-random-pages-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "e590b0e25242679a26f1-fa85143bab060214a738",
              "file": "tests/ui/entities.spec.ts",
              "line": 665,
              "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": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host has no structured filters yet",
                      "location": {
                        "file": "/app/tests/ui/entity-filters.spec.ts",
                        "line": 22,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 5,
                      "parallelIndex": 5,
                      "status": "skipped",
                      "duration": 29,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.952Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host has no structured filters yet",
                          "location": {
                            "file": "/app/tests/ui/entity-filters.spec.ts",
                            "line": 22,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "589b4d2d59414df6d16a-86f7e52d8ac4c2add6d3",
              "file": "tests/ui/entity-filters.spec.ts",
              "line": 29,
              "column": 7
            },
            {
              "title": "text filters: employer and ZIP prefix",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host has no structured filters yet",
                      "location": {
                        "file": "/app/tests/ui/entity-filters.spec.ts",
                        "line": 22,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 5,
                      "parallelIndex": 5,
                      "status": "skipped",
                      "duration": 19,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.035Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host has no structured filters yet",
                          "location": {
                            "file": "/app/tests/ui/entity-filters.spec.ts",
                            "line": 22,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": [
                    {
                      "type": "skip",
                      "description": "the API behind this host has no structured filters yet",
                      "location": {
                        "file": "/app/tests/ui/entity-filters.spec.ts",
                        "line": 22,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 5,
                      "parallelIndex": 5,
                      "status": "skipped",
                      "duration": 17,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.072Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host has no structured filters yet",
                          "location": {
                            "file": "/app/tests/ui/entity-filters.spec.ts",
                            "line": 22,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "589b4d2d59414df6d16a-2f26c7bcfc0fe5f858da",
              "file": "tests/ui/entity-filters.spec.ts",
              "line": 58,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/entity-graph.spec.ts",
      "file": "tests/ui/entity-graph.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "entity-graph script injection",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 21,
          "column": 6,
          "specs": [
            {
              "title": "injected once on /committees/a75a9110-f1db-a945-39a8-7503ed3c04da/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 52,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.944Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-29e66cb8f40124191f24",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 23,
              "column": 9
            },
            {
              "title": "injected once on /candidates/a8897257-430c-2bf3-4498-349021b09ca3/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 29,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.049Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-8caee27d666b889f629d",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 23,
              "column": 9
            },
            {
              "title": "not injected on /states/032f8d61-f554-f435-2a6d-50b3c8cc01d7/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 20,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.102Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-b079643ce2eb264e4473",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 31,
              "column": 9
            },
            {
              "title": "not injected on /elections/2024/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 107,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.146Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-a1eb6278fed6d4b5614b",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 31,
              "column": 9
            },
            {
              "title": "not injected on /offices/president/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 37,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.265Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-b3bac75bfbf090c5eca2",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 31,
              "column": 9
            }
          ]
        },
        {
          "title": "entityGraph API",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 39,
          "column": 6,
          "specs": [
            {
              "title": "C00010603: neighbours without individuals, money edges with amounts",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 27,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.324Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-b3fdec8c25bff91f5112",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 41,
              "column": 9
            },
            {
              "title": "P00009423: neighbours without individuals, money edges with amounts",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 19,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.371Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-dd19f11790f289a6f255",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 41,
              "column": 9
            }
          ]
        },
        {
          "title": "entity-graph pop-over",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 62,
          "column": 6,
          "specs": [
            {
              "title": "opens and draws on /committees/a75a9110-f1db-a945-39a8-7503ed3c04da/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 993,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.407Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entity-graph-entity-graph--d0dba-1db-a945-39a8-7503ed3c04da--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-759bfd2643a325762edb",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 64,
              "column": 9
            },
            {
              "title": "opens and draws on /candidates/a8897257-430c-2bf3-4498-349021b09ca3/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 6,
                      "status": "passed",
                      "duration": 678,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.475Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/entity-graph-entity-graph--c0375-30c-2bf3-4498-349021b09ca3--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-d147fc999d701bc54cf5",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 64,
              "column": 9
            }
          ]
        }
      ]
    },
    {
      "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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 219,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.956Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 136,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.511Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 170,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.667Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 468,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.853Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 143,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.342Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 179,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.500Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 147,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.692Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/layout-landing-page-layout-b60e0--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 127,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.851Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 130,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.989Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 424,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:44.131Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 385,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:44.566Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 372,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:44.964Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 410,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:45.346Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 425,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:45.768Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 387,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.205Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/layout-landing-page-layout-blocks-loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 365,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.603Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 124,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.978Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 147,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.114Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 122,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.275Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 120,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.409Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 142,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.541Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 424,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.695Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 131,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:48.131Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 122,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:48.273Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 126,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:48.407Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/layout-entity-index-layout-37753--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 123,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:48.542Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 124,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:48.675Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 339,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:48.811Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 378,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:49.160Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 369,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:49.548Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 389,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:49.929Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 340,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:50.327Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 414,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:50.677Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/layout-entity-index-layout-3f3cc--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 118,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:51.101Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 7,
                      "parallelIndex": 7,
                      "status": "passed",
                      "duration": 167,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:51.229Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 493,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.041Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/leaf-details-leaf-collecti-c5a9d-ounded-contribution-profile-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "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": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 2997,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.786Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 83,
              "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": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 365,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:45.803Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 92,
              "column": 7
            },
            {
              "title": "block detail renders voter data and bounded geography links",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 317,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.182Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/leaf-details-leaf-collecti-50a84-and-bounded-geography-links-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-8e2fbaa51cd3bb771d1c",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 112,
              "column": 7
            },
            {
              "title": "block map links (/blocks/<geoid>/) resolve to the block by its derived id",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 307,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.511Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/leaf-details-leaf-collecti-3e05c-the-block-by-its-derived-id-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-e2fa35759bb0fb651ac4",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 120,
              "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": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 281,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.829Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 127,
              "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": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 270,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.124Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 136,
              "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": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 142,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.405Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 156,
              "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": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 186,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.560Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 206,
              "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": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 341,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.759Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 266,
              "column": 7
            },
            {
              "title": "individual Top Committees: one row per committee and a distinct-committee footer (sites#194)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 181,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:48.114Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/leaf-details-leaf-collecti-c9ccd-committee-footer-sites-194--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "d48770b0cc7e6c0061b9-e7d9a1f93425703003bf",
              "file": "tests/ui/leaf-details.spec.ts",
              "line": 334,
              "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": 8,
                      "parallelIndex": 8,
                      "status": "passed",
                      "duration": 296,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:48.308Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/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": 379,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/money-flow.spec.ts",
      "file": "tests/ui/money-flow.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "money-flow script injection",
          "file": "tests/ui/money-flow.spec.ts",
          "line": 25,
          "column": 6,
          "specs": [
            {
              "title": "injected once on /committees/a75a9110-f1db-a945-39a8-7503ed3c04da/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 63,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.060Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-ac19bd19a112bbc633b9",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 27,
              "column": 9
            },
            {
              "title": "injected once on /candidates/a8897257-430c-2bf3-4498-349021b09ca3/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 74,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.174Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-1e24093b4e753edfa81f",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 27,
              "column": 9
            },
            {
              "title": "not injected on /states/032f8d61-f554-f435-2a6d-50b3c8cc01d7/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 14,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.270Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-7a4f8e57d8a34b965055",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "not injected on /elections/2024/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 10,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.308Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-2dcd02a112846a1c74ab",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "not injected on /offices/president/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 15,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.338Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-a7c67ffeb658d5760d58",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "not injected on /districts/ak/00/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 25,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.376Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-70d1251eabbd50eef434",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 36,
              "column": 9
            }
          ]
        },
        {
          "title": "money-flow card toggle",
          "file": "tests/ui/money-flow.spec.ts",
          "line": 44,
          "column": 6,
          "specs": [
            {
              "title": "committee: each money card defaults to the Sankey",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 449,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.417Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/money-flow-money-flow-card-90793-card-defaults-to-the-Sankey-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-1379512e23819a3f13a3",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 45,
              "column": 7
            },
            {
              "title": "candidate: Top Contributors toggles between Sankey and table",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 390,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.937Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/money-flow-money-flow-card-05c02-es-between-Sankey-and-table-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-66eef433452cb5f4518f",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 59,
              "column": 7
            },
            {
              "title": "candidate: #ie-support card follows the independent-expenditure data",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 363,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.346Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/money-flow-money-flow-card-72da7-ndependent-expenditure-data-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-1839d1cd12dab3de3014",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 79,
              "column": 9
            },
            {
              "title": "committee: #ie-support card follows the independent-expenditure data",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 314,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.722Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/money-flow-money-flow-card-77078-ndependent-expenditure-data-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-c03ecaaa846d30d640c2",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 79,
              "column": 9
            },
            {
              "title": "candidate: #ie-oppose card follows the independent-expenditure data",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 292,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:44.051Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/money-flow-money-flow-card-b1fd1-ndependent-expenditure-data-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-cd8390d905a0c386907e",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 79,
              "column": 9
            },
            {
              "title": "committee: #ie-oppose card follows the independent-expenditure data",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 9,
                      "parallelIndex": 9,
                      "status": "passed",
                      "duration": 313,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:44.355Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/money-flow-money-flow-card-f1bb4-ndependent-expenditure-data-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-b82415fcc5b419d3939e",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 79,
              "column": 9
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/news-feed.spec.ts",
      "file": "tests/ui/news-feed.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "news feed (source: OPENSEARCH)",
          "file": "tests/ui/news-feed.spec.ts",
          "line": 38,
          "column": 6,
          "specs": [
            {
              "title": "the feed serves articles with resolved entities",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 310,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.012Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1af1026586bac743cce4-f13e5cf3d2f509b8f6ed",
              "file": "tests/ui/news-feed.spec.ts",
              "line": 39,
              "column": 7
            },
            {
              "title": "candidate chips carry an FEC party code, never a graph id",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 271,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.389Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1af1026586bac743cce4-a0d92ad6dfd4d6b3887d",
              "file": "tests/ui/news-feed.spec.ts",
              "line": 47,
              "column": 7
            },
            {
              "title": "party facet keys are FEC codes and the party filter matches",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 10,
                      "status": "passed",
                      "duration": 580,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.678Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1af1026586bac743cce4-ad8d68d0c5df3f8fda27",
              "file": "tests/ui/news-feed.spec.ts",
              "line": 61,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/page-aliases.spec.ts",
      "file": "tests/ui/page-aliases.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "static page aliases",
          "file": "tests/ui/page-aliases.spec.ts",
          "line": 45,
          "column": 6,
          "specs": [
            {
              "title": "canonical vanity URL serves the stored page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                      "location": {
                        "file": "/app/tests/ui/page-aliases.spec.ts",
                        "line": 46,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": -1,
                      "parallelIndex": -1,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.369Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                          "location": {
                            "file": "/app/tests/ui/page-aliases.spec.ts",
                            "line": 46,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "435b8a583a557afdb4f4-01c6492deafe21c2f9dd",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 48,
              "column": 7
            },
            {
              "title": "vanity lookup ignores case, trailing slash and index.html",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                      "location": {
                        "file": "/app/tests/ui/page-aliases.spec.ts",
                        "line": 46,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": -1,
                      "parallelIndex": -1,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.370Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                          "location": {
                            "file": "/app/tests/ui/page-aliases.spec.ts",
                            "line": 46,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "435b8a583a557afdb4f4-07e8807475348f87bc20",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 52,
              "column": 7
            },
            {
              "title": "UUID URL serves the page with its vanity canonical",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                      "location": {
                        "file": "/app/tests/ui/page-aliases.spec.ts",
                        "line": 46,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": -1,
                      "parallelIndex": -1,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.370Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                          "location": {
                            "file": "/app/tests/ui/page-aliases.spec.ts",
                            "line": 46,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "435b8a583a557afdb4f4-d8a32d62d9503bea2b6e",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 58,
              "column": 7
            },
            {
              "title": "secondary keys redirect to the canonical URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                      "location": {
                        "file": "/app/tests/ui/page-aliases.spec.ts",
                        "line": 46,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": -1,
                      "parallelIndex": -1,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.370Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                          "location": {
                            "file": "/app/tests/ui/page-aliases.spec.ts",
                            "line": 46,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "435b8a583a557afdb4f4-79778d6ee4c3fd5bcef0",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 66,
              "column": 7
            },
            {
              "title": "legacy URL shapes redirect to the canonical URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                      "location": {
                        "file": "/app/tests/ui/page-aliases.spec.ts",
                        "line": 46,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": -1,
                      "parallelIndex": -1,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.370Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                          "location": {
                            "file": "/app/tests/ui/page-aliases.spec.ts",
                            "line": 46,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "435b8a583a557afdb4f4-b1dcc28f4f8ac7c8b0e9",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 73,
              "column": 7
            },
            {
              "title": "redirect targets are served",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                      "location": {
                        "file": "/app/tests/ui/page-aliases.spec.ts",
                        "line": 46,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": -1,
                      "parallelIndex": -1,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.370Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                          "location": {
                            "file": "/app/tests/ui/page-aliases.spec.ts",
                            "line": 46,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "435b8a583a557afdb4f4-1953e0e87b9ede5e9f3e",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 79,
              "column": 7
            },
            {
              "title": "an unknown address is not served as a page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                      "location": {
                        "file": "/app/tests/ui/page-aliases.spec.ts",
                        "line": 46,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": -1,
                      "parallelIndex": -1,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.371Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published aliases",
                          "location": {
                            "file": "/app/tests/ui/page-aliases.spec.ts",
                            "line": 46,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "435b8a583a557afdb4f4-cf40560c183e754a8e41",
              "file": "tests/ui/page-aliases.spec.ts",
              "line": 85,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/postalcodes.spec.ts",
      "file": "tests/ui/postalcodes.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "ZIP code overlaps (API)",
          "file": "tests/ui/postalcodes.spec.ts",
          "line": 38,
          "column": 6,
          "specs": [
            {
              "title": "78701 overlaps TX-37 and Travis County, with land area",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host has no PostalCode OVERLAPS yet",
                      "location": {
                        "file": "/app/tests/ui/postalcodes.spec.ts",
                        "line": 40,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 12,
                      "status": "skipped",
                      "duration": 43,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.067Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host has no PostalCode OVERLAPS yet",
                          "location": {
                            "file": "/app/tests/ui/postalcodes.spec.ts",
                            "line": 40,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-fd9f717d5d792e008913",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 43,
              "column": 7
            },
            {
              "title": "a ZIP split across districts and counties: 02467 (Chestnut Hill, MA)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host has no PostalCode OVERLAPS yet",
                      "location": {
                        "file": "/app/tests/ui/postalcodes.spec.ts",
                        "line": 40,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 12,
                      "status": "skipped",
                      "duration": 17,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.172Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host has no PostalCode OVERLAPS yet",
                          "location": {
                            "file": "/app/tests/ui/postalcodes.spec.ts",
                            "line": 40,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-b1cff2326cd3f5773029",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 54,
              "column": 7
            },
            {
              "title": "the edges read both ways: TX-37 and Travis County list 78701",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host has no PostalCode OVERLAPS yet",
                      "location": {
                        "file": "/app/tests/ui/postalcodes.spec.ts",
                        "line": 40,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 12,
                      "status": "skipped",
                      "duration": 39,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.206Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host has no PostalCode OVERLAPS yet",
                          "location": {
                            "file": "/app/tests/ui/postalcodes.spec.ts",
                            "line": 40,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-9053988a012c927e29a5",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 61,
              "column": 7
            },
            {
              "title": "almost every ZIP has a county",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host has no PostalCode OVERLAPS yet",
                      "location": {
                        "file": "/app/tests/ui/postalcodes.spec.ts",
                        "line": 40,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 12,
                      "status": "skipped",
                      "duration": 15,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.257Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host has no PostalCode OVERLAPS yet",
                          "location": {
                            "file": "/app/tests/ui/postalcodes.spec.ts",
                            "line": 40,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-91224e7aa3b0911623c7",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 73,
              "column": 7
            }
          ]
        },
        {
          "title": "ZIP code pages",
          "file": "tests/ui/postalcodes.spec.ts",
          "line": 86,
          "column": 6,
          "specs": [
            {
              "title": "78701 lists TX-37 and Travis County, linked",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this host serves static ZIP pages, not the us-pages renderer",
                      "location": {
                        "file": "/app/tests/ui/postalcodes.spec.ts",
                        "line": 91,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 12,
                      "status": "skipped",
                      "duration": 250,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.292Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this host serves static ZIP pages, not the us-pages renderer",
                          "location": {
                            "file": "/app/tests/ui/postalcodes.spec.ts",
                            "line": 91,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/postalcodes-ZIP-code-pages-b006c-37-and-Travis-County-linked-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-dcfd4ffc4d7c795082e0",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 95,
              "column": 7
            },
            {
              "title": "02467 lists three districts, largest overlap first, and three counties",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this host serves static ZIP pages, not the us-pages renderer",
                      "location": {
                        "file": "/app/tests/ui/postalcodes.spec.ts",
                        "line": 91,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 12,
                      "status": "skipped",
                      "duration": 176,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.633Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this host serves static ZIP pages, not the us-pages renderer",
                          "location": {
                            "file": "/app/tests/ui/postalcodes.spec.ts",
                            "line": 91,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/postalcodes-ZIP-code-pages-8dbdc-ap-first-and-three-counties-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-29298cb4d577f7a7bfe7",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 104,
              "column": 7
            },
            {
              "title": "the water-only \"ZZ\" district is not listed: 60611 (Chicago, on Lake Michigan)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this host serves static ZIP pages, not the us-pages renderer",
                      "location": {
                        "file": "/app/tests/ui/postalcodes.spec.ts",
                        "line": 91,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 12,
                      "status": "skipped",
                      "duration": 180,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.824Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this host serves static ZIP pages, not the us-pages renderer",
                          "location": {
                            "file": "/app/tests/ui/postalcodes.spec.ts",
                            "line": 91,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/postalcodes-ZIP-code-pages-53b84-1-Chicago-on-Lake-Michigan--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-c65d4ecf3d263b810145",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 113,
              "column": 7
            },
            {
              "title": "the ZIP list shows each ZIP with its districts",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host has no PostalCode OVERLAPS yet",
                      "location": {
                        "file": "/app/tests/ui/postalcodes.spec.ts",
                        "line": 121,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 11,
                      "parallelIndex": 12,
                      "status": "skipped",
                      "duration": 87,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.023Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host has no PostalCode OVERLAPS yet",
                          "location": {
                            "file": "/app/tests/ui/postalcodes.spec.ts",
                            "line": 121,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/postalcodes-ZIP-code-pages-69177-each-ZIP-with-its-districts-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "9e1d6d67ffc6aff66f08-6c3a7e83de813fd10f0b",
              "file": "tests/ui/postalcodes.spec.ts",
              "line": 120,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/routing.spec.ts",
      "file": "tests/ui/routing.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "routing: canonical URLs per collection",
          "file": "tests/ui/routing.spec.ts",
          "line": 40,
          "column": 6,
          "specs": [
            {
              "title": "candidates: sitemap URLs serve their page with rel=canonical = the sitemap URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                      "location": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "line": 41,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 13,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.902Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "line": 41,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "43935043b4e8ab2472fa-7e72ef257b7e33487ee9",
              "file": "tests/ui/routing.spec.ts",
              "line": 44,
              "column": 9
            },
            {
              "title": "committees: sitemap URLs serve their page with rel=canonical = the sitemap URL",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                      "location": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "line": 41,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 13,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.903Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "line": 41,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                      "location": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "line": 41,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 13,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.904Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "line": 41,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                      "location": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "line": 41,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 13,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.904Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "line": 41,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                      "location": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "line": 41,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 13,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.904Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "line": 41,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                      "location": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "line": 41,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 13,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.904Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "line": 41,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                      "location": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "line": 41,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 13,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.904Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "line": 41,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": [
                    {
                      "type": "skip",
                      "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                      "location": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "line": 41,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 13,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.905Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Set EXPECT_ALIASES=1 against a target with published page paths",
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "line": 41,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 13,
                      "status": "failed",
                      "duration": 15207,
                      "error": {
                        "message": "Error: /candidates/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /candidates/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /candidates/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /candidates/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /candidates/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /candidates/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:41.905Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-d47ad-links-all-answer-200-or-301-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-d47ad-links-all-answer-200-or-301-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    },
                    {
                      "workerIndex": 5,
                      "parallelIndex": 5,
                      "status": "failed",
                      "duration": 15699,
                      "error": {
                        "message": "Error: /candidates/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /candidates/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /candidates/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /candidates/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /candidates/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /candidates/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T02:58:57.548Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-d47ad-links-all-answer-200-or-301-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-d47ad-links-all-answer-200-or-301-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-d47ad-links-all-answer-200-or-301-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-d47ad-links-all-answer-200-or-301-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    },
                    {
                      "workerIndex": 19,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15148,
                      "error": {
                        "message": "Error: /candidates/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /candidates/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /candidates/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /candidates/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /candidates/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /candidates/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T02:59:13.855Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-d47ad-links-all-answer-200-or-301-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-d47ad-links-all-answer-200-or-301-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "43935043b4e8ab2472fa-a17ae3fc2924fcb5ebd6",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/committees/ first-page links all answer 200 or 301",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 21,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15148,
                      "error": {
                        "message": "Error: /committees/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /committees/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /committees/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /committees/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /committees/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /committees/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:59:29.616Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-a9934-links-all-answer-200-or-301-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-a9934-links-all-answer-200-or-301-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    },
                    {
                      "workerIndex": 23,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15576,
                      "error": {
                        "message": "Error: /committees/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /committees/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /committees/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /committees/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /committees/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /committees/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T02:59:45.440Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-a9934-links-all-answer-200-or-301-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-a9934-links-all-answer-200-or-301-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-a9934-links-all-answer-200-or-301-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-a9934-links-all-answer-200-or-301-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    },
                    {
                      "workerIndex": 25,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15142,
                      "error": {
                        "message": "Error: /committees/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /committees/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /committees/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /committees/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /committees/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /committees/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:00:01.702Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-a9934-links-all-answer-200-or-301-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-a9934-links-all-answer-200-or-301-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "43935043b4e8ab2472fa-5a49ba9c6938493d73e1",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/parties/ first-page links all answer 200 or 301",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 27,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15165,
                      "error": {
                        "message": "Error: /parties/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /parties/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /parties/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /parties/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /parties/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /parties/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:00:17.440Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-460ac-links-all-answer-200-or-301-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-460ac-links-all-answer-200-or-301-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    },
                    {
                      "workerIndex": 29,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15570,
                      "error": {
                        "message": "Error: /parties/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /parties/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /parties/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /parties/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /parties/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /parties/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:00:33.211Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-460ac-links-all-answer-200-or-301-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-460ac-links-all-answer-200-or-301-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-460ac-links-all-answer-200-or-301-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-460ac-links-all-answer-200-or-301-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    },
                    {
                      "workerIndex": 31,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15140,
                      "error": {
                        "message": "Error: /parties/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /parties/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /parties/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /parties/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /parties/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /parties/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:00:49.416Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-460ac-links-all-answer-200-or-301-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-460ac-links-all-answer-200-or-301-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "43935043b4e8ab2472fa-c682837875ef71f142bb",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/offices/ first-page links all answer 200 or 301",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15147,
                      "error": {
                        "message": "Error: /offices/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /offices/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /offices/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /offices/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /offices/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /offices/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:01:05.129Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-530ff-links-all-answer-200-or-301-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-530ff-links-all-answer-200-or-301-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    },
                    {
                      "workerIndex": 35,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15618,
                      "error": {
                        "message": "Error: /offices/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /offices/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /offices/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /offices/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /offices/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /offices/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:01:20.894Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-530ff-links-all-answer-200-or-301-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-530ff-links-all-answer-200-or-301-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-530ff-links-all-answer-200-or-301-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-530ff-links-all-answer-200-or-301-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    },
                    {
                      "workerIndex": 37,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15129,
                      "error": {
                        "message": "Error: /offices/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /offices/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /offices/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /offices/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /offices/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /offices/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:01:37.163Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-530ff-links-all-answer-200-or-301-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-530ff-links-all-answer-200-or-301-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "43935043b4e8ab2472fa-89f42d8f841e3082c77a",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/elections/ first-page links all answer 200 or 301",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 39,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15119,
                      "error": {
                        "message": "Error: /elections/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /elections/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n",
                        "stack": "Error: /elections/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /elections/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:77:99",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 99,
                          "line": 77
                        },
                        "snippet": "\u001b[0m \u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} 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 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ 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 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\n \u001b[90m 79 |\u001b[39m         \u001b[33m.\u001b[39mfilter((h)\u001b[33m:\u001b[39m h is string \u001b[33m=>\u001b[39m \u001b[33m!\u001b[39m\u001b[33m!\u001b[39mh)\n \u001b[90m 80 |\u001b[39m         \u001b[33m.\u001b[39mmap(toRelativePath)\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 99,
                            "line": 77
                          },
                          "message": "Error: /elections/ should list results\n\n\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\nTimeout: 15000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - /elections/ should list results locator('.entity-search-result').first() with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('.entity-search-result').first()\u001b[22m\n\n\n  75 |       const res = await page.goto(index);\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n> 77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n     |                                                                                                   ^\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n  79 |         .filter((h): h is string => !!h)\n  80 |         .map(toRelativePath);\n    at /app/tests/ui/routing.spec.ts:77:99"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:01:52.892Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-57a14-links-all-answer-200-or-301-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-57a14-links-all-answer-200-or-301-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 99,
                        "line": 77
                      }
                    },
                    {
                      "workerIndex": 41,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 232,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/elections/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/elections/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/elections/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/elections/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:75:30",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 30,
                          "line": 75
                        },
                        "snippet": "\u001b[0m \u001b[90m 73 |\u001b[39m     test(\u001b[32m`${index} first-page links all answer 200 or 301`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page\u001b[33m,\u001b[39m request }) \u001b[33m=>\u001b[39m {\n \u001b[90m 74 |\u001b[39m       test\u001b[33m.\u001b[39msetTimeout(\u001b[35m120000\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                              \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} should answer 200`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 30,
                            "line": 75
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/elections/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/elections/\", waiting until \"load\"\u001b[22m\n\n\n  73 |     test(`${index} first-page links all answer 200 or 301`, async ({ page, request }) => {\n  74 |       test.setTimeout(120000);\n> 75 |       const res = await page.goto(index);\n     |                              ^\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n  77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n    at /app/tests/ui/routing.spec.ts:75:30"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:02:08.620Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-57a14-links-all-answer-200-or-301-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-57a14-links-all-answer-200-or-301-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-57a14-links-all-answer-200-or-301-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-57a14-links-all-answer-200-or-301-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 30,
                        "line": 75
                      }
                    },
                    {
                      "workerIndex": 42,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 143,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/elections/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/elections/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/elections/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/elections/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:75:30",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 30,
                          "line": 75
                        },
                        "snippet": "\u001b[0m \u001b[90m 73 |\u001b[39m     test(\u001b[32m`${index} first-page links all answer 200 or 301`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page\u001b[33m,\u001b[39m request }) \u001b[33m=>\u001b[39m {\n \u001b[90m 74 |\u001b[39m       test\u001b[33m.\u001b[39msetTimeout(\u001b[35m120000\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                              \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} should answer 200`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 30,
                            "line": 75
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/elections/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/elections/\", waiting until \"load\"\u001b[22m\n\n\n  73 |     test(`${index} first-page links all answer 200 or 301`, async ({ page, request }) => {\n  74 |       test.setTimeout(120000);\n> 75 |       const res = await page.goto(index);\n     |                              ^\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n  77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n    at /app/tests/ui/routing.spec.ts:75:30"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:02:09.631Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-57a14-links-all-answer-200-or-301-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-57a14-links-all-answer-200-or-301-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 30,
                        "line": 75
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "43935043b4e8ab2472fa-3800effe3714880c03cd",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/employers/ first-page links all answer 200 or 301",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 43,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 138,
                      "error": {
                        "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n",
                        "stack": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n    at /app/tests/ui/routing.spec.ts:75:30",
                        "location": {
                          "file": "/app/tests/ui/routing.spec.ts",
                          "column": 30,
                          "line": 75
                        },
                        "snippet": "\u001b[0m \u001b[90m 73 |\u001b[39m     test(\u001b[32m`${index} first-page links all answer 200 or 301`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page\u001b[33m,\u001b[39m request }) \u001b[33m=>\u001b[39m {\n \u001b[90m 74 |\u001b[39m       test\u001b[33m.\u001b[39msetTimeout(\u001b[35m120000\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 75 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(index)\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                              \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 76 |\u001b[39m       expect(res\u001b[33m?\u001b[39m\u001b[33m.\u001b[39mstatus()\u001b[33m,\u001b[39m \u001b[32m`${index} should answer 200`\u001b[39m)\u001b[33m.\u001b[39mtoBe(\u001b[35m200\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 77 |\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[39m \u001b[32m`${index} should list results`\u001b[39m)\u001b[33m.\u001b[39mtoBeVisible({ timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 78 |\u001b[39m       \u001b[36mconst\u001b[39m hrefs \u001b[33m=\u001b[39m (\u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'.entity-search-result'\u001b[39m)\u001b[33m.\u001b[39mevaluateAll(els \u001b[33m=>\u001b[39m els\u001b[33m.\u001b[39mmap(e \u001b[33m=>\u001b[39m e\u001b[33m.\u001b[39mgetAttribute(\u001b[32m'href'\u001b[39m))))\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/routing.spec.ts",
                            "column": 30,
                            "line": 75
                          },
                          "message": "Error: page.goto: net::ERR_CONNECTION_REFUSED at http://10.1.74.226/employers/\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n\n  73 |     test(`${index} first-page links all answer 200 or 301`, async ({ page, request }) => {\n  74 |       test.setTimeout(120000);\n> 75 |       const res = await page.goto(index);\n     |                              ^\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n  77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n    at /app/tests/ui/routing.spec.ts:75:30"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:02:10.723Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-96c98-links-all-answer-200-or-301-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-96c98-links-all-answer-200-or-301-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/routing.spec.ts",
                        "column": 30,
                        "line": 75
                      }
                    },
                    {
                      "workerIndex": 45,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 130328,
                      "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/routing.spec.ts",
                            "column": 30,
                            "line": 75
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n\n  73 |     test(`${index} first-page links all answer 200 or 301`, async ({ page, request }) => {\n  74 |       test.setTimeout(120000);\n> 75 |       const res = await page.goto(index);\n     |                              ^\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n  77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n    at /app/tests/ui/routing.spec.ts:75:30"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:02:11.831Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-96c98-links-all-answer-200-or-301-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-96c98-links-all-answer-200-or-301-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-96c98-links-all-answer-200-or-301-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 49,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 130128,
                      "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/routing.spec.ts",
                            "column": 30,
                            "line": 75
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/employers/\", waiting until \"load\"\u001b[22m\n\n\n  73 |     test(`${index} first-page links all answer 200 or 301`, async ({ page, request }) => {\n  74 |       test.setTimeout(120000);\n> 75 |       const res = await page.goto(index);\n     |                              ^\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n  77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n    at /app/tests/ui/routing.spec.ts:75:30"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:04:22.802Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-96c98-links-all-answer-200-or-301-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "43935043b4e8ab2472fa-22e23060552aa17bc15f",
              "file": "tests/ui/routing.spec.ts",
              "line": 73,
              "column": 9
            },
            {
              "title": "/vendors/ first-page links all answer 200 or 301",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 55,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 130136,
                      "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/routing.spec.ts",
                            "column": 30,
                            "line": 75
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n\n  73 |     test(`${index} first-page links all answer 200 or 301`, async ({ page, request }) => {\n  74 |       test.setTimeout(120000);\n> 75 |       const res = await page.goto(index);\n     |                              ^\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n  77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n    at /app/tests/ui/routing.spec.ts:75:30"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:06:33.563Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-cf190-links-all-answer-200-or-301-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 60,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 132440,
                      "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/routing.spec.ts",
                            "column": 30,
                            "line": 75
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n\n  73 |     test(`${index} first-page links all answer 200 or 301`, async ({ page, request }) => {\n  74 |       test.setTimeout(120000);\n> 75 |       const res = await page.goto(index);\n     |                              ^\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n  77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n    at /app/tests/ui/routing.spec.ts:75:30"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:08:44.324Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-cf190-links-all-answer-200-or-301-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-cf190-links-all-answer-200-or-301-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-cf190-links-all-answer-200-or-301-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 66,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 130308,
                      "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/routing.spec.ts",
                            "column": 30,
                            "line": 75
                          },
                          "message": "Error: page.goto: net::ERR_ABORTED; maybe frame was detached?\nCall log:\n\u001b[2m  - navigating to \"http://10.1.74.226/vendors/\", waiting until \"load\"\u001b[22m\n\n\n  73 |     test(`${index} first-page links all answer 200 or 301`, async ({ page, request }) => {\n  74 |       test.setTimeout(120000);\n> 75 |       const res = await page.goto(index);\n     |                              ^\n  76 |       expect(res?.status(), `${index} should answer 200`).toBe(200);\n  77 |       await expect(page.locator('.entity-search-result').first(), `${index} should list results`).toBeVisible({ timeout: 15000 });\n  78 |       const hrefs = (await page.locator('.entity-search-result').evaluateAll(els => els.map(e => e.getAttribute('href'))))\n    at /app/tests/ui/routing.spec.ts:75:30"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:10:57.385Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-every-inde-cf190-links-all-answer-200-or-301-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "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": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 72,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30024,
                      "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/routing.spec.ts",
                            "column": 33,
                            "line": 98
                          },
                          "message": "Error: apiRequestContext.get: Request context disposed.\nCall log:\n\u001b[2m  - → GET http://10.1.74.226/candidates/no-such-entity-zz/\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.64.0 (x64; ubuntu 22.04) node/20.9 CI/1\u001b[22m\n\u001b[2m    - accept: */*\u001b[22m\n\u001b[2m    - accept-encoding: gzip,deflate,br\u001b[22m\n\n\n   96 |     // leaf collections are covered below.\n   97 |     for (const path of ['/candidates/no-such-entity-zz/', '/committees/no-such-entity-zz/']) {\n>  98 |       const res = await request.get(path, { maxRedirects: 0 });\n      |                                 ^\n   99 |       expect(res.status(), `${path} should answer 404`).toBe(404);\n  100 |     }\n  101 |   });\n    at /app/tests/ui/routing.spec.ts:98:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:13:08.316Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-unknown-ad-8ff51-own-entity-path-answers-404-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 74,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30038,
                      "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/routing.spec.ts",
                            "column": 33,
                            "line": 98
                          },
                          "message": "Error: apiRequestContext.get: Request context disposed.\nCall log:\n\u001b[2m  - → GET http://10.1.74.226/candidates/no-such-entity-zz/\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.64.0 (x64; ubuntu 22.04) node/20.9 CI/1\u001b[22m\n\u001b[2m    - accept: */*\u001b[22m\n\u001b[2m    - accept-encoding: gzip,deflate,br\u001b[22m\n\n\n   96 |     // leaf collections are covered below.\n   97 |     for (const path of ['/candidates/no-such-entity-zz/', '/committees/no-such-entity-zz/']) {\n>  98 |       const res = await request.get(path, { maxRedirects: 0 });\n      |                                 ^\n   99 |       expect(res.status(), `${path} should answer 404`).toBe(404);\n  100 |     }\n  101 |   });\n    at /app/tests/ui/routing.spec.ts:98:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:13:38.899Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-unknown-ad-8ff51-own-entity-path-answers-404-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-unknown-ad-8ff51-own-entity-path-answers-404-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 76,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30027,
                      "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/routing.spec.ts",
                            "column": 33,
                            "line": 98
                          },
                          "message": "Error: apiRequestContext.get: Request context disposed.\nCall log:\n\u001b[2m  - → GET http://10.1.74.226/candidates/no-such-entity-zz/\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.64.0 (x64; ubuntu 22.04) node/20.9 CI/1\u001b[22m\n\u001b[2m    - accept: */*\u001b[22m\n\u001b[2m    - accept-encoding: gzip,deflate,br\u001b[22m\n\n\n   96 |     // leaf collections are covered below.\n   97 |     for (const path of ['/candidates/no-such-entity-zz/', '/committees/no-such-entity-zz/']) {\n>  98 |       const res = await request.get(path, { maxRedirects: 0 });\n      |                                 ^\n   99 |       expect(res.status(), `${path} should answer 404`).toBe(404);\n  100 |     }\n  101 |   });\n    at /app/tests/ui/routing.spec.ts:98:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:14:09.458Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-unknown-ad-8ff51-own-entity-path-answers-404-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "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": 78,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30039,
                      "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/routing.spec.ts",
                            "column": 33,
                            "line": 109
                          },
                          "message": "Error: apiRequestContext.get: Request context disposed.\nCall log:\n\u001b[2m  - → GET http://10.1.74.226/individuals/no-such-entity-zz/\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.64.0 (x64; ubuntu 22.04) node/20.9 CI/1\u001b[22m\n\u001b[2m    - accept: */*\u001b[22m\n\u001b[2m    - accept-encoding: gzip,deflate,br\u001b[22m\n\n\n  107 |     // a missing entity itself. There is no server-side 404 to expect here.\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      |                                 ^\n  110 |       expect(res.status(), `/${col}/no-such-entity-zz/ should serve the shell`).toBe(200);\n  111 |       expect(res.headers()['content-type'] ?? '', `/${col}/ shell is HTML`).toContain('text/html');\n  112 |     }\n    at /app/tests/ui/routing.spec.ts:109:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T03:14:40.029Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-unknown-ad-1c942-serves-the-collection-shell-ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 81,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30069,
                      "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/routing.spec.ts",
                            "column": 33,
                            "line": 109
                          },
                          "message": "Error: apiRequestContext.get: Request context disposed.\nCall log:\n\u001b[2m  - → GET http://10.1.74.226/individuals/no-such-entity-zz/\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.64.0 (x64; ubuntu 22.04) node/20.9 CI/1\u001b[22m\n\u001b[2m    - accept: */*\u001b[22m\n\u001b[2m    - accept-encoding: gzip,deflate,br\u001b[22m\n\n\n  107 |     // a missing entity itself. There is no server-side 404 to expect here.\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      |                                 ^\n  110 |       expect(res.status(), `/${col}/no-such-entity-zz/ should serve the shell`).toBe(200);\n  111 |       expect(res.headers()['content-type'] ?? '', `/${col}/ shell is HTML`).toContain('text/html');\n  112 |     }\n    at /app/tests/ui/routing.spec.ts:109:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-15T03:15:10.604Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-unknown-ad-1c942-serves-the-collection-shell-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-unknown-ad-1c942-serves-the-collection-shell-ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 83,
                      "parallelIndex": 1,
                      "status": "timedOut",
                      "duration": 30030,
                      "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/routing.spec.ts",
                            "column": 33,
                            "line": 109
                          },
                          "message": "Error: apiRequestContext.get: Request context disposed.\nCall log:\n\u001b[2m  - → GET http://10.1.74.226/individuals/no-such-entity-zz/\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.64.0 (x64; ubuntu 22.04) node/20.9 CI/1\u001b[22m\n\u001b[2m    - accept: */*\u001b[22m\n\u001b[2m    - accept-encoding: gzip,deflate,br\u001b[22m\n\n\n  107 |     // a missing entity itself. There is no server-side 404 to expect here.\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      |                                 ^\n  110 |       expect(res.status(), `/${col}/no-such-entity-zz/ should serve the shell`).toBe(200);\n  111 |       expect(res.headers()['content-type'] ?? '', `/${col}/ shell is HTML`).toContain('text/html');\n  112 |     }\n    at /app/tests/ui/routing.spec.ts:109:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-15T03:15:41.233Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/a8df286/us/test-output/routing-routing-unknown-ad-1c942-serves-the-collection-shell-ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "43935043b4e8ab2472fa-bcb1fae8f9ad8a3e2a8b",
              "file": "tests/ui/routing.spec.ts",
              "line": 103,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/serving.spec.ts",
      "file": "tests/ui/serving.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "sitemaps",
          "file": "tests/ui/serving.spec.ts",
          "line": 24,
          "column": 6,
          "specs": [
            {
              "title": "candidates: the index lists one file per lead character, each a urlset",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 2889,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.049Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-9767824df806d6118ac7",
              "file": "tests/ui/serving.spec.ts",
              "line": 26,
              "column": 9
            },
            {
              "title": "committees: the index lists one file per lead character, each a urlset",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 1870,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:44.992Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-94aa544e2eac8eead0f5",
              "file": "tests/ui/serving.spec.ts",
              "line": 26,
              "column": 9
            },
            {
              "title": "a single-file collection sitemap is a urlset of its own pages",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 65,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.872Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-63d1a6acfa8333a6974d",
              "file": "tests/ui/serving.spec.ts",
              "line": 44,
              "column": 7
            },
            {
              "title": "a sitemap that does not exist is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 36,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.951Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-27904f07922a9c50fc21",
              "file": "tests/ui/serving.spec.ts",
              "line": 52,
              "column": 7
            }
          ]
        },
        {
          "title": "static assets",
          "file": "tests/ui/serving.spec.ts",
          "line": 59,
          "column": 6,
          "specs": [
            {
              "title": "state images are SVG with CORS and caching headers",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 17,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.995Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-1fa533f3ce271bd3f9a7",
              "file": "tests/ui/serving.spec.ts",
              "line": 60,
              "column": 7
            },
            {
              "title": "district GeoJSON is application/geo+json and parses",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 18,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.022Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-84da73e251953bb6b35b",
              "file": "tests/ui/serving.spec.ts",
              "line": 70,
              "column": 7
            },
            {
              "title": "a missing asset is 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 8,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.049Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-ee59e849ca62b46a41f2",
              "file": "tests/ui/serving.spec.ts",
              "line": 78,
              "column": 7
            }
          ]
        },
        {
          "title": "collection roots",
          "file": "tests/ui/serving.spec.ts",
          "line": 85,
          "column": 6,
          "specs": [
            {
              "title": "a collection without its trailing slash redirects relatively to the index page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "passed",
                      "duration": 21,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.066Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "facafd0cac1eb17ca154-35c0c19fdb3025d1d766",
              "file": "tests/ui/serving.spec.ts",
              "line": 86,
              "column": 7
            }
          ]
        },
        {
          "title": "rendered candidate and committee pages (us-pages)",
          "file": "tests/ui/serving.spec.ts",
          "line": 96,
          "column": 6,
          "specs": [
            {
              "title": "a candidate page is rendered for the current graph build",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                      "location": {
                        "file": "/app/tests/ui/serving.spec.ts",
                        "line": 97,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.096Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                          "location": {
                            "file": "/app/tests/ui/serving.spec.ts",
                            "line": 97,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "facafd0cac1eb17ca154-2a6fb769baeb12eacefb",
              "file": "tests/ui/serving.spec.ts",
              "line": 99,
              "column": 7
            },
            {
              "title": "/politicians/<id>/ is the candidate page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                      "location": {
                        "file": "/app/tests/ui/serving.spec.ts",
                        "line": 97,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.097Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                          "location": {
                            "file": "/app/tests/ui/serving.spec.ts",
                            "line": 97,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "facafd0cac1eb17ca154-780f42d8689617265d3c",
              "file": "tests/ui/serving.spec.ts",
              "line": 117,
              "column": 7
            },
            {
              "title": "a House candidate links its party, office and district",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                      "location": {
                        "file": "/app/tests/ui/serving.spec.ts",
                        "line": 97,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.097Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                          "location": {
                            "file": "/app/tests/ui/serving.spec.ts",
                            "line": 97,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "facafd0cac1eb17ca154-b0f8bf3b14a6ada4429f",
              "file": "tests/ui/serving.spec.ts",
              "line": 124,
              "column": 7
            },
            {
              "title": "a committee page lists its money and its party affinity",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                      "location": {
                        "file": "/app/tests/ui/serving.spec.ts",
                        "line": 97,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.097Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                          "location": {
                            "file": "/app/tests/ui/serving.spec.ts",
                            "line": 97,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "facafd0cac1eb17ca154-7f762ab6b05cacd4df49",
              "file": "tests/ui/serving.spec.ts",
              "line": 137,
              "column": 7
            },
            {
              "title": "an upper-case path renders with the lower-case canonical",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                      "location": {
                        "file": "/app/tests/ui/serving.spec.ts",
                        "line": 97,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.097Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                          "location": {
                            "file": "/app/tests/ui/serving.spec.ts",
                            "line": 97,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "facafd0cac1eb17ca154-a1e3e44aa623c8acb1ed",
              "file": "tests/ui/serving.spec.ts",
              "line": 153,
              "column": 7
            },
            {
              "title": "unknown candidate, committee and party paths are 404 without a static fallback",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                      "location": {
                        "file": "/app/tests/ui/serving.spec.ts",
                        "line": 97,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.097Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                          "location": {
                            "file": "/app/tests/ui/serving.spec.ts",
                            "line": 97,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "facafd0cac1eb17ca154-174b09c2fe387e2121a8",
              "file": "tests/ui/serving.spec.ts",
              "line": 159,
              "column": 7
            },
            {
              "title": "the money-flow Sankey and the Graph button work on a rendered candidate page",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                      "location": {
                        "file": "/app/tests/ui/serving.spec.ts",
                        "line": 97,
                        "column": 8
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 13,
                      "parallelIndex": 14,
                      "status": "skipped",
                      "duration": 0,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:47.098Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "Candidate and committee pages are rendered on preview only until production Phase 4 (sites#211)",
                          "location": {
                            "file": "/app/tests/ui/serving.spec.ts",
                            "line": 97,
                            "column": 8
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "facafd0cac1eb17ca154-bdca150ccaebfd909ea8",
              "file": "tests/ui/serving.spec.ts",
              "line": 168,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/sitemap.spec.ts",
      "file": "tests/ui/sitemap.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "sitemap URL validation",
          "file": "tests/ui/sitemap.spec.ts",
          "line": 202,
          "column": 6,
          "specs": [
            {
              "title": "sitemap index loads and contains child sitemaps",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 233,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.043Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/sitemap-sitemap-URL-valida-4660f-and-contains-child-sitemaps-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-c60e93b9c98b61485b7c",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 204,
              "column": 7
            },
            {
              "title": "sitemap index lists no nested index",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 574,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.526Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-9c49175d52fd8bbb5808",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 220,
              "column": 7
            },
            {
              "title": "candidates sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 884,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 27 URLs in /candidates/sitemap-candidates.xml\n"
                        },
                        {
                          "text": "Detected sitemap index, sampling 2 child sitemaps\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /candidates/sitemap-candidates.xml: https://us.elect.info/candidates/sitemap-candidates-e.xml, https://us.elect.info/candidates/sitemap-candidates-h.xml\n"
                        },
                        {
                          "text": "Processing child sitemap: /candidates/sitemap-candidates-e.xml\n"
                        },
                        {
                          "text": "  Found 1992 URLs in /candidates/sitemap-candidates-e.xml\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /candidates/sitemap-candidates-e.xml: https://us.elect.info/candidates/edward-n-rodriguez-h6ny07099/, https://us.elect.info/candidates/ernest-william-bost-p00000828/, https://us.elect.info/candidates/ellen-elle-kizik-h0in05193/, https://us.elect.info/candidates/ernest-porter-h8va02095/, https://us.elect.info/candidates/e-n-zeigler-s6sc00047/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/edward-n-rodriguez-h6ny07099/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/ernest-william-bost-p00000828/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/ellen-elle-kizik-h0in05193/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/ernest-porter-h8va02095/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/e-n-zeigler-s6sc00047/\n"
                        },
                        {
                          "text": "  Tested 5 URLs from /candidates/sitemap-candidates-e.xml\n"
                        },
                        {
                          "text": "Processing child sitemap: /candidates/sitemap-candidates-h.xml\n"
                        },
                        {
                          "text": "  Found 1125 URLs in /candidates/sitemap-candidates-h.xml\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /candidates/sitemap-candidates-h.xml: https://us.elect.info/candidates/herschel-l-collins-h8ct01079/, https://us.elect.info/candidates/howard-andrew-klausner-h6mi14211/, https://us.elect.info/candidates/h-b-jr-limehouse-h0sc01113/, https://us.elect.info/candidates/helen-ann-foley-h6nv01034/, https://us.elect.info/candidates/heidi-briones-h0or01186/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/herschel-l-collins-h8ct01079/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/howard-andrew-klausner-h6mi14211/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/h-b-jr-limehouse-h0sc01113/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/helen-ann-foley-h6nv01034/\n"
                        },
                        {
                          "text": "  Testing page: /candidates/heidi-briones-h0or01186/\n"
                        },
                        {
                          "text": "  Tested 5 URLs from /candidates/sitemap-candidates-h.xml\n"
                        },
                        {
                          "text": "Tested 10 URLs from /candidates/sitemap-candidates.xml\n"
                        },
                        {
                          "text": "Tested 10 URLs from candidates sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.116Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/sitemap-sitemap-URL-valida-6d4ff-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-a80be8d946ded7f69d5c",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 235,
              "column": 7
            },
            {
              "title": "committees sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 120000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 937,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 27 URLs in /committees/sitemap-committees.xml\n"
                        },
                        {
                          "text": "Detected sitemap index, sampling 2 child sitemaps\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /committees/sitemap-committees.xml: https://us.elect.info/committees/sitemap-committees-e.xml, https://us.elect.info/committees/sitemap-committees-y.xml\n"
                        },
                        {
                          "text": "Processing child sitemap: /committees/sitemap-committees-e.xml\n"
                        },
                        {
                          "text": "  Found 2219 URLs in /committees/sitemap-committees-e.xml\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /committees/sitemap-committees-e.xml: https://us.elect.info/committees/electric-gas-freedom-committee-c00635037/, https://us.elect.info/committees/ed-fielding-for-congress-campaign-committee-c00269472/, https://us.elect.info/committees/ed-brown-for-congress-c00340067/, https://us.elect.info/committees/eric-stanton-for-maine-c00638270/, https://us.elect.info/committees/engility-corporation-tasc-pac-c00362582/\n"
                        },
                        {
                          "text": "  Testing page: /committees/electric-gas-freedom-committee-c00635037/\n"
                        },
                        {
                          "text": "  Testing page: /committees/ed-fielding-for-congress-campaign-committee-c00269472/\n"
                        },
                        {
                          "text": "  Testing page: /committees/ed-brown-for-congress-c00340067/\n"
                        },
                        {
                          "text": "  Testing page: /committees/eric-stanton-for-maine-c00638270/\n"
                        },
                        {
                          "text": "  Testing page: /committees/engility-corporation-tasc-pac-c00362582/\n"
                        },
                        {
                          "text": "  Tested 5 URLs from /committees/sitemap-committees-e.xml\n"
                        },
                        {
                          "text": "Processing child sitemap: /committees/sitemap-committees-y.xml\n"
                        },
                        {
                          "text": "  Found 358 URLs in /committees/sitemap-committees-y.xml\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /committees/sitemap-committees-y.xml: https://us.elect.info/committees/you-gotta-believe-c00852905/, https://us.elect.info/committees/young-guns-day-iv-2014-c00568436/, https://us.elect.info/committees/youth-against-gun-violence-pac-c00572701/, https://us.elect.info/committees/your-pro-choice-voter-guide-c00326298/, https://us.elect.info/committees/your-law-order-voter-guide-c00292516/\n"
                        },
                        {
                          "text": "  Testing page: /committees/you-gotta-believe-c00852905/\n"
                        },
                        {
                          "text": "  Testing page: /committees/young-guns-day-iv-2014-c00568436/\n"
                        },
                        {
                          "text": "  Testing page: /committees/youth-against-gun-violence-pac-c00572701/\n"
                        },
                        {
                          "text": "  Testing page: /committees/your-pro-choice-voter-guide-c00326298/\n"
                        },
                        {
                          "text": "  Testing page: /committees/your-law-order-voter-guide-c00292516/\n"
                        },
                        {
                          "text": "  Tested 5 URLs from /committees/sitemap-committees-y.xml\n"
                        },
                        {
                          "text": "Tested 10 URLs from /committees/sitemap-committees.xml\n"
                        },
                        {
                          "text": "Tested 10 URLs from committees sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:44.013Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/sitemap-sitemap-URL-valida-0da0a-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-87023309750eb69e70c2",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 254,
              "column": 7
            },
            {
              "title": "parties sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 323,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 290 URLs in /parties/sitemap-parties.xml\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /parties/sitemap-parties.xml: https://us.elect.info/parties/we-the-people/, https://us.elect.info/parties/alp/, https://us.elect.info/parties/george-wallace/, https://us.elect.info/parties/pnp/, https://us.elect.info/parties/fwp/\n"
                        },
                        {
                          "text": "Testing page: /parties/we-the-people/\n"
                        },
                        {
                          "text": "Testing page: /parties/alp/\n"
                        },
                        {
                          "text": "Testing page: /parties/george-wallace/\n"
                        },
                        {
                          "text": "Testing page: /parties/pnp/\n"
                        },
                        {
                          "text": "Testing page: /parties/fwp/\n"
                        },
                        {
                          "text": "Tested 5 URLs from /parties/sitemap-parties.xml\n"
                        },
                        {
                          "text": "Tested 5 URLs from parties sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:44.960Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/sitemap-sitemap-URL-valida-56967-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-8947fc49728288b347b0",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 273,
              "column": 7
            },
            {
              "title": "offices sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 381,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 746 URLs in /offices/sitemap-offices.xml\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /offices/sitemap-offices.xml: https://us.elect.info/offices/house/fl-28/, https://us.elect.info/offices/house/az-06/, https://us.elect.info/offices/house/fl-74/, https://us.elect.info/offices/house/ar-04/, https://us.elect.info/offices/house/nc-03/\n"
                        },
                        {
                          "text": "Testing page: /offices/house/fl-28/\n"
                        },
                        {
                          "text": "Testing page: /offices/house/az-06/\n"
                        },
                        {
                          "text": "Testing page: /offices/house/fl-74/\n"
                        },
                        {
                          "text": "Testing page: /offices/house/ar-04/\n"
                        },
                        {
                          "text": "Testing page: /offices/house/nc-03/\n"
                        },
                        {
                          "text": "Tested 5 URLs from /offices/sitemap-offices.xml\n"
                        },
                        {
                          "text": "Tested 5 URLs from offices sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:45.293Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/sitemap-sitemap-URL-valida-10822-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-8e94254e8554d3a49e2d",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 289,
              "column": 7
            },
            {
              "title": "districts sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 421,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 444 URLs in /districts/sitemap-districts.xml\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /districts/sitemap-districts.xml: https://us.elect.info/districts/il-14/, https://us.elect.info/districts/vt-00/, https://us.elect.info/districts/nv-03/, https://us.elect.info/districts/ma-01/, https://us.elect.info/districts/mn-04/\n"
                        },
                        {
                          "text": "Testing page: /districts/il-14/\n"
                        },
                        {
                          "text": "Testing page: /districts/vt-00/\n"
                        },
                        {
                          "text": "Testing page: /districts/nv-03/\n"
                        },
                        {
                          "text": "Testing page: /districts/ma-01/\n"
                        },
                        {
                          "text": "Testing page: /districts/mn-04/\n"
                        },
                        {
                          "text": "Tested 5 URLs from /districts/sitemap-districts.xml\n"
                        },
                        {
                          "text": "Tested 5 URLs from districts sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:45.687Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/sitemap-sitemap-URL-valida-d74b1-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-e977450acfe43ef5ce30",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 305,
              "column": 7
            },
            {
              "title": "states sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 385,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 52 URLs in /states/sitemap-states.xml\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /states/sitemap-states.xml: https://us.elect.info/states/kentucky/, https://us.elect.info/states/delaware/, https://us.elect.info/states/oklahoma/, https://us.elect.info/states/nebraska/, https://us.elect.info/states/puerto-rico/\n"
                        },
                        {
                          "text": "Testing page: /states/kentucky/\n"
                        },
                        {
                          "text": "Testing page: /states/delaware/\n"
                        },
                        {
                          "text": "Testing page: /states/oklahoma/\n"
                        },
                        {
                          "text": "Testing page: /states/nebraska/\n"
                        },
                        {
                          "text": "Testing page: /states/puerto-rico/\n"
                        },
                        {
                          "text": "Tested 5 URLs from /states/sitemap-states.xml\n"
                        },
                        {
                          "text": "Tested 5 URLs from states sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.121Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/sitemap-sitemap-URL-valida-e7685-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-2974a6e40c0ee82198bf",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 321,
              "column": 7
            },
            {
              "title": "elections sitemap - sample URLs resolve",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 15,
                      "status": "passed",
                      "duration": 399,
                      "errors": [],
                      "stdout": [
                        {
                          "text": "Found 25 URLs in /elections/sitemap-elections.xml\n"
                        },
                        {
                          "text": "[sample seed=a8df286] /elections/sitemap-elections.xml: https://us.elect.info/elections/1998/, https://us.elect.info/elections/1988/, https://us.elect.info/elections/2026/, https://us.elect.info/elections/1990/, https://us.elect.info/elections/2020/\n"
                        },
                        {
                          "text": "Testing page: /elections/1998/\n"
                        },
                        {
                          "text": "Testing page: /elections/1988/\n"
                        },
                        {
                          "text": "Testing page: /elections/2026/\n"
                        },
                        {
                          "text": "Testing page: /elections/1990/\n"
                        },
                        {
                          "text": "Testing page: /elections/2020/\n"
                        },
                        {
                          "text": "Tested 5 URLs from /elections/sitemap-elections.xml\n"
                        },
                        {
                          "text": "Tested 5 URLs from elections sitemap\n"
                        }
                      ],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:46.518Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/sitemap-sitemap-URL-valida-cf8a5-temap---sample-URLs-resolve-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "445aeafbdc2b94cf9bb3-869ad0437e25b2768dea",
              "file": "tests/ui/sitemap.spec.ts",
              "line": 337,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/us.spec.ts",
      "file": "tests/ui/us.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "us.elect.info",
          "file": "tests/ui/us.spec.ts",
          "line": 3,
          "column": 6,
          "specs": [
            {
              "title": "homepage loads with title",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 16,
                      "status": "passed",
                      "duration": 319,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.032Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/us-us-elect-info-homepage-loads-with-title-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-8afeb95d04c94adeed96",
              "file": "tests/ui/us.spec.ts",
              "line": 4,
              "column": 7
            },
            {
              "title": "entity stats display",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 16,
                      "status": "passed",
                      "duration": 196,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.618Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/us-us-elect-info-entity-stats-display-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-49e351c56a50ed35776c",
              "file": "tests/ui/us.spec.ts",
              "line": 10,
              "column": 7
            },
            {
              "title": "CSS assets load",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 16,
                      "status": "passed",
                      "duration": 121,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.832Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/us-us-elect-info-CSS-assets-load-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-9f6402d7bf0b7a821851",
              "file": "tests/ui/us.spec.ts",
              "line": 16,
              "column": 7
            },
            {
              "title": "JS assets load",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 16,
                      "status": "passed",
                      "duration": 143,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.970Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/us-us-elect-info-JS-assets-load-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-6e13cf9f04841582af4e",
              "file": "tests/ui/us.spec.ts",
              "line": 21,
              "column": 7
            },
            {
              "title": "404 page works",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 15,
                      "parallelIndex": 16,
                      "status": "passed",
                      "duration": 112,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:43.130Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/a8df286/us/test-output/us-us-elect-info-404-page-works-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-f161db786bfcba883987",
              "file": "tests/ui/us.spec.ts",
              "line": 27,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/visitor-token.spec.ts",
      "file": "tests/ui/visitor-token.spec.ts",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "visitor-token gate",
          "file": "tests/ui/visitor-token.spec.ts",
          "line": 27,
          "column": 6,
          "specs": [
            {
              "title": "GET /api/token sets an HttpOnly token and a readable expiry",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this target has no visitor-token gate",
                      "location": {
                        "file": "/app/tests/ui/visitor-token.spec.ts",
                        "line": 31,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 16,
                      "parallelIndex": 17,
                      "status": "skipped",
                      "duration": 36,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.055Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this target has no visitor-token gate",
                          "location": {
                            "file": "/app/tests/ui/visitor-token.spec.ts",
                            "line": 31,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "66d11097bc5ff2c625f4-6a345a67524e2f99f69c",
              "file": "tests/ui/visitor-token.spec.ts",
              "line": 28,
              "column": 7
            },
            {
              "title": "without a token, /api/graphql answers 401",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this target has no visitor-token gate",
                      "location": {
                        "file": "/app/tests/ui/visitor-token.spec.ts",
                        "line": 44,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 16,
                      "parallelIndex": 17,
                      "status": "skipped",
                      "duration": 116,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.140Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this target has no visitor-token gate",
                          "location": {
                            "file": "/app/tests/ui/visitor-token.spec.ts",
                            "line": 44,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "66d11097bc5ff2c625f4-f396d27256170349746e",
              "file": "tests/ui/visitor-token.spec.ts",
              "line": 43,
              "column": 7
            },
            {
              "title": "an anon token runs persisted documents and nothing else",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this target has no visitor-token gate",
                      "location": {
                        "file": "/app/tests/ui/visitor-token.spec.ts",
                        "line": 56,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 16,
                      "parallelIndex": 17,
                      "status": "skipped",
                      "duration": 13,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.279Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this target has no visitor-token gate",
                          "location": {
                            "file": "/app/tests/ui/visitor-token.spec.ts",
                            "line": 56,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "66d11097bc5ff2c625f4-fb37317a2cef824e3dad",
              "file": "tests/ui/visitor-token.spec.ts",
              "line": 55,
              "column": 7
            }
          ]
        },
        {
          "title": "donor records are premium",
          "file": "tests/ui/visitor-token.spec.ts",
          "line": 84,
          "column": 6,
          "specs": [
            {
              "title": "an anonymous visitor gets the premium notice on Individual Donors",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this target has no visitor-token gate",
                      "location": {
                        "file": "/app/tests/ui/visitor-token.spec.ts",
                        "line": 86,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 16,
                      "parallelIndex": 17,
                      "status": "skipped",
                      "duration": 10,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.323Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this target has no visitor-token gate",
                          "location": {
                            "file": "/app/tests/ui/visitor-token.spec.ts",
                            "line": 86,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "66d11097bc5ff2c625f4-c8ffc6d48edd62fa84f1",
              "file": "tests/ui/visitor-token.spec.ts",
              "line": 89,
              "column": 7
            },
            {
              "title": "an anonymous visitor sees employer totals but not donor names",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "this target has no visitor-token gate",
                      "location": {
                        "file": "/app/tests/ui/visitor-token.spec.ts",
                        "line": 86,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 16,
                      "parallelIndex": 17,
                      "status": "skipped",
                      "duration": 8,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.350Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "this target has no visitor-token gate",
                          "location": {
                            "file": "/app/tests/ui/visitor-token.spec.ts",
                            "line": 86,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "66d11097bc5ff2c625f4-70bd87774f0fc06f5206",
              "file": "tests/ui/visitor-token.spec.ts",
              "line": 95,
              "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": [
                    {
                      "type": "skip",
                      "description": "the API behind this host does not serve voters yet",
                      "location": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "line": 27,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 17,
                      "parallelIndex": 18,
                      "status": "skipped",
                      "duration": 41,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.074Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host does not serve voters yet",
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "line": 27,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "6970ccac81a50c81e377-5353dc9ff6280b8b8ce8",
              "file": "tests/ui/voters.spec.ts",
              "line": 30,
              "column": 7
            },
            {
              "title": "a premium visitor token reads voters through /api/graphql",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host does not serve voters yet",
                      "location": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "line": 27,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 17,
                      "parallelIndex": 18,
                      "status": "skipped",
                      "duration": 19,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.172Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host does not serve voters yet",
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "line": 27,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "6970ccac81a50c81e377-7fde10790fe436f2ce41",
              "file": "tests/ui/voters.spec.ts",
              "line": 55,
              "column": 7
            },
            {
              "title": "/voters/api/graphql answers voter queries and only POST",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host does not serve voters yet",
                      "location": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "line": 27,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 17,
                      "parallelIndex": 18,
                      "status": "skipped",
                      "duration": 42,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.205Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host does not serve voters yet",
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "line": 27,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host does not serve voters yet",
                      "location": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "line": 27,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 17,
                      "parallelIndex": 18,
                      "status": "skipped",
                      "duration": 28,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.260Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host does not serve voters yet",
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "line": 27,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "6970ccac81a50c81e377-0c1aedbfd096b779cf2a",
              "file": "tests/ui/voters.spec.ts",
              "line": 74,
              "column": 7
            },
            {
              "title": "search needs every term: name plus city",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host does not serve voters yet",
                      "location": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "line": 27,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 17,
                      "parallelIndex": 18,
                      "status": "skipped",
                      "duration": 19,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.305Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host does not serve voters yet",
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "line": 27,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host does not serve voters yet",
                      "location": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "line": 27,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 17,
                      "parallelIndex": 18,
                      "status": "skipped",
                      "duration": 13,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.351Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host does not serve voters yet",
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "line": 27,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "6970ccac81a50c81e377-715d172cd99b39041bec",
              "file": "tests/ui/voters.spec.ts",
              "line": 100,
              "column": 7
            },
            {
              "title": "filters combine, count matches and survive a reload",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host does not serve voters yet",
                      "location": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "line": 27,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 17,
                      "parallelIndex": 18,
                      "status": "skipped",
                      "duration": 13,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.385Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host does not serve voters yet",
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "line": 27,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "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": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host does not serve voters yet",
                      "location": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "line": 27,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 17,
                      "parallelIndex": 18,
                      "status": "skipped",
                      "duration": 10,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.416Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host does not serve voters yet",
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "line": 27,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "6970ccac81a50c81e377-8448f6ea1dd523d04da6",
              "file": "tests/ui/voters.spec.ts",
              "line": 126,
              "column": 7
            },
            {
              "title": "an unknown voter id renders Not Found",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [
                    {
                      "type": "skip",
                      "description": "the API behind this host does not serve voters yet",
                      "location": {
                        "file": "/app/tests/ui/voters.spec.ts",
                        "line": 27,
                        "column": 10
                      }
                    }
                  ],
                  "expectedStatus": "skipped",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 17,
                      "parallelIndex": 18,
                      "status": "skipped",
                      "duration": 11,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-15T02:58:42.444Z",
                      "annotations": [
                        {
                          "type": "skip",
                          "description": "the API behind this host does not serve voters yet",
                          "location": {
                            "file": "/app/tests/ui/voters.spec.ts",
                            "line": 27,
                            "column": 10
                          }
                        }
                      ],
                      "attachments": []
                    }
                  ],
                  "status": "skipped"
                }
              ],
              "id": "6970ccac81a50c81e377-e0441edf222b4f45ecb0",
              "file": "tests/ui/voters.spec.ts",
              "line": 134,
              "column": 7
            }
          ]
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-10-15T02:58:40.753Z",
    "duration": 1289706.52,
    "expected": 133,
    "skipped": 49,
    "unexpected": 33,
    "flaky": 0
  }
}