{
  "config": {
    "argv": [
      "/usr/bin/node",
      "/app/node_modules/.bin/playwright",
      "test",
      "us.spec.ts",
      "layout.spec.ts",
      "disabled-pages.spec.ts",
      "money-flow.spec.ts",
      "entity-graph.spec.ts",
      "--project=ui",
      "--output=/workspace/artifacts/17484ec/us-preview/test-output"
    ],
    "configFile": "/app/playwright.config.ts",
    "rootDir": "/app",
    "failOnFlakyTests": false,
    "forbidOnly": false,
    "fullyParallel": false,
    "globalSetup": null,
    "globalTeardown": null,
    "globalTimeout": 0,
    "grep": {},
    "grepInvert": null,
    "maxFailures": 0,
    "metadata": {
      "actualWorkers": 5
    },
    "preserveOutput": "always",
    "projects": [
      {
        "outputDir": "/workspace/artifacts/17484ec/us-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 5
        },
        "id": "ui",
        "name": "ui",
        "testDir": "/app/tests/ui",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      },
      {
        "outputDir": "/workspace/artifacts/17484ec/us-preview/test-output",
        "repeatEach": 1,
        "retries": 2,
        "metadata": {
          "actualWorkers": 5
        },
        "id": "api",
        "name": "api",
        "testDir": "/app/tests/api",
        "testIgnore": [],
        "testMatch": [
          "**/*.spec.ts"
        ],
        "timeout": 30000
      }
    ],
    "quiet": false,
    "reporter": [
      [
        "html",
        {
          "outputFolder": "/workspace/artifacts/17484ec/us-preview/reports/html",
          "open": "never"
        }
      ],
      [
        "json",
        {
          "outputFile": "/workspace/artifacts/17484ec/us-preview/reports/results.json"
        }
      ],
      [
        "list",
        null
      ]
    ],
    "reportSlowTests": {
      "max": 5,
      "threshold": 300000
    },
    "shard": null,
    "tags": [],
    "updateSnapshots": "missing",
    "updateSourceMethod": "patch",
    "version": "1.63.0",
    "workers": 32,
    "webServer": null
  },
  "suites": [
    {
      "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": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 122,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.378Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-en-15012-es-contributors-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-eeaf2a96904f5fab5855",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/contributors/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 108,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.699Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-en-15012-es-contributors-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-4ef4084687b4fd401e0e",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/contributors/any-entity-id/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 134,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.838Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-en-dad75-s-any-entity-id-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-e3ed295c83582d4283c6",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "homepage has no link or visible card for /contributors/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 215,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.990Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-en-a3004-ible-card-for-contributors--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-dc932c58cabd7e95e978",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 17,
              "column": 9
            },
            {
              "title": "/codesources returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 102,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.217Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-entity-pages-codesources-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-fb06178d006e6578315a",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/codesources/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 83,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.335Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-entity-pages-codesources-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-8235710cd0b53cf94f3d",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "/codesources/any-entity-id/ returns 404",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 87,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.434Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-en-808a2-s-any-entity-id-returns-404-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-d46c47f30cca6317f3ef",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 11,
              "column": 11
            },
            {
              "title": "homepage has no link or visible card for /codesources/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 166,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.532Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-en-269ae-sible-card-for-codesources--ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-315ac629d40ead7d7e3f",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 17,
              "column": 9
            },
            {
              "title": "homepage still shows enabled entity cards",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 200,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.712Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-en-839ee--shows-enabled-entity-cards-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-9cd10ec808f3bc4b54f0",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 24,
              "column": 7
            },
            {
              "title": "homepage loads without script errors",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 804,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.925Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-en-9b095-loads-without-script-errors-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-4bdcb6be185099980649",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 31,
              "column": 7
            },
            {
              "title": "disabled-pages runtime script is served",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 122,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:48.740Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/disabled-pages-disabled-en-07214-es-runtime-script-is-served-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "76b2ced8126cfc1f8d6e-41968bac84ec1d02c2e6",
              "file": "tests/ui/disabled-pages.spec.ts",
              "line": 39,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/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": 20,
          "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": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 540,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.394Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-29e66cb8f40124191f24",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 22,
              "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": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 14,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.978Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-8caee27d666b889f629d",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 22,
              "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": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 12,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.011Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-b079643ce2eb264e4473",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "not injected on /elections/2024/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 10,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.034Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-a1eb6278fed6d4b5614b",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 30,
              "column": 9
            },
            {
              "title": "not injected on /offices/president/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "passed",
                      "duration": 12,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.057Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "23d9f129c21032742001-b3bac75bfbf090c5eca2",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 30,
              "column": 9
            }
          ]
        },
        {
          "title": "entityGraph API",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 38,
          "column": 6,
          "specs": [
            {
              "title": "C00010603: neighbours without individuals, money edges with amounts",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 1,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 18,
                      "error": {
                        "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n",
                        "stack": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n    at /app/tests/ui/entity-graph.spec.ts:41:33",
                        "location": {
                          "file": "/app/tests/ui/entity-graph.spec.ts",
                          "column": 33,
                          "line": 41
                        },
                        "snippet": "\u001b[0m \u001b[90m 39 |\u001b[39m   \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m fecId \u001b[36mof\u001b[39m [\u001b[32m'C00010603'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'P00009423'\u001b[39m]) {\n \u001b[90m 40 |\u001b[39m     test(\u001b[32m`${fecId}: neighbours without individuals, money edges with amounts`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ request }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 41 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39mpost(\u001b[32m'/api/graphql'\u001b[39m\u001b[33m,\u001b[39m {\n \u001b[90m    |\u001b[39m                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 42 |\u001b[39m         data\u001b[33m:\u001b[39m {\n \u001b[90m 43 |\u001b[39m           query\u001b[33m:\u001b[39m \u001b[32m'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }'\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 44 |\u001b[39m           variables\u001b[33m:\u001b[39m { f\u001b[33m:\u001b[39m fecId }\u001b[33m,\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 33,
                            "line": 41
                          },
                          "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n\n  39 |   for (const fecId of ['C00010603', 'P00009423']) {\n  40 |     test(`${fecId}: neighbours without individuals, money edges with amounts`, async ({ request }) => {\n> 41 |       const res = await request.post('/api/graphql', {\n     |                                 ^\n  42 |         data: {\n  43 |           query: 'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }',\n  44 |           variables: { f: fecId },\n    at /app/tests/ui/entity-graph.spec.ts:41:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.077Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entityGraph-A-ce113-ls-money-edges-with-amounts-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entity-graph.spec.ts",
                        "column": 33,
                        "line": 41
                      }
                    },
                    {
                      "workerIndex": 5,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 53,
                      "error": {
                        "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n",
                        "stack": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n    at /app/tests/ui/entity-graph.spec.ts:41:33",
                        "location": {
                          "file": "/app/tests/ui/entity-graph.spec.ts",
                          "column": 33,
                          "line": 41
                        },
                        "snippet": "\u001b[0m \u001b[90m 39 |\u001b[39m   \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m fecId \u001b[36mof\u001b[39m [\u001b[32m'C00010603'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'P00009423'\u001b[39m]) {\n \u001b[90m 40 |\u001b[39m     test(\u001b[32m`${fecId}: neighbours without individuals, money edges with amounts`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ request }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 41 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39mpost(\u001b[32m'/api/graphql'\u001b[39m\u001b[33m,\u001b[39m {\n \u001b[90m    |\u001b[39m                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 42 |\u001b[39m         data\u001b[33m:\u001b[39m {\n \u001b[90m 43 |\u001b[39m           query\u001b[33m:\u001b[39m \u001b[32m'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }'\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 44 |\u001b[39m           variables\u001b[33m:\u001b[39m { f\u001b[33m:\u001b[39m fecId }\u001b[33m,\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 33,
                            "line": 41
                          },
                          "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n\n  39 |   for (const fecId of ['C00010603', 'P00009423']) {\n  40 |     test(`${fecId}: neighbours without individuals, money edges with amounts`, async ({ request }) => {\n> 41 |       const res = await request.post('/api/graphql', {\n     |                                 ^\n  42 |         data: {\n  43 |           query: 'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }',\n  44 |           variables: { f: fecId },\n    at /app/tests/ui/entity-graph.spec.ts:41:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-14T03:18:47.598Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entityGraph-A-ce113-ls-money-edges-with-amounts-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entityGraph-A-ce113-ls-money-edges-with-amounts-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entity-graph.spec.ts",
                        "column": 33,
                        "line": 41
                      }
                    },
                    {
                      "workerIndex": 6,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 38,
                      "error": {
                        "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n",
                        "stack": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n    at /app/tests/ui/entity-graph.spec.ts:41:33",
                        "location": {
                          "file": "/app/tests/ui/entity-graph.spec.ts",
                          "column": 33,
                          "line": 41
                        },
                        "snippet": "\u001b[0m \u001b[90m 39 |\u001b[39m   \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m fecId \u001b[36mof\u001b[39m [\u001b[32m'C00010603'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'P00009423'\u001b[39m]) {\n \u001b[90m 40 |\u001b[39m     test(\u001b[32m`${fecId}: neighbours without individuals, money edges with amounts`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ request }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 41 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39mpost(\u001b[32m'/api/graphql'\u001b[39m\u001b[33m,\u001b[39m {\n \u001b[90m    |\u001b[39m                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 42 |\u001b[39m         data\u001b[33m:\u001b[39m {\n \u001b[90m 43 |\u001b[39m           query\u001b[33m:\u001b[39m \u001b[32m'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }'\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 44 |\u001b[39m           variables\u001b[33m:\u001b[39m { f\u001b[33m:\u001b[39m fecId }\u001b[33m,\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 33,
                            "line": 41
                          },
                          "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n\n  39 |   for (const fecId of ['C00010603', 'P00009423']) {\n  40 |     test(`${fecId}: neighbours without individuals, money edges with amounts`, async ({ request }) => {\n> 41 |       const res = await request.post('/api/graphql', {\n     |                                 ^\n  42 |         data: {\n  43 |           query: 'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }',\n  44 |           variables: { f: fecId },\n    at /app/tests/ui/entity-graph.spec.ts:41:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-14T03:18:48.207Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entityGraph-A-ce113-ls-money-edges-with-amounts-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entity-graph.spec.ts",
                        "column": 33,
                        "line": 41
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "23d9f129c21032742001-b3fdec8c25bff91f5112",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 40,
              "column": 9
            },
            {
              "title": "P00009423: neighbours without individuals, money edges with amounts",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 7,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 39,
                      "error": {
                        "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n",
                        "stack": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n    at /app/tests/ui/entity-graph.spec.ts:41:33",
                        "location": {
                          "file": "/app/tests/ui/entity-graph.spec.ts",
                          "column": 33,
                          "line": 41
                        },
                        "snippet": "\u001b[0m \u001b[90m 39 |\u001b[39m   \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m fecId \u001b[36mof\u001b[39m [\u001b[32m'C00010603'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'P00009423'\u001b[39m]) {\n \u001b[90m 40 |\u001b[39m     test(\u001b[32m`${fecId}: neighbours without individuals, money edges with amounts`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ request }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 41 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39mpost(\u001b[32m'/api/graphql'\u001b[39m\u001b[33m,\u001b[39m {\n \u001b[90m    |\u001b[39m                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 42 |\u001b[39m         data\u001b[33m:\u001b[39m {\n \u001b[90m 43 |\u001b[39m           query\u001b[33m:\u001b[39m \u001b[32m'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }'\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 44 |\u001b[39m           variables\u001b[33m:\u001b[39m { f\u001b[33m:\u001b[39m fecId }\u001b[33m,\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 33,
                            "line": 41
                          },
                          "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n\n  39 |   for (const fecId of ['C00010603', 'P00009423']) {\n  40 |     test(`${fecId}: neighbours without individuals, money edges with amounts`, async ({ request }) => {\n> 41 |       const res = await request.post('/api/graphql', {\n     |                                 ^\n  42 |         data: {\n  43 |           query: 'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }',\n  44 |           variables: { f: fecId },\n    at /app/tests/ui/entity-graph.spec.ts:41:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:49.148Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entityGraph-A-02286-ls-money-edges-with-amounts-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entity-graph.spec.ts",
                        "column": 33,
                        "line": 41
                      }
                    },
                    {
                      "workerIndex": 8,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 56,
                      "error": {
                        "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n",
                        "stack": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n    at /app/tests/ui/entity-graph.spec.ts:41:33",
                        "location": {
                          "file": "/app/tests/ui/entity-graph.spec.ts",
                          "column": 33,
                          "line": 41
                        },
                        "snippet": "\u001b[0m \u001b[90m 39 |\u001b[39m   \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m fecId \u001b[36mof\u001b[39m [\u001b[32m'C00010603'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'P00009423'\u001b[39m]) {\n \u001b[90m 40 |\u001b[39m     test(\u001b[32m`${fecId}: neighbours without individuals, money edges with amounts`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ request }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 41 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39mpost(\u001b[32m'/api/graphql'\u001b[39m\u001b[33m,\u001b[39m {\n \u001b[90m    |\u001b[39m                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 42 |\u001b[39m         data\u001b[33m:\u001b[39m {\n \u001b[90m 43 |\u001b[39m           query\u001b[33m:\u001b[39m \u001b[32m'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }'\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 44 |\u001b[39m           variables\u001b[33m:\u001b[39m { f\u001b[33m:\u001b[39m fecId }\u001b[33m,\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 33,
                            "line": 41
                          },
                          "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n\n  39 |   for (const fecId of ['C00010603', 'P00009423']) {\n  40 |     test(`${fecId}: neighbours without individuals, money edges with amounts`, async ({ request }) => {\n> 41 |       const res = await request.post('/api/graphql', {\n     |                                 ^\n  42 |         data: {\n  43 |           query: 'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }',\n  44 |           variables: { f: fecId },\n    at /app/tests/ui/entity-graph.spec.ts:41:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-14T03:18:49.712Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entityGraph-A-02286-ls-money-edges-with-amounts-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entityGraph-A-02286-ls-money-edges-with-amounts-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entity-graph.spec.ts",
                        "column": 33,
                        "line": 41
                      }
                    },
                    {
                      "workerIndex": 9,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 34,
                      "error": {
                        "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n",
                        "stack": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n    at /app/tests/ui/entity-graph.spec.ts:41:33",
                        "location": {
                          "file": "/app/tests/ui/entity-graph.spec.ts",
                          "column": 33,
                          "line": 41
                        },
                        "snippet": "\u001b[0m \u001b[90m 39 |\u001b[39m   \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m fecId \u001b[36mof\u001b[39m [\u001b[32m'C00010603'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'P00009423'\u001b[39m]) {\n \u001b[90m 40 |\u001b[39m     test(\u001b[32m`${fecId}: neighbours without individuals, money edges with amounts`\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ request }) \u001b[33m=>\u001b[39m {\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 41 |\u001b[39m       \u001b[36mconst\u001b[39m res \u001b[33m=\u001b[39m \u001b[36mawait\u001b[39m request\u001b[33m.\u001b[39mpost(\u001b[32m'/api/graphql'\u001b[39m\u001b[33m,\u001b[39m {\n \u001b[90m    |\u001b[39m                                 \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 42 |\u001b[39m         data\u001b[33m:\u001b[39m {\n \u001b[90m 43 |\u001b[39m           query\u001b[33m:\u001b[39m \u001b[32m'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }'\u001b[39m\u001b[33m,\u001b[39m\n \u001b[90m 44 |\u001b[39m           variables\u001b[33m:\u001b[39m { f\u001b[33m:\u001b[39m fecId }\u001b[33m,\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 33,
                            "line": 41
                          },
                          "message": "Error: apiRequestContext.post: socket hang up\nCall log:\n\u001b[2m  - → POST http://preview-us-elect-info.electinfo.svc.cluster.local/api/graphql\u001b[22m\n\u001b[2m    - user-agent: Playwright/1.63.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\u001b[2m    - content-type: application/json\u001b[22m\n\u001b[2m    - content-length: 165\u001b[22m\n\n\n  39 |   for (const fecId of ['C00010603', 'P00009423']) {\n  40 |     test(`${fecId}: neighbours without individuals, money edges with amounts`, async ({ request }) => {\n> 41 |       const res = await request.post('/api/graphql', {\n     |                                 ^\n  42 |         data: {\n  43 |           query: 'query($f: String!) { entityGraph(fecId: $f) { focalId nodes { id label labels focal displayName } edges { type amount } } }',\n  44 |           variables: { f: fecId },\n    at /app/tests/ui/entity-graph.spec.ts:41:33"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-14T03:18:50.323Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entityGraph-A-02286-ls-money-edges-with-amounts-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/entity-graph.spec.ts",
                        "column": 33,
                        "line": 41
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "23d9f129c21032742001-dd19f11790f289a6f255",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 40,
              "column": 9
            }
          ]
        },
        {
          "title": "entity-graph pop-over",
          "file": "tests/ui/entity-graph.spec.ts",
          "line": 60,
          "column": 6,
          "specs": [
            {
              "title": "opens and draws on /committees/a75a9110-f1db-a945-39a8-7503ed3c04da/",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30117,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 65,
                            "line": 71
                          },
                          "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('dialog.eg-dialog').locator('.eg-canvas canvas').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('dialog.eg-dialog').locator('.eg-canvas canvas').first() with timeout 60000ms\u001b[22m\n\u001b[2m  - waiting for locator('dialog.eg-dialog').locator('.eg-canvas canvas').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  69 |       const dialog = page.locator('dialog.eg-dialog');\n  70 |       await expect(dialog).toBeVisible();\n> 71 |       await expect(dialog.locator('.eg-canvas canvas').first()).toBeVisible({ timeout: 60000 });\n     |                                                                 ^\n  72 |       // centred in the viewport, horizontally and vertically\n  73 |       const box = (await dialog.boundingBox())!;\n  74 |       const vp = page.viewportSize()!;\n    at /app/tests/ui/entity-graph.spec.ts:71:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:50.912Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--d0dba-1db-a945-39a8-7503ed3c04da--ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--d0dba-1db-a945-39a8-7503ed3c04da--ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 13,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 31608,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 65,
                            "line": 71
                          },
                          "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('dialog.eg-dialog').locator('.eg-canvas canvas').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('dialog.eg-dialog').locator('.eg-canvas canvas').first() with timeout 60000ms\u001b[22m\n\u001b[2m  - waiting for locator('dialog.eg-dialog').locator('.eg-canvas canvas').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  69 |       const dialog = page.locator('dialog.eg-dialog');\n  70 |       await expect(dialog).toBeVisible();\n> 71 |       await expect(dialog.locator('.eg-canvas canvas').first()).toBeVisible({ timeout: 60000 });\n     |                                                                 ^\n  72 |       // centred in the viewport, horizontally and vertically\n  73 |       const box = (await dialog.boundingBox())!;\n  74 |       const vp = page.viewportSize()!;\n    at /app/tests/ui/entity-graph.spec.ts:71:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-14T03:19:21.884Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--d0dba-1db-a945-39a8-7503ed3c04da--ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--d0dba-1db-a945-39a8-7503ed3c04da--ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--d0dba-1db-a945-39a8-7503ed3c04da--ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--d0dba-1db-a945-39a8-7503ed3c04da--ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 16,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 31874,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 65,
                            "line": 71
                          },
                          "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('dialog.eg-dialog').locator('.eg-canvas canvas').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('dialog.eg-dialog').locator('.eg-canvas canvas').first() with timeout 60000ms\u001b[22m\n\u001b[2m  - waiting for locator('dialog.eg-dialog').locator('.eg-canvas canvas').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  69 |       const dialog = page.locator('dialog.eg-dialog');\n  70 |       await expect(dialog).toBeVisible();\n> 71 |       await expect(dialog.locator('.eg-canvas canvas').first()).toBeVisible({ timeout: 60000 });\n     |                                                                 ^\n  72 |       // centred in the viewport, horizontally and vertically\n  73 |       const box = (await dialog.boundingBox())!;\n  74 |       const vp = page.viewportSize()!;\n    at /app/tests/ui/entity-graph.spec.ts:71:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-14T03:19:54.227Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--d0dba-1db-a945-39a8-7503ed3c04da--ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--d0dba-1db-a945-39a8-7503ed3c04da--ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "23d9f129c21032742001-759bfd2643a325762edb",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 62,
              "column": 9
            },
            {
              "title": "opens and draws on /candidates/a8897257-430c-2bf3-4498-349021b09ca3/",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 18,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30202,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 65,
                            "line": 71
                          },
                          "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('dialog.eg-dialog').locator('.eg-canvas canvas').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('dialog.eg-dialog').locator('.eg-canvas canvas').first() with timeout 60000ms\u001b[22m\n\u001b[2m  - waiting for locator('dialog.eg-dialog').locator('.eg-canvas canvas').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  69 |       const dialog = page.locator('dialog.eg-dialog');\n  70 |       await expect(dialog).toBeVisible();\n> 71 |       await expect(dialog.locator('.eg-canvas canvas').first()).toBeVisible({ timeout: 60000 });\n     |                                                                 ^\n  72 |       // centred in the viewport, horizontally and vertically\n  73 |       const box = (await dialog.boundingBox())!;\n  74 |       const vp = page.viewportSize()!;\n    at /app/tests/ui/entity-graph.spec.ts:71:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:20:26.748Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--c0375-30c-2bf3-4498-349021b09ca3--ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--c0375-30c-2bf3-4498-349021b09ca3--ui/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 21,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 31527,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 65,
                            "line": 71
                          },
                          "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('dialog.eg-dialog').locator('.eg-canvas canvas').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('dialog.eg-dialog').locator('.eg-canvas canvas').first() with timeout 60000ms\u001b[22m\n\u001b[2m  - waiting for locator('dialog.eg-dialog').locator('.eg-canvas canvas').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  69 |       const dialog = page.locator('dialog.eg-dialog');\n  70 |       await expect(dialog).toBeVisible();\n> 71 |       await expect(dialog.locator('.eg-canvas canvas').first()).toBeVisible({ timeout: 60000 });\n     |                                                                 ^\n  72 |       // centred in the viewport, horizontally and vertically\n  73 |       const box = (await dialog.boundingBox())!;\n  74 |       const vp = page.viewportSize()!;\n    at /app/tests/ui/entity-graph.spec.ts:71:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-14T03:20:57.874Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--c0375-30c-2bf3-4498-349021b09ca3--ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--c0375-30c-2bf3-4498-349021b09ca3--ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--c0375-30c-2bf3-4498-349021b09ca3--ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--c0375-30c-2bf3-4498-349021b09ca3--ui-retry1/trace.zip"
                        }
                      ]
                    },
                    {
                      "workerIndex": 24,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30093,
                      "error": {
                        "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m",
                        "stack": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                      },
                      "errors": [
                        {
                          "message": "\u001b[31mTest timeout of 30000ms exceeded.\u001b[39m"
                        },
                        {
                          "location": {
                            "file": "/app/tests/ui/entity-graph.spec.ts",
                            "column": 65,
                            "line": 71
                          },
                          "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('dialog.eg-dialog').locator('.eg-canvas canvas').first()\nExpected: visible\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" locator('dialog.eg-dialog').locator('.eg-canvas canvas').first() with timeout 60000ms\u001b[22m\n\u001b[2m  - waiting for locator('dialog.eg-dialog').locator('.eg-canvas canvas').first()\u001b[22m\n\u001b[2m  - Test timeout of 30000ms exceeded.\u001b[22m\n\n\n  69 |       const dialog = page.locator('dialog.eg-dialog');\n  70 |       await expect(dialog).toBeVisible();\n> 71 |       await expect(dialog.locator('.eg-canvas canvas').first()).toBeVisible({ timeout: 60000 });\n     |                                                                 ^\n  72 |       // centred in the viewport, horizontally and vertically\n  73 |       const box = (await dialog.boundingBox())!;\n  74 |       const vp = page.viewportSize()!;\n    at /app/tests/ui/entity-graph.spec.ts:71:65"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-14T03:21:30.111Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--c0375-30c-2bf3-4498-349021b09ca3--ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/entity-graph-entity-graph--c0375-30c-2bf3-4498-349021b09ca3--ui-retry2/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "23d9f129c21032742001-d147fc999d701bc54cf5",
              "file": "tests/ui/entity-graph.spec.ts",
              "line": 62,
              "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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 174,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.424Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-f9a0f--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-b103aceb46d9e33c607c",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/candidates/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 161,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.761Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-e1535--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-501813caa83ee6ffddae",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/committees/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 166,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.940Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-f8e77--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-de18f184843b0fae568d",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/districts/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 872,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.120Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-35cf0--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-1f26499e48b19f3c5079",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/elections/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 154,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:48.004Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-95621--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-199799185e5210591ab4",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/employers/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 550,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:48.171Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-7159b--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-2140f49bb861fe7bbe46",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/individuals/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 190,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:48.736Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 138,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:48.940Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-93081--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-4e481b7b1ad5efb291d8",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/vendors/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 159,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:49.088Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-3b19b--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-88452699ffd4b556e70b",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/counties/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 429,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:49.258Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-00485--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-6758f7f476db88956d39",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/places/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 352,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:49.700Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-places-loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-f549dc77f989ce03913a",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/precincts/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 421,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:50.063Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-03eaf--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-2b94cf26eef28c61b95a",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/tracts/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 694,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:50.495Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-tracts-loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-6f56d03ec531675b43bb",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/postalcodes/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 353,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:51.203Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-2fbed--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-cec77f76cc935aa28244",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/blocks/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 416,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:51.570Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 433,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:52.000Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-states-loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-cb2a9d49b945fcadff5b",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/datasources/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 128,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:52.448Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-d7e7f--loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-e15a22bb0b0e0b8702da",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            },
            {
              "title": "/ loads with correct heading",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 560,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:52.592Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-landing-page-layout-loads-with-correct-heading-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-b3bb4507b2ed87666026",
              "file": "tests/ui/layout.spec.ts",
              "line": 36,
              "column": 9
            }
          ]
        },
        {
          "title": "entity index layout - search UI above results",
          "file": "tests/ui/layout.spec.ts",
          "line": 43,
          "column": 6,
          "specs": [
            {
              "title": "/offices/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 157,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:53.166Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-d0829--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-2f959d27c43f09851847",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/candidates/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 149,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:53.332Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-5cf92--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-00076dbe4f0c22864078",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/committees/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 136,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:53.491Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-f16d0--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-0fe38d5384d0548662ad",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/districts/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 422,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:53.639Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-59044--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-5648e4a82b3c14f4b29a",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/elections/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 138,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:54.078Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-069e9--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-baff7226ae19ee1c41c4",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/employers/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 329,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:54.228Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-0759c--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-f8acbc052c6aa8109879",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/individuals/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 211,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:54.572Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 278,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:54.797Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-06b7d--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-c3c8681cb3628cf835f3",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/vendors/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 153,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:55.084Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-0b4b4--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-fdfc262d12f616388ed5",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/counties/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 395,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:55.249Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-cc2cb--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-fd21bba6e2c81307bfbb",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/places/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 434,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:55.658Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-03981--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-dc93ee5eb496af9f132d",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/precincts/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 417,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:56.102Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-b2a82--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-b398a97535a50c3906a3",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/tracts/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 388,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:56.528Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-819d4--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-f1e37aa61dc45b736499",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/postalcodes/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 511,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:56.926Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-7b0e8--search-description-in-main-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-c665f4d02c3670bb60f1",
              "file": "tests/ui/layout.spec.ts",
              "line": 45,
              "column": 9
            },
            {
              "title": "/blocks/ has no static search description in main",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 462,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:57.450Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/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": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 143,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:57.924Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-59504--appears-before-main-in-DOM-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-025db2696f459ca9ce93",
              "file": "tests/ui/layout.spec.ts",
              "line": 56,
              "column": 7
            },
            {
              "title": "candidates - search container appears before main in DOM",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 2,
                      "status": "passed",
                      "duration": 163,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:58.078Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/layout-entity-index-layout-729a8--appears-before-main-in-DOM-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "9f98fd8c8d1538f5ebbb-fc645687ac9b64d16a9d",
              "file": "tests/ui/layout.spec.ts",
              "line": 71,
              "column": 7
            }
          ]
        }
      ]
    },
    {
      "title": "tests/ui/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": 24,
          "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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 83,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.387Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-ac19bd19a112bbc633b9",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 26,
              "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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 60,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.511Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-1e24093b4e753edfa81f",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 26,
              "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": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 23,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.589Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-7a4f8e57d8a34b965055",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 35,
              "column": 9
            },
            {
              "title": "not injected on /elections/2024/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 227,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.622Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-2dcd02a112846a1c74ab",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 35,
              "column": 9
            },
            {
              "title": "not injected on /offices/president/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 50,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.860Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-a7c67ffeb658d5760d58",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 35,
              "column": 9
            },
            {
              "title": "not injected on /districts/ak/00/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "passed",
                      "duration": 28,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.920Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-70d1251eabbd50eef434",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 35,
              "column": 9
            }
          ]
        },
        {
          "title": "money-flow card toggle",
          "file": "tests/ui/money-flow.spec.ts",
          "line": 43,
          "column": 6,
          "specs": [
            {
              "title": "committee: each money card defaults to the Sankey",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 3,
                      "parallelIndex": 3,
                      "status": "failed",
                      "duration": 15260,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:50:62",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 62,
                          "line": 50
                        },
                        "snippet": "\u001b[0m \u001b[90m 48 |\u001b[39m     \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m id \u001b[36mof\u001b[39m [\u001b[32m'incoming'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'outgoing'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'funded'\u001b[39m]) {\n \u001b[90m 49 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${id}`\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 50 |\u001b[39m       \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'.money-flow-chart canvas'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                              \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 51 |\u001b[39m       \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'.mf-view-btn[data-view=\"sankey\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'aria-pressed'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'true'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 52 |\u001b[39m       \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'ul.candidate-list'\u001b[39m))\u001b[33m.\u001b[39mtoBeHidden()\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m     }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 62,
                            "line": 50
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  48 |     for (const id of ['incoming', 'outgoing', 'funded']) {\n  49 |       const card = page.locator(`#${id}`);\n> 50 |       await expect(card.locator('.money-flow-chart canvas')).toHaveCount(1, { timeout: 15000 });\n     |                                                              ^\n  51 |       await expect(card.locator('.mf-view-btn[data-view=\"sankey\"]')).toHaveAttribute('aria-pressed', 'true');\n  52 |       await expect(card.locator('ul.candidate-list')).toBeHidden();\n  53 |     }\n    at /app/tests/ui/money-flow.spec.ts:50:62"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.958Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-90793-card-defaults-to-the-Sankey-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-90793-card-defaults-to-the-Sankey-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 62,
                        "line": 50
                      }
                    },
                    {
                      "workerIndex": 11,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 16534,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:50:62",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 62,
                          "line": 50
                        },
                        "snippet": "\u001b[0m \u001b[90m 48 |\u001b[39m     \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m id \u001b[36mof\u001b[39m [\u001b[32m'incoming'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'outgoing'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'funded'\u001b[39m]) {\n \u001b[90m 49 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${id}`\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 50 |\u001b[39m       \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'.money-flow-chart canvas'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                              \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 51 |\u001b[39m       \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'.mf-view-btn[data-view=\"sankey\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'aria-pressed'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'true'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 52 |\u001b[39m       \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'ul.candidate-list'\u001b[39m))\u001b[33m.\u001b[39mtoBeHidden()\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m     }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 62,
                            "line": 50
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  48 |     for (const id of ['incoming', 'outgoing', 'funded']) {\n  49 |       const card = page.locator(`#${id}`);\n> 50 |       await expect(card.locator('.money-flow-chart canvas')).toHaveCount(1, { timeout: 15000 });\n     |                                                              ^\n  51 |       await expect(card.locator('.mf-view-btn[data-view=\"sankey\"]')).toHaveAttribute('aria-pressed', 'true');\n  52 |       await expect(card.locator('ul.candidate-list')).toBeHidden();\n  53 |     }\n    at /app/tests/ui/money-flow.spec.ts:50:62"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-14T03:19:02.776Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-90793-card-defaults-to-the-Sankey-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-90793-card-defaults-to-the-Sankey-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-90793-card-defaults-to-the-Sankey-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-90793-card-defaults-to-the-Sankey-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 62,
                        "line": 50
                      }
                    },
                    {
                      "workerIndex": 12,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15272,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:50:62",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 62,
                          "line": 50
                        },
                        "snippet": "\u001b[0m \u001b[90m 48 |\u001b[39m     \u001b[36mfor\u001b[39m (\u001b[36mconst\u001b[39m id \u001b[36mof\u001b[39m [\u001b[32m'incoming'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'outgoing'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'funded'\u001b[39m]) {\n \u001b[90m 49 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${id}`\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 50 |\u001b[39m       \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'.money-flow-chart canvas'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                              \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 51 |\u001b[39m       \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'.mf-view-btn[data-view=\"sankey\"]'\u001b[39m))\u001b[33m.\u001b[39mtoHaveAttribute(\u001b[32m'aria-pressed'\u001b[39m\u001b[33m,\u001b[39m \u001b[32m'true'\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 52 |\u001b[39m       \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'ul.candidate-list'\u001b[39m))\u001b[33m.\u001b[39mtoBeHidden()\u001b[33m;\u001b[39m\n \u001b[90m 53 |\u001b[39m     }\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 62,
                            "line": 50
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  48 |     for (const id of ['incoming', 'outgoing', 'funded']) {\n  49 |       const card = page.locator(`#${id}`);\n> 50 |       await expect(card.locator('.money-flow-chart canvas')).toHaveCount(1, { timeout: 15000 });\n     |                                                              ^\n  51 |       await expect(card.locator('.mf-view-btn[data-view=\"sankey\"]')).toHaveAttribute('aria-pressed', 'true');\n  52 |       await expect(card.locator('ul.candidate-list')).toBeHidden();\n  53 |     }\n    at /app/tests/ui/money-flow.spec.ts:50:62"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-14T03:19:20.060Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-90793-card-defaults-to-the-Sankey-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-90793-card-defaults-to-the-Sankey-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 62,
                        "line": 50
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-1379512e23819a3f13a3",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 44,
              "column": 7
            },
            {
              "title": "candidate: Top Contributors toggles between Sankey and table",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15282,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:61:60",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 60,
                          "line": 61
                        },
                        "snippet": "\u001b[0m \u001b[90m 59 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[33mHARRIS\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 60 |\u001b[39m     \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#funding'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 61 |\u001b[39m     \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'.money-flow-chart canvas'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                            \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 62 |\u001b[39m     \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'table'\u001b[39m))\u001b[33m.\u001b[39mtoBeHidden()\u001b[33m;\u001b[39m\n \u001b[90m 63 |\u001b[39m     \u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mlocator(\u001b[32m'.mf-view-btn[data-view=\"table\"]'\u001b[39m)\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m     \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'table'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 60,
                            "line": 61
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  59 |     await page.goto(HARRIS);\n  60 |     const card = page.locator('#funding');\n> 61 |     await expect(card.locator('.money-flow-chart canvas')).toHaveCount(1, { timeout: 15000 });\n     |                                                            ^\n  62 |     await expect(card.locator('table')).toBeHidden();\n  63 |     await card.locator('.mf-view-btn[data-view=\"table\"]').click();\n  64 |     await expect(card.locator('table')).toBeVisible();\n    at /app/tests/ui/money-flow.spec.ts:61:60"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:19:35.974Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-05c02-es-between-Sankey-and-table-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-05c02-es-between-Sankey-and-table-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 60,
                        "line": 61
                      }
                    },
                    {
                      "workerIndex": 15,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 16097,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:61:60",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 60,
                          "line": 61
                        },
                        "snippet": "\u001b[0m \u001b[90m 59 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[33mHARRIS\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 60 |\u001b[39m     \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#funding'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 61 |\u001b[39m     \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'.money-flow-chart canvas'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                            \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 62 |\u001b[39m     \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'table'\u001b[39m))\u001b[33m.\u001b[39mtoBeHidden()\u001b[33m;\u001b[39m\n \u001b[90m 63 |\u001b[39m     \u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mlocator(\u001b[32m'.mf-view-btn[data-view=\"table\"]'\u001b[39m)\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m     \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'table'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 60,
                            "line": 61
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  59 |     await page.goto(HARRIS);\n  60 |     const card = page.locator('#funding');\n> 61 |     await expect(card.locator('.money-flow-chart canvas')).toHaveCount(1, { timeout: 15000 });\n     |                                                            ^\n  62 |     await expect(card.locator('table')).toBeHidden();\n  63 |     await card.locator('.mf-view-btn[data-view=\"table\"]').click();\n  64 |     await expect(card.locator('table')).toBeVisible();\n    at /app/tests/ui/money-flow.spec.ts:61:60"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-14T03:19:51.924Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-05c02-es-between-Sankey-and-table-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-05c02-es-between-Sankey-and-table-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-05c02-es-between-Sankey-and-table-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-05c02-es-between-Sankey-and-table-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 60,
                        "line": 61
                      }
                    },
                    {
                      "workerIndex": 17,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 17364,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:61:60",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 60,
                          "line": 61
                        },
                        "snippet": "\u001b[0m \u001b[90m 59 |\u001b[39m     \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mgoto(\u001b[33mHARRIS\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 60 |\u001b[39m     \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m'#funding'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 61 |\u001b[39m     \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'.money-flow-chart canvas'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                            \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 62 |\u001b[39m     \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'table'\u001b[39m))\u001b[33m.\u001b[39mtoBeHidden()\u001b[33m;\u001b[39m\n \u001b[90m 63 |\u001b[39m     \u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mlocator(\u001b[32m'.mf-view-btn[data-view=\"table\"]'\u001b[39m)\u001b[33m.\u001b[39mclick()\u001b[33m;\u001b[39m\n \u001b[90m 64 |\u001b[39m     \u001b[36mawait\u001b[39m expect(card\u001b[33m.\u001b[39mlocator(\u001b[32m'table'\u001b[39m))\u001b[33m.\u001b[39mtoBeVisible()\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 60,
                            "line": 61
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding').locator('.money-flow-chart canvas')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding').locator('.money-flow-chart canvas') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding').locator('.money-flow-chart canvas')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  59 |     await page.goto(HARRIS);\n  60 |     const card = page.locator('#funding');\n> 61 |     await expect(card.locator('.money-flow-chart canvas')).toHaveCount(1, { timeout: 15000 });\n     |                                                            ^\n  62 |     await expect(card.locator('table')).toBeHidden();\n  63 |     await card.locator('.mf-view-btn[data-view=\"table\"]').click();\n  64 |     await expect(card.locator('table')).toBeVisible();\n    at /app/tests/ui/money-flow.spec.ts:61:60"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-14T03:20:08.764Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-05c02-es-between-Sankey-and-table-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-05c02-es-between-Sankey-and-table-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 60,
                        "line": 61
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-66eef433452cb5f4518f",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 58,
              "column": 7
            },
            {
              "title": "candidate: #ie-support card follows the independent-expenditure data",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 19,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15328,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:20:26.778Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-72da7-ndependent-expenditure-data-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-72da7-ndependent-expenditure-data-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    },
                    {
                      "workerIndex": 20,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 17259,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-14T03:20:42.757Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-72da7-ndependent-expenditure-data-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-72da7-ndependent-expenditure-data-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-72da7-ndependent-expenditure-data-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-72da7-ndependent-expenditure-data-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    },
                    {
                      "workerIndex": 22,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15289,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-14T03:21:00.734Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-72da7-ndependent-expenditure-data-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-72da7-ndependent-expenditure-data-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-1839d1cd12dab3de3014",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 78,
              "column": 9
            },
            {
              "title": "committee: #ie-support card follows the independent-expenditure data",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 23,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15303,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:21:16.790Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-77078-ndependent-expenditure-data-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-77078-ndependent-expenditure-data-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    },
                    {
                      "workerIndex": 25,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 16257,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-14T03:21:32.717Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-77078-ndependent-expenditure-data-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-77078-ndependent-expenditure-data-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-77078-ndependent-expenditure-data-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-77078-ndependent-expenditure-data-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    },
                    {
                      "workerIndex": 26,
                      "parallelIndex": 1,
                      "status": "failed",
                      "duration": 15302,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-14T03:21:49.697Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-77078-ndependent-expenditure-data-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-77078-ndependent-expenditure-data-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-c03ecaaa846d30d640c2",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 78,
              "column": 9
            },
            {
              "title": "candidate: #ie-oppose card follows the independent-expenditure data",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 27,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15298,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:22:05.624Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-b1fd1-ndependent-expenditure-data-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-b1fd1-ndependent-expenditure-data-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    },
                    {
                      "workerIndex": 28,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 16064,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-14T03:22:21.605Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-b1fd1-ndependent-expenditure-data-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-b1fd1-ndependent-expenditure-data-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-b1fd1-ndependent-expenditure-data-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-b1fd1-ndependent-expenditure-data-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    },
                    {
                      "workerIndex": 29,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15428,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#funding .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#funding .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#funding .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-14T03:22:38.422Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-b1fd1-ndependent-expenditure-data-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-b1fd1-ndependent-expenditure-data-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-cd8390d905a0c386907e",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 78,
              "column": 9
            },
            {
              "title": "committee: #ie-oppose card follows the independent-expenditure data",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 30,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15296,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:22:54.490Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-f1bb4-ndependent-expenditure-data-ui/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-f1bb4-ndependent-expenditure-data-ui/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    },
                    {
                      "workerIndex": 31,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 16855,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-10-14T03:23:10.453Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-f1bb4-ndependent-expenditure-data-ui-retry1/test-failed-1.png"
                        },
                        {
                          "name": "video",
                          "contentType": "video/webm",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-f1bb4-ndependent-expenditure-data-ui-retry1/video.webm"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-f1bb4-ndependent-expenditure-data-ui-retry1/error-context.md"
                        },
                        {
                          "name": "trace",
                          "contentType": "application/zip",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-f1bb4-ndependent-expenditure-data-ui-retry1/trace.zip"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    },
                    {
                      "workerIndex": 32,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 15282,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n    at /app/tests/ui/money-flow.spec.ts:90:106",
                        "location": {
                          "file": "/app/tests/ui/money-flow.spec.ts",
                          "column": 106,
                          "line": 90
                        },
                        "snippet": "\u001b[0m \u001b[90m 88 |\u001b[39m       \u001b[36mconst\u001b[39m card \u001b[33m=\u001b[39m page\u001b[33m.\u001b[39mlocator(\u001b[32m`#${sectionId}`\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 89 |\u001b[39m       \u001b[90m// the contribution cards are mounted first, so wait for them before judging the IE card\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 90 |\u001b[39m       \u001b[36mawait\u001b[39m expect(page\u001b[33m.\u001b[39mlocator(label \u001b[33m===\u001b[39m \u001b[32m'candidate'\u001b[39m \u001b[33m?\u001b[39m \u001b[32m'#funding .mf-toggle'\u001b[39m \u001b[33m:\u001b[39m \u001b[32m'#incoming .mf-toggle'\u001b[39m))\u001b[33m.\u001b[39mtoHaveCount(\u001b[35m1\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m15000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m    |\u001b[39m                                                                                                          \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 91 |\u001b[39m       \u001b[36mif\u001b[39m ((\u001b[36mawait\u001b[39m card\u001b[33m.\u001b[39mcount()) \u001b[33m===\u001b[39m \u001b[35m0\u001b[39m) {\n \u001b[90m 92 |\u001b[39m         expect(errors)\u001b[33m.\u001b[39mtoEqual([])\u001b[33m;\u001b[39m\n \u001b[90m 93 |\u001b[39m         \u001b[36mreturn\u001b[39m\u001b[33m;\u001b[39m\u001b[0m"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/app/tests/ui/money-flow.spec.ts",
                            "column": 106,
                            "line": 90
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveCount\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('#incoming .mf-toggle')\nExpected: \u001b[32m1\u001b[39m\nReceived: \u001b[31m0\u001b[39m\nTimeout:  15000ms\n\nCall log:\n\u001b[2m  - Expect \"toHaveCount\" locator('#incoming .mf-toggle') with timeout 15000ms\u001b[22m\n\u001b[2m  - waiting for locator('#incoming .mf-toggle')\u001b[22m\n\u001b[2m    34 × locator resolved to 0 elements\u001b[22m\n\u001b[2m       - unexpected value \"0\"\u001b[22m\n\n\n  88 |       const card = page.locator(`#${sectionId}`);\n  89 |       // the contribution cards are mounted first, so wait for them before judging the IE card\n> 90 |       await expect(page.locator(label === 'candidate' ? '#funding .mf-toggle' : '#incoming .mf-toggle')).toHaveCount(1, { timeout: 15000 });\n     |                                                                                                          ^\n  91 |       if ((await card.count()) === 0) {\n  92 |         expect(errors).toEqual([]);\n  93 |         return;\n    at /app/tests/ui/money-flow.spec.ts:90:106"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 2,
                      "startTime": "2026-10-14T03:23:28.047Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-f1bb4-ndependent-expenditure-data-ui-retry2/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/money-flow-money-flow-card-f1bb4-ndependent-expenditure-data-ui-retry2/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/app/tests/ui/money-flow.spec.ts",
                        "column": 106,
                        "line": 90
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "298b24fdb93a81fb6ce7-b82415fcc5b419d3939e",
              "file": "tests/ui/money-flow.spec.ts",
              "line": 78,
              "column": 9
            }
          ]
        }
      ]
    },
    {
      "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": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 260,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.420Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/us-us-elect-info-homepage-loads-with-title-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-8afeb95d04c94adeed96",
              "file": "tests/ui/us.spec.ts",
              "line": 4,
              "column": 7
            },
            {
              "title": "entity stats display",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 195,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:46.837Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/us-us-elect-info-entity-stats-display-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-49e351c56a50ed35776c",
              "file": "tests/ui/us.spec.ts",
              "line": 10,
              "column": 7
            },
            {
              "title": "CSS assets load",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 126,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.050Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/us-us-elect-info-CSS-assets-load-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-9f6402d7bf0b7a821851",
              "file": "tests/ui/us.spec.ts",
              "line": 16,
              "column": 7
            },
            {
              "title": "JS assets load",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 152,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.188Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/us-us-elect-info-JS-assets-load-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-6e13cf9f04841582af4e",
              "file": "tests/ui/us.spec.ts",
              "line": 21,
              "column": 7
            },
            {
              "title": "404 page works",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "ui",
                  "projectName": "ui",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 4,
                      "status": "passed",
                      "duration": 103,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-10-14T03:18:47.351Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/workspace/artifacts/17484ec/us-preview/test-output/us-us-elect-info-404-page-works-ui/test-finished-1.png"
                        }
                      ]
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "2d63ce8979ebe7723300-f161db786bfcba883987",
              "file": "tests/ui/us.spec.ts",
              "line": 27,
              "column": 7
            }
          ]
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-10-14T03:18:45.759Z",
    "duration": 297766.209,
    "expected": 62,
    "skipped": 0,
    "unexpected": 10,
    "flaky": 0
  }
}