{
  "config": {
    "configFile": "/var/www/360lm/playwright.config.js",
    "rootDir": "/var/www/360lm/tests",
    "forbidOnly": false,
    "fullyParallel": false,
    "globalSetup": null,
    "globalTeardown": null,
    "globalTimeout": 0,
    "grep": {},
    "grepInvert": null,
    "maxFailures": 0,
    "metadata": {
      "actualWorkers": 1
    },
    "preserveOutput": "always",
    "projects": [
      {
        "outputDir": "/var/www/360lm/test-results",
        "repeatEach": 1,
        "retries": 1,
        "metadata": {
          "actualWorkers": 1
        },
        "id": "android-chrome",
        "name": "android-chrome",
        "testDir": "/var/www/360lm/tests",
        "testIgnore": [],
        "testMatch": [
          "**/*.@(spec|test).?(c|m)[jt]s?(x)"
        ],
        "timeout": 30000
      },
      {
        "outputDir": "/var/www/360lm/test-results",
        "repeatEach": 1,
        "retries": 1,
        "metadata": {
          "actualWorkers": 1
        },
        "id": "desktop-chrome",
        "name": "desktop-chrome",
        "testDir": "/var/www/360lm/tests",
        "testIgnore": [],
        "testMatch": [
          "**/*.@(spec|test).?(c|m)[jt]s?(x)"
        ],
        "timeout": 30000
      }
    ],
    "quiet": false,
    "reporter": [
      [
        "json"
      ]
    ],
    "reportSlowTests": {
      "max": 5,
      "threshold": 300000
    },
    "shard": null,
    "tags": [],
    "updateSnapshots": "missing",
    "updateSourceMethod": "patch",
    "version": "1.60.0",
    "workers": 1,
    "webServer": null
  },
  "suites": [
    {
      "title": "fundcustodian.spec.js",
      "file": "fundcustodian.spec.js",
      "column": 0,
      "line": 0,
      "specs": [],
      "suites": [
        {
          "title": "Auth Gate",
          "file": "fundcustodian.spec.js",
          "line": 35,
          "column": 6,
          "specs": [
            {
              "title": "no session → redirects to /hub/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1061,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:03.889Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-3f3531e5c6f0a7eb185d",
              "file": "fundcustodian.spec.js",
              "line": 36,
              "column": 3
            },
            {
              "title": "expired session (>12h) → redirects to /hub/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 605,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:05.329Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-86b36f68a8f23d935137",
              "file": "fundcustodian.spec.js",
              "line": 42,
              "column": 3
            },
            {
              "title": "non-custodian employee → Access Restricted screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 580,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:06.007Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-d777dbfe693f198391f4",
              "file": "fundcustodian.spec.js",
              "line": 50,
              "column": 3
            },
            {
              "title": "no session → redirects to /hub/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 519,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:06.301Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-4941793c034feaa4c8d4",
              "file": "fundcustodian.spec.js",
              "line": 36,
              "column": 3
            },
            {
              "title": "expired session (>12h) → redirects to /hub/",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 413,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:07.025Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-be7df170420993cdf364",
              "file": "fundcustodian.spec.js",
              "line": 42,
              "column": 3
            },
            {
              "title": "non-custodian employee → Access Restricted screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 408,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:07.475Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-f857b668291e7e17d3b0",
              "file": "fundcustodian.spec.js",
              "line": 50,
              "column": 3
            }
          ]
        },
        {
          "title": "Dashboard — shambhu (non-admin)",
          "file": "fundcustodian.spec.js",
          "line": 62,
          "column": 6,
          "specs": [
            {
              "title": "balance card renders and shows shambhu name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 624,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:06.628Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-21a11ed89b787d18d3dc",
              "file": "fundcustodian.spec.js",
              "line": 69,
              "column": 3
            },
            {
              "title": "no pending transfers banner shown for shambhu",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 707,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:07.289Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-f9f72838429f556e8a62",
              "file": "fundcustodian.spec.js",
              "line": 75,
              "column": 3
            },
            {
              "title": "outstanding advances section is visible",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 692,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:08.068Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-3c2e52fa6ce9b7aae36f",
              "file": "fundcustodian.spec.js",
              "line": 79,
              "column": 3
            },
            {
              "title": "admin balance grid is NOT shown for non-admin",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 828,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:08.819Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-b40003816c0568de9e44",
              "file": "fundcustodian.spec.js",
              "line": 86,
              "column": 3
            },
            {
              "title": "manage custodian button hidden for non-admin",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 608,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:09.686Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-29b36b85b84120645af2",
              "file": "fundcustodian.spec.js",
              "line": 91,
              "column": 3
            },
            {
              "title": "bottom nav has 4 tabs",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 557,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:10.325Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-5213ee15713230aced18",
              "file": "fundcustodian.spec.js",
              "line": 95,
              "column": 3
            },
            {
              "title": "recent transfers card loads",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 480,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:10.902Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-8b27d6cd9dc8e53fea06",
              "file": "fundcustodian.spec.js",
              "line": 100,
              "column": 3
            },
            {
              "title": "balance card renders and shows shambhu name",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 518,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:07.906Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-312b40c465c7720f813d",
              "file": "fundcustodian.spec.js",
              "line": 69,
              "column": 3
            },
            {
              "title": "no pending transfers banner shown for shambhu",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 454,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:08.443Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-6e731fbc13a8774e3e98",
              "file": "fundcustodian.spec.js",
              "line": 75,
              "column": 3
            },
            {
              "title": "outstanding advances section is visible",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 464,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:08.933Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-b638704a578a8caf5b7b",
              "file": "fundcustodian.spec.js",
              "line": 79,
              "column": 3
            },
            {
              "title": "admin balance grid is NOT shown for non-admin",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 577,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:09.421Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-e973e4f214bc25080cda",
              "file": "fundcustodian.spec.js",
              "line": 86,
              "column": 3
            },
            {
              "title": "manage custodian button hidden for non-admin",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 461,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:10.021Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-5170797acb4aa05bf1b9",
              "file": "fundcustodian.spec.js",
              "line": 91,
              "column": 3
            },
            {
              "title": "bottom nav has 4 tabs",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 487,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:10.519Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-9f473f3447aa3673090b",
              "file": "fundcustodian.spec.js",
              "line": 95,
              "column": 3
            },
            {
              "title": "recent transfers card loads",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 441,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:11.031Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-0b597b9896607af0ed81",
              "file": "fundcustodian.spec.js",
              "line": 100,
              "column": 3
            }
          ]
        },
        {
          "title": "Dashboard — harish (admin, 2 pending)",
          "file": "fundcustodian.spec.js",
          "line": 109,
          "column": 6,
          "specs": [
            {
              "title": "pending banner appears with count 2",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 721,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:11.403Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-0cf52fe6a4355dfb045a",
              "file": "fundcustodian.spec.js",
              "line": 116,
              "column": 3
            },
            {
              "title": "pending banner shows from-name and amount for both",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 610,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:12.154Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-b04a183312ba73e5a11d",
              "file": "fundcustodian.spec.js",
              "line": 122,
              "column": 3
            },
            {
              "title": "pending item has Accept and Reject buttons",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 792,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:12.805Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-d5b20c5a038fdf23fa61",
              "file": "fundcustodian.spec.js",
              "line": 129,
              "column": 3
            },
            {
              "title": "admin balance grid shows all 4 custodians",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 661,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:13.657Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-574735f2d7aa737c4de4",
              "file": "fundcustodian.spec.js",
              "line": 134,
              "column": 3
            },
            {
              "title": "primary badge on Pramod tile",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 537,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:14.341Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-97cf0bf851e91b557836",
              "file": "fundcustodian.spec.js",
              "line": 144,
              "column": 3
            },
            {
              "title": "manage custodian button visible for admin",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 617,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:14.917Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-8b52981cd3eb5f5965b5",
              "file": "fundcustodian.spec.js",
              "line": 149,
              "column": 3
            },
            {
              "title": "admin sees all outstanding advances (not just own)",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 0,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 657,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:155:68",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 68,
                          "line": 155
                        },
                        "snippet": "  153 |   test('admin sees all outstanding advances (not just own)', async ({ page }) => {\n  154 |     // A1 from shambhu, A4 from pramod — admin sees all\n> 155 |     await expect(page.locator('.adv-name', { hasText: 'Mukesh' })).toBeVisible();\n      |                                                                    ^\n  156 |     await expect(page.locator('.adv-name', { hasText: 'Umashankar' })).toBeVisible();\n  157 |   });\n  158 | });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 68,
                            "line": 155
                          },
                          "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('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n\n\n  153 |   test('admin sees all outstanding advances (not just own)', async ({ page }) => {\n  154 |     // A1 from shambhu, A4 from pramod — admin sees all\n> 155 |     await expect(page.locator('.adv-name', { hasText: 'Mukesh' })).toBeVisible();\n      |                                                                    ^\n  156 |     await expect(page.locator('.adv-name', { hasText: 'Umashankar' })).toBeVisible();\n  157 |   });\n  158 | });\n    at /var/www/360lm/tests/fundcustodian.spec.js:155:68"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:15.561Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--9791e-ding-advances-not-just-own--android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--9791e-ding-advances-not-just-own--android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 68,
                        "line": 155
                      }
                    },
                    {
                      "workerIndex": 1,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 808,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:155:68",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 68,
                          "line": 155
                        },
                        "snippet": "  153 |   test('admin sees all outstanding advances (not just own)', async ({ page }) => {\n  154 |     // A1 from shambhu, A4 from pramod — admin sees all\n> 155 |     await expect(page.locator('.adv-name', { hasText: 'Mukesh' })).toBeVisible();\n      |                                                                    ^\n  156 |     await expect(page.locator('.adv-name', { hasText: 'Umashankar' })).toBeVisible();\n  157 |   });\n  158 | });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 68,
                            "line": 155
                          },
                          "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('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n\n\n  153 |   test('admin sees all outstanding advances (not just own)', async ({ page }) => {\n  154 |     // A1 from shambhu, A4 from pramod — admin sees all\n> 155 |     await expect(page.locator('.adv-name', { hasText: 'Mukesh' })).toBeVisible();\n      |                                                                    ^\n  156 |     await expect(page.locator('.adv-name', { hasText: 'Umashankar' })).toBeVisible();\n  157 |   });\n  158 | });\n    at /var/www/360lm/tests/fundcustodian.spec.js:155:68"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:03:17.421Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--9791e-ding-advances-not-just-own--android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--9791e-ding-advances-not-just-own--android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 68,
                        "line": 155
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-a4bb90f7b065c8a0e369",
              "file": "fundcustodian.spec.js",
              "line": 153,
              "column": 3
            },
            {
              "title": "pending banner appears with count 2",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 449,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:11.499Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-5721b8f6fb5dd9cea365",
              "file": "fundcustodian.spec.js",
              "line": 116,
              "column": 3
            },
            {
              "title": "pending banner shows from-name and amount for both",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 468,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:11.969Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-fe87a17783e6f6cbddeb",
              "file": "fundcustodian.spec.js",
              "line": 122,
              "column": 3
            },
            {
              "title": "pending item has Accept and Reject buttons",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 478,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:12.455Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-7b266c8c9bc51287a120",
              "file": "fundcustodian.spec.js",
              "line": 129,
              "column": 3
            },
            {
              "title": "admin balance grid shows all 4 custodians",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 556,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:12.960Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-1958f4c60f44583934fb",
              "file": "fundcustodian.spec.js",
              "line": 134,
              "column": 3
            },
            {
              "title": "primary badge on Pramod tile",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 551,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:13.541Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-6fdaef92560b85a800dc",
              "file": "fundcustodian.spec.js",
              "line": 144,
              "column": 3
            },
            {
              "title": "manage custodian button visible for admin",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 501,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:14.116Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-10340aa1573ae9c5ee45",
              "file": "fundcustodian.spec.js",
              "line": 149,
              "column": 3
            },
            {
              "title": "admin sees all outstanding advances (not just own)",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 25,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 560,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:155:68",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 68,
                          "line": 155
                        },
                        "snippet": "  153 |   test('admin sees all outstanding advances (not just own)', async ({ page }) => {\n  154 |     // A1 from shambhu, A4 from pramod — admin sees all\n> 155 |     await expect(page.locator('.adv-name', { hasText: 'Mukesh' })).toBeVisible();\n      |                                                                    ^\n  156 |     await expect(page.locator('.adv-name', { hasText: 'Umashankar' })).toBeVisible();\n  157 |   });\n  158 | });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 68,
                            "line": 155
                          },
                          "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('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n\n\n  153 |   test('admin sees all outstanding advances (not just own)', async ({ page }) => {\n  154 |     // A1 from shambhu, A4 from pramod — admin sees all\n> 155 |     await expect(page.locator('.adv-name', { hasText: 'Mukesh' })).toBeVisible();\n      |                                                                    ^\n  156 |     await expect(page.locator('.adv-name', { hasText: 'Umashankar' })).toBeVisible();\n  157 |   });\n  158 | });\n    at /var/www/360lm/tests/fundcustodian.spec.js:155:68"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:14.640Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--9791e-ding-advances-not-just-own--desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--9791e-ding-advances-not-just-own--desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 68,
                        "line": 155
                      }
                    },
                    {
                      "workerIndex": 26,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 676,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator: locator('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:155:68",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 68,
                          "line": 155
                        },
                        "snippet": "  153 |   test('admin sees all outstanding advances (not just own)', async ({ page }) => {\n  154 |     // A1 from shambhu, A4 from pramod — admin sees all\n> 155 |     await expect(page.locator('.adv-name', { hasText: 'Mukesh' })).toBeVisible();\n      |                                                                    ^\n  156 |     await expect(page.locator('.adv-name', { hasText: 'Umashankar' })).toBeVisible();\n  157 |   });\n  158 | });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 68,
                            "line": 155
                          },
                          "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('.adv-name').filter({ hasText: 'Mukesh' })\nExpected: visible\nError: strict mode violation: locator('.adv-name').filter({ hasText: 'Mukesh' }) resolved to 2 elements:\n    1) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').first()\n    2) <div class=\"adv-name\">Mukesh</div> aka getByText('Mukesh').nth(1)\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.adv-name').filter({ hasText: 'Mukesh' })\u001b[22m\n\n\n  153 |   test('admin sees all outstanding advances (not just own)', async ({ page }) => {\n  154 |     // A1 from shambhu, A4 from pramod — admin sees all\n> 155 |     await expect(page.locator('.adv-name', { hasText: 'Mukesh' })).toBeVisible();\n      |                                                                    ^\n  156 |     await expect(page.locator('.adv-name', { hasText: 'Umashankar' })).toBeVisible();\n  157 |   });\n  158 | });\n    at /var/www/360lm/tests/fundcustodian.spec.js:155:68"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:08:16.318Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--9791e-ding-advances-not-just-own--desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--9791e-ding-advances-not-just-own--desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 68,
                        "line": 155
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-f7ddee31989f51c705ac",
              "file": "fundcustodian.spec.js",
              "line": 153,
              "column": 3
            }
          ]
        },
        {
          "title": "Dashboard — pramod (admin, primary custodian)",
          "file": "fundcustodian.spec.js",
          "line": 163,
          "column": 6,
          "specs": [
            {
              "title": "pramod balance card is negative and shows red text",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 715,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:19.572Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-b2cb37c30ab55afae59f",
              "file": "fundcustodian.spec.js",
              "line": 164,
              "column": 3
            },
            {
              "title": "pramod balance card is negative and shows red text",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 27,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 657,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:18.190Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-a9e02f15a81841037820",
              "file": "fundcustodian.spec.js",
              "line": 164,
              "column": 3
            }
          ]
        },
        {
          "title": "Dashboard — gurpreet (new custodian, low activity)",
          "file": "fundcustodian.spec.js",
          "line": 179,
          "column": 6,
          "specs": [
            {
              "title": "gurpreet name shown in header",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 2,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 10461,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:20.670Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--90af2-rpreet-name-shown-in-header-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--90af2-rpreet-name-shown-in-header-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    },
                    {
                      "workerIndex": 3,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 10568,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:03:32.541Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--90af2-rpreet-name-shown-in-header-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--90af2-rpreet-name-shown-in-header-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-052bbbbb2ecdb12953d6",
              "file": "fundcustodian.spec.js",
              "line": 186,
              "column": 3
            },
            {
              "title": "positive balance shows .pos class",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 4,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 10888,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:03:44.587Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--97d5c-ive-balance-shows-pos-class-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--97d5c-ive-balance-shows-pos-class-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    },
                    {
                      "workerIndex": 5,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 10983,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:03:57.028Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--97d5c-ive-balance-shows-pos-class-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--97d5c-ive-balance-shows-pos-class-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-549ce3e00f5551bf942d",
              "file": "fundcustodian.spec.js",
              "line": 190,
              "column": 3
            },
            {
              "title": "no pending transfers for gurpreet",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 6,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 11252,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:04:12.196Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--6fbdc-ding-transfers-for-gurpreet-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--6fbdc-ding-transfers-for-gurpreet-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    },
                    {
                      "workerIndex": 7,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 11316,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:04:26.297Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--6fbdc-ding-transfers-for-gurpreet-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--6fbdc-ding-transfers-for-gurpreet-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-facad53c5aa6536b745e",
              "file": "fundcustodian.spec.js",
              "line": 195,
              "column": 3
            },
            {
              "title": "gurpreet name shown in header",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 27,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 10303,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:19.056Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--90af2-rpreet-name-shown-in-header-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--90af2-rpreet-name-shown-in-header-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    },
                    {
                      "workerIndex": 28,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 10621,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:08:30.426Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--90af2-rpreet-name-shown-in-header-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--90af2-rpreet-name-shown-in-header-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-3c582c29aafe3d0e0ceb",
              "file": "fundcustodian.spec.js",
              "line": 186,
              "column": 3
            },
            {
              "title": "positive balance shows .pos class",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 29,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 10586,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:42.274Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--97d5c-ive-balance-shows-pos-class-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--97d5c-ive-balance-shows-pos-class-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    },
                    {
                      "workerIndex": 30,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 11245,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:08:54.468Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--97d5c-ive-balance-shows-pos-class-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--97d5c-ive-balance-shows-pos-class-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-363c6279abff29f714bf",
              "file": "fundcustodian.spec.js",
              "line": 190,
              "column": 3
            },
            {
              "title": "no pending transfers for gurpreet",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 31,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 10837,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:09:08.808Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--6fbdc-ding-transfers-for-gurpreet-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--6fbdc-ding-transfers-for-gurpreet-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    },
                    {
                      "workerIndex": 32,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 10559,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 51,
                          "line": 183
                        },
                        "snippet": "  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 51,
                            "line": 183
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).not.\u001b[22mtoHaveText\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('#my-balance')\nExpected: not \u001b[32m\"…\"\u001b[39m\nTimeout: 10000ms\nError: element(s) not found\n\nCall log:\n\u001b[2m  - Expect \"not toHaveText\" with timeout 10000ms\u001b[22m\n\u001b[2m  - waiting for locator('#my-balance')\u001b[22m\n\n\n  181 |     await injectSession(page, SESSION.gurpreet);\n  182 |     await page.goto(BASE_URL);\n> 183 |     await expect(page.locator('#my-balance')).not.toHaveText('…', { timeout: 10000 });\n      |                                                   ^\n  184 |   });\n  185 |\n  186 |   test('gurpreet name shown in header', async ({ page }) => {\n    at /var/www/360lm/tests/fundcustodian.spec.js:183:51"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:09:21.126Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--6fbdc-ding-transfers-for-gurpreet-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Dashboard-—--6fbdc-ding-transfers-for-gurpreet-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 51,
                        "line": 183
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-e17a78787a3159fff6c8",
              "file": "fundcustodian.spec.js",
              "line": 195,
              "column": 3
            }
          ]
        },
        {
          "title": "Transfer Form",
          "file": "fundcustodian.spec.js",
          "line": 203,
          "column": 6,
          "specs": [
            {
              "title": "giver mode selected by default",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1779,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:04:41.624Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-ef68eb6005a875505ba7",
              "file": "fundcustodian.spec.js",
              "line": 211,
              "column": 3
            },
            {
              "title": "cash + giver mode shows pending info notice",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1001,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:04:44.112Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-3b24fd4ba134e6a26c56",
              "file": "fundcustodian.spec.js",
              "line": 216,
              "column": 3
            },
            {
              "title": "switching to receiver mode hides pending notice",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1207,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:04:45.156Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-48b5d9e149b2131e7da0",
              "file": "fundcustodian.spec.js",
              "line": 220,
              "column": 3
            },
            {
              "title": "cash mode selected by default, ref field hidden",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 8,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 2016,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:226:54",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 54,
                          "line": 226
                        },
                        "snippet": "  224 |\n  225 |   test('cash mode selected by default, ref field hidden', async ({ page }) => {\n> 226 |     await expect(page.locator('[data-mode=\"cash\"]')).toHaveClass(/sel/);\n      |                                                      ^\n  227 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n  228 |   });\n  229 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 54,
                            "line": 226
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n\n\n  224 |\n  225 |   test('cash mode selected by default, ref field hidden', async ({ page }) => {\n> 226 |     await expect(page.locator('[data-mode=\"cash\"]')).toHaveClass(/sel/);\n      |                                                      ^\n  227 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n  228 |   });\n  229 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:226:54"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:04:46.422Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-c78c7-by-default-ref-field-hidden-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-c78c7-by-default-ref-field-hidden-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 54,
                        "line": 226
                      }
                    },
                    {
                      "workerIndex": 9,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1090,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:226:54",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 54,
                          "line": 226
                        },
                        "snippet": "  224 |\n  225 |   test('cash mode selected by default, ref field hidden', async ({ page }) => {\n> 226 |     await expect(page.locator('[data-mode=\"cash\"]')).toHaveClass(/sel/);\n      |                                                      ^\n  227 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n  228 |   });\n  229 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 54,
                            "line": 226
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n\n\n  224 |\n  225 |   test('cash mode selected by default, ref field hidden', async ({ page }) => {\n> 226 |     await expect(page.locator('[data-mode=\"cash\"]')).toHaveClass(/sel/);\n      |                                                      ^\n  227 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n  228 |   });\n  229 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:226:54"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:04:51.652Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-c78c7-by-default-ref-field-hidden-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-c78c7-by-default-ref-field-hidden-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 54,
                        "line": 226
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-459c826d3e9306798995",
              "file": "fundcustodian.spec.js",
              "line": 225,
              "column": 3
            },
            {
              "title": "selecting UPI shows reference field",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 10,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1347,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:231:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 231
                        },
                        "snippet": "  229 |\n  230 |   test('selecting UPI shows reference field', async ({ page }) => {\n> 231 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  232 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  233 |   });\n  234 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 231
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  229 |\n  230 |   test('selecting UPI shows reference field', async ({ page }) => {\n> 231 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  232 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  233 |   });\n  234 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:231:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:04:55.923Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-ef5f4-g-UPI-shows-reference-field-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-ef5f4-g-UPI-shows-reference-field-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 231
                      }
                    },
                    {
                      "workerIndex": 11,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 3719,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:231:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 231
                        },
                        "snippet": "  229 |\n  230 |   test('selecting UPI shows reference field', async ({ page }) => {\n> 231 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  232 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  233 |   });\n  234 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 231
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  229 |\n  230 |   test('selecting UPI shows reference field', async ({ page }) => {\n> 231 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  232 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  233 |   });\n  234 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:231:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:04:59.702Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-ef5f4-g-UPI-shows-reference-field-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-ef5f4-g-UPI-shows-reference-field-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 231
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-9418cb203efc2b9176eb",
              "file": "fundcustodian.spec.js",
              "line": 230,
              "column": 3
            },
            {
              "title": "selecting NEFT shows reference field",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 12,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1978,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:236:46",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 46,
                          "line": 236
                        },
                        "snippet": "  234 |\n  235 |   test('selecting NEFT shows reference field', async ({ page }) => {\n> 236 |     await page.locator('[data-mode=\"neft\"]').click();\n      |                                              ^\n  237 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  238 |   });\n  239 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 46,
                            "line": 236
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n\n\n  234 |\n  235 |   test('selecting NEFT shows reference field', async ({ page }) => {\n> 236 |     await page.locator('[data-mode=\"neft\"]').click();\n      |                                              ^\n  237 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  238 |   });\n  239 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:236:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:05:08.151Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-5d0bc--NEFT-shows-reference-field-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-5d0bc--NEFT-shows-reference-field-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 46,
                        "line": 236
                      }
                    },
                    {
                      "workerIndex": 13,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 2795,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:236:46",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 46,
                          "line": 236
                        },
                        "snippet": "  234 |\n  235 |   test('selecting NEFT shows reference field', async ({ page }) => {\n> 236 |     await page.locator('[data-mode=\"neft\"]').click();\n      |                                              ^\n  237 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  238 |   });\n  239 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 46,
                            "line": 236
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n\n\n  234 |\n  235 |   test('selecting NEFT shows reference field', async ({ page }) => {\n> 236 |     await page.locator('[data-mode=\"neft\"]').click();\n      |                                              ^\n  237 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  238 |   });\n  239 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:236:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:05:14.966Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-5d0bc--NEFT-shows-reference-field-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-5d0bc--NEFT-shows-reference-field-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 46,
                        "line": 236
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-fcc7cc3ec4a43af56054",
              "file": "fundcustodian.spec.js",
              "line": 235,
              "column": 3
            },
            {
              "title": "selecting IMPS shows reference field",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 14,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 4866,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:241:46",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 46,
                          "line": 241
                        },
                        "snippet": "  239 |\n  240 |   test('selecting IMPS shows reference field', async ({ page }) => {\n> 241 |     await page.locator('[data-mode=\"imps\"]').click();\n      |                                              ^\n  242 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  243 |   });\n  244 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 46,
                            "line": 241
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n\n\n  239 |\n  240 |   test('selecting IMPS shows reference field', async ({ page }) => {\n> 241 |     await page.locator('[data-mode=\"imps\"]').click();\n      |                                              ^\n  242 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  243 |   });\n  244 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:241:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:05:22.352Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-3b50d--IMPS-shows-reference-field-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-3b50d--IMPS-shows-reference-field-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 46,
                        "line": 241
                      }
                    },
                    {
                      "workerIndex": 15,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1883,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:241:46",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 46,
                          "line": 241
                        },
                        "snippet": "  239 |\n  240 |   test('selecting IMPS shows reference field', async ({ page }) => {\n> 241 |     await page.locator('[data-mode=\"imps\"]').click();\n      |                                              ^\n  242 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  243 |   });\n  244 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 46,
                            "line": 241
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n\n\n  239 |\n  240 |   test('selecting IMPS shows reference field', async ({ page }) => {\n> 241 |     await page.locator('[data-mode=\"imps\"]').click();\n      |                                              ^\n  242 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  243 |   });\n  244 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:241:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:05:32.456Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-3b50d--IMPS-shows-reference-field-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-3b50d--IMPS-shows-reference-field-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 46,
                        "line": 241
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-e467bd64164b4bdca24c",
              "file": "fundcustodian.spec.js",
              "line": 240,
              "column": 3
            },
            {
              "title": "selecting Cheque shows reference field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 16,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2133,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:05:37.294Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-961abc88669b93f590d6",
              "file": "fundcustodian.spec.js",
              "line": 245,
              "column": 3
            },
            {
              "title": "returning to cash hides reference field again",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 16,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1879,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:251:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 251
                        },
                        "snippet": "  249 |\n  250 |   test('returning to cash hides reference field again', async ({ page }) => {\n> 251 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  252 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  253 |     await page.locator('[data-mode=\"cash\"]').click();\n  254 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 251
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  249 |\n  250 |   test('returning to cash hides reference field again', async ({ page }) => {\n> 251 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  252 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  253 |     await page.locator('[data-mode=\"cash\"]').click();\n  254 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n    at /var/www/360lm/tests/fundcustodian.spec.js:251:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:05:39.955Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-8fd93-hides-reference-field-again-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-8fd93-hides-reference-field-again-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 251
                      }
                    },
                    {
                      "workerIndex": 17,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 2021,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:251:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 251
                        },
                        "snippet": "  249 |\n  250 |   test('returning to cash hides reference field again', async ({ page }) => {\n> 251 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  252 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  253 |     await page.locator('[data-mode=\"cash\"]').click();\n  254 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 251
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  249 |\n  250 |   test('returning to cash hides reference field again', async ({ page }) => {\n> 251 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  252 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  253 |     await page.locator('[data-mode=\"cash\"]').click();\n  254 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n    at /var/www/360lm/tests/fundcustodian.spec.js:251:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:05:47.375Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-8fd93-hides-reference-field-again-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-8fd93-hides-reference-field-again-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 251
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-58b9ed70f79484eba41d",
              "file": "fundcustodian.spec.js",
              "line": 250,
              "column": 3
            },
            {
              "title": "custodian select excludes self (shambhu not in list)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 18,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1957,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:05:52.643Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-551ecf079ee570d8d027",
              "file": "fundcustodian.spec.js",
              "line": 257,
              "column": 3
            },
            {
              "title": "submit with no custodian shows error toast",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 18,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1713,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:05:55.192Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-f972700ca1e442981b79",
              "file": "fundcustodian.spec.js",
              "line": 265,
              "column": 3
            },
            {
              "title": "submit with no amount shows error toast",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 18,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1949,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:05:57.038Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-c66e845362f4505f2ccb",
              "file": "fundcustodian.spec.js",
              "line": 271,
              "column": 3
            },
            {
              "title": "today date is pre-filled",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 18,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1416,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:05:59.071Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-3a49838b38cadbcae924",
              "file": "fundcustodian.spec.js",
              "line": 277,
              "column": 3
            },
            {
              "title": "clear button resets form to defaults",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 18,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 4302,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:285:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 285
                        },
                        "snippet": "  283 |     await page.locator('#tf-other').selectOption({ index: 1 });\n  284 |     await page.locator('#tf-amount').fill('5000');\n> 285 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  286 |     await page.locator('#tf-ref').fill('UPI-REF-123');\n  287 |     await page.locator('#tf-notes').fill('some notes');\n  288 |     await page.locator('button.btn-s', { hasText: 'Clear' }).click();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 285
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  283 |     await page.locator('#tf-other').selectOption({ index: 1 });\n  284 |     await page.locator('#tf-amount').fill('5000');\n> 285 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  286 |     await page.locator('#tf-ref').fill('UPI-REF-123');\n  287 |     await page.locator('#tf-notes').fill('some notes');\n  288 |     await page.locator('button.btn-s', { hasText: 'Clear' }).click();\n    at /var/www/360lm/tests/fundcustodian.spec.js:285:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:00.581Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-eff59-ton-resets-form-to-defaults-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-eff59-ton-resets-form-to-defaults-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 285
                      }
                    },
                    {
                      "workerIndex": 19,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1660,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:285:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 285
                        },
                        "snippet": "  283 |     await page.locator('#tf-other').selectOption({ index: 1 });\n  284 |     await page.locator('#tf-amount').fill('5000');\n> 285 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  286 |     await page.locator('#tf-ref').fill('UPI-REF-123');\n  287 |     await page.locator('#tf-notes').fill('some notes');\n  288 |     await page.locator('button.btn-s', { hasText: 'Clear' }).click();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 285
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  283 |     await page.locator('#tf-other').selectOption({ index: 1 });\n  284 |     await page.locator('#tf-amount').fill('5000');\n> 285 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  286 |     await page.locator('#tf-ref').fill('UPI-REF-123');\n  287 |     await page.locator('#tf-notes').fill('some notes');\n  288 |     await page.locator('button.btn-s', { hasText: 'Clear' }).click();\n    at /var/www/360lm/tests/fundcustodian.spec.js:285:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:06:08.609Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-eff59-ton-resets-form-to-defaults-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-eff59-ton-resets-form-to-defaults-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 285
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-1a92bf0cbe124ff4a8ef",
              "file": "fundcustodian.spec.js",
              "line": 282,
              "column": 3
            },
            {
              "title": "giver mode selected by default",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 834,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:09:33.047Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-1125987eeee3827488db",
              "file": "fundcustodian.spec.js",
              "line": 211,
              "column": 3
            },
            {
              "title": "cash + giver mode shows pending info notice",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 608,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:09:34.086Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-a3f297cc0c13547b65d2",
              "file": "fundcustodian.spec.js",
              "line": 216,
              "column": 3
            },
            {
              "title": "switching to receiver mode hides pending notice",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 801,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:09:34.721Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-d34ad27dbae4556b0e77",
              "file": "fundcustodian.spec.js",
              "line": 220,
              "column": 3
            },
            {
              "title": "cash mode selected by default, ref field hidden",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 33,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 581,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:226:54",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 54,
                          "line": 226
                        },
                        "snippet": "  224 |\n  225 |   test('cash mode selected by default, ref field hidden', async ({ page }) => {\n> 226 |     await expect(page.locator('[data-mode=\"cash\"]')).toHaveClass(/sel/);\n      |                                                      ^\n  227 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n  228 |   });\n  229 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 54,
                            "line": 226
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n\n\n  224 |\n  225 |   test('cash mode selected by default, ref field hidden', async ({ page }) => {\n> 226 |     await expect(page.locator('[data-mode=\"cash\"]')).toHaveClass(/sel/);\n      |                                                      ^\n  227 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n  228 |   });\n  229 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:226:54"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:09:35.566Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-c78c7-by-default-ref-field-hidden-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-c78c7-by-default-ref-field-hidden-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 54,
                        "line": 226
                      }
                    },
                    {
                      "workerIndex": 34,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1028,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:226:54",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 54,
                          "line": 226
                        },
                        "snippet": "  224 |\n  225 |   test('cash mode selected by default, ref field hidden', async ({ page }) => {\n> 226 |     await expect(page.locator('[data-mode=\"cash\"]')).toHaveClass(/sel/);\n      |                                                      ^\n  227 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n  228 |   });\n  229 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 54,
                            "line": 226
                          },
                          "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoHaveClass\u001b[2m(\u001b[22m\u001b[32mexpected\u001b[39m\u001b[2m)\u001b[22m failed\n\nLocator: locator('[data-mode=\"cash\"]')\nExpected pattern: \u001b[32m/sel/\u001b[39m\nError: strict mode violation: locator('[data-mode=\"cash\"]') resolved to 2 elements:\n    1) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'tf')\">Cash</div> aka locator('#tf-mode-chips').getByText('Cash')\n    2) <div class=\"chip sel\" data-mode=\"cash\" onclick=\"selectMode(this,'av')\">Cash</div> aka locator('#av-mode-chips').getByText('Cash')\n\nCall log:\n\u001b[2m  - Expect \"toHaveClass\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('[data-mode=\"cash\"]')\u001b[22m\n\n\n  224 |\n  225 |   test('cash mode selected by default, ref field hidden', async ({ page }) => {\n> 226 |     await expect(page.locator('[data-mode=\"cash\"]')).toHaveClass(/sel/);\n      |                                                      ^\n  227 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n  228 |   });\n  229 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:226:54"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:09:37.310Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-c78c7-by-default-ref-field-hidden-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-c78c7-by-default-ref-field-hidden-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 54,
                        "line": 226
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-d65813e414edac672519",
              "file": "fundcustodian.spec.js",
              "line": 225,
              "column": 3
            },
            {
              "title": "selecting UPI shows reference field",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 35,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1032,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:231:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 231
                        },
                        "snippet": "  229 |\n  230 |   test('selecting UPI shows reference field', async ({ page }) => {\n> 231 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  232 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  233 |   });\n  234 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 231
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  229 |\n  230 |   test('selecting UPI shows reference field', async ({ page }) => {\n> 231 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  232 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  233 |   });\n  234 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:231:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:09:40.101Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-ef5f4-g-UPI-shows-reference-field-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-ef5f4-g-UPI-shows-reference-field-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 231
                      }
                    },
                    {
                      "workerIndex": 36,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 874,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:231:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 231
                        },
                        "snippet": "  229 |\n  230 |   test('selecting UPI shows reference field', async ({ page }) => {\n> 231 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  232 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  233 |   });\n  234 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 231
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  229 |\n  230 |   test('selecting UPI shows reference field', async ({ page }) => {\n> 231 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  232 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  233 |   });\n  234 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:231:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:09:42.681Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-ef5f4-g-UPI-shows-reference-field-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-ef5f4-g-UPI-shows-reference-field-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 231
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-cbb8e990279bafb125c2",
              "file": "fundcustodian.spec.js",
              "line": 230,
              "column": 3
            },
            {
              "title": "selecting NEFT shows reference field",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 37,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1120,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:236:46",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 46,
                          "line": 236
                        },
                        "snippet": "  234 |\n  235 |   test('selecting NEFT shows reference field', async ({ page }) => {\n> 236 |     await page.locator('[data-mode=\"neft\"]').click();\n      |                                              ^\n  237 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  238 |   });\n  239 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 46,
                            "line": 236
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n\n\n  234 |\n  235 |   test('selecting NEFT shows reference field', async ({ page }) => {\n> 236 |     await page.locator('[data-mode=\"neft\"]').click();\n      |                                              ^\n  237 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  238 |   });\n  239 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:236:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:09:44.997Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-5d0bc--NEFT-shows-reference-field-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-5d0bc--NEFT-shows-reference-field-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 46,
                        "line": 236
                      }
                    },
                    {
                      "workerIndex": 38,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 872,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:236:46",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 46,
                          "line": 236
                        },
                        "snippet": "  234 |\n  235 |   test('selecting NEFT shows reference field', async ({ page }) => {\n> 236 |     await page.locator('[data-mode=\"neft\"]').click();\n      |                                              ^\n  237 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  238 |   });\n  239 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 46,
                            "line": 236
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"neft\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'tf')\">NEFT</div> aka locator('#tf-mode-chips').getByText('NEFT')\n    2) <div class=\"chip\" data-mode=\"neft\" onclick=\"selectMode(this,'av')\">NEFT</div> aka locator('#av-mode-chips').getByText('NEFT')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"neft\"]')\u001b[22m\n\n\n  234 |\n  235 |   test('selecting NEFT shows reference field', async ({ page }) => {\n> 236 |     await page.locator('[data-mode=\"neft\"]').click();\n      |                                              ^\n  237 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  238 |   });\n  239 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:236:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:09:47.493Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-5d0bc--NEFT-shows-reference-field-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-5d0bc--NEFT-shows-reference-field-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 46,
                        "line": 236
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-d8f923b25c45290b6ecc",
              "file": "fundcustodian.spec.js",
              "line": 235,
              "column": 3
            },
            {
              "title": "selecting IMPS shows reference field",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 39,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1098,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:241:46",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 46,
                          "line": 241
                        },
                        "snippet": "  239 |\n  240 |   test('selecting IMPS shows reference field', async ({ page }) => {\n> 241 |     await page.locator('[data-mode=\"imps\"]').click();\n      |                                              ^\n  242 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  243 |   });\n  244 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 46,
                            "line": 241
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n\n\n  239 |\n  240 |   test('selecting IMPS shows reference field', async ({ page }) => {\n> 241 |     await page.locator('[data-mode=\"imps\"]').click();\n      |                                              ^\n  242 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  243 |   });\n  244 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:241:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:09:50.023Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-3b50d--IMPS-shows-reference-field-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-3b50d--IMPS-shows-reference-field-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 46,
                        "line": 241
                      }
                    },
                    {
                      "workerIndex": 40,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 887,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:241:46",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 46,
                          "line": 241
                        },
                        "snippet": "  239 |\n  240 |   test('selecting IMPS shows reference field', async ({ page }) => {\n> 241 |     await page.locator('[data-mode=\"imps\"]').click();\n      |                                              ^\n  242 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  243 |   });\n  244 |"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 46,
                            "line": 241
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"imps\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'tf')\">IMPS</div> aka locator('#tf-mode-chips').getByText('IMPS')\n    2) <div class=\"chip\" data-mode=\"imps\" onclick=\"selectMode(this,'av')\">IMPS</div> aka locator('#av-mode-chips').getByText('IMPS')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"imps\"]')\u001b[22m\n\n\n  239 |\n  240 |   test('selecting IMPS shows reference field', async ({ page }) => {\n> 241 |     await page.locator('[data-mode=\"imps\"]').click();\n      |                                              ^\n  242 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  243 |   });\n  244 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:241:46"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:09:53.171Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-3b50d--IMPS-shows-reference-field-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-3b50d--IMPS-shows-reference-field-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 46,
                        "line": 241
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-4bccbf499a57974c4ef9",
              "file": "fundcustodian.spec.js",
              "line": 240,
              "column": 3
            },
            {
              "title": "selecting Cheque shows reference field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 41,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1065,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:09:55.678Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-764f1e9ac54001c4e94d",
              "file": "fundcustodian.spec.js",
              "line": 245,
              "column": 3
            },
            {
              "title": "returning to cash hides reference field again",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 41,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 731,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:251:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 251
                        },
                        "snippet": "  249 |\n  250 |   test('returning to cash hides reference field again', async ({ page }) => {\n> 251 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  252 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  253 |     await page.locator('[data-mode=\"cash\"]').click();\n  254 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 251
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  249 |\n  250 |   test('returning to cash hides reference field again', async ({ page }) => {\n> 251 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  252 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  253 |     await page.locator('[data-mode=\"cash\"]').click();\n  254 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n    at /var/www/360lm/tests/fundcustodian.spec.js:251:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:09:57.104Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-8fd93-hides-reference-field-again-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-8fd93-hides-reference-field-again-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 251
                      }
                    },
                    {
                      "workerIndex": 42,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 870,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:251:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 251
                        },
                        "snippet": "  249 |\n  250 |   test('returning to cash hides reference field again', async ({ page }) => {\n> 251 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  252 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  253 |     await page.locator('[data-mode=\"cash\"]').click();\n  254 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 251
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  249 |\n  250 |   test('returning to cash hides reference field again', async ({ page }) => {\n> 251 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  252 |     await expect(page.locator('#tf-ref-group')).toBeVisible();\n  253 |     await page.locator('[data-mode=\"cash\"]').click();\n  254 |     await expect(page.locator('#tf-ref-group')).not.toBeVisible();\n    at /var/www/360lm/tests/fundcustodian.spec.js:251:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:09:58.903Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-8fd93-hides-reference-field-again-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-8fd93-hides-reference-field-again-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 251
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-77292d8be87cc2fca380",
              "file": "fundcustodian.spec.js",
              "line": 250,
              "column": 3
            },
            {
              "title": "custodian select excludes self (shambhu not in list)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 43,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2797,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:02.687Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-795c63d872974f0b0996",
              "file": "fundcustodian.spec.js",
              "line": 257,
              "column": 3
            },
            {
              "title": "submit with no custodian shows error toast",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 43,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1904,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:06.270Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-93553a68f921a13a1ff6",
              "file": "fundcustodian.spec.js",
              "line": 265,
              "column": 3
            },
            {
              "title": "submit with no amount shows error toast",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 43,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1568,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:08.265Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-c584ed83567c4d0e42a7",
              "file": "fundcustodian.spec.js",
              "line": 271,
              "column": 3
            },
            {
              "title": "today date is pre-filled",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 43,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 777,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:09.880Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-be22f6a44ee11b2e5370",
              "file": "fundcustodian.spec.js",
              "line": 277,
              "column": 3
            },
            {
              "title": "clear button resets form to defaults",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 43,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1004,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:285:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 285
                        },
                        "snippet": "  283 |     await page.locator('#tf-other').selectOption({ index: 1 });\n  284 |     await page.locator('#tf-amount').fill('5000');\n> 285 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  286 |     await page.locator('#tf-ref').fill('UPI-REF-123');\n  287 |     await page.locator('#tf-notes').fill('some notes');\n  288 |     await page.locator('button.btn-s', { hasText: 'Clear' }).click();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 285
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  283 |     await page.locator('#tf-other').selectOption({ index: 1 });\n  284 |     await page.locator('#tf-amount').fill('5000');\n> 285 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  286 |     await page.locator('#tf-ref').fill('UPI-REF-123');\n  287 |     await page.locator('#tf-notes').fill('some notes');\n  288 |     await page.locator('button.btn-s', { hasText: 'Clear' }).click();\n    at /var/www/360lm/tests/fundcustodian.spec.js:285:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:10.680Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-eff59-ton-resets-form-to-defaults-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-eff59-ton-resets-form-to-defaults-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 285
                      }
                    },
                    {
                      "workerIndex": 44,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 1076,
                      "error": {
                        "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n",
                        "stack": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:285:45",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 45,
                          "line": 285
                        },
                        "snippet": "  283 |     await page.locator('#tf-other').selectOption({ index: 1 });\n  284 |     await page.locator('#tf-amount').fill('5000');\n> 285 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  286 |     await page.locator('#tf-ref').fill('UPI-REF-123');\n  287 |     await page.locator('#tf-notes').fill('some notes');\n  288 |     await page.locator('button.btn-s', { hasText: 'Clear' }).click();"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 45,
                            "line": 285
                          },
                          "message": "Error: locator.click: Error: strict mode violation: locator('[data-mode=\"upi\"]') resolved to 2 elements:\n    1) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'tf')\">UPI</div> aka locator('#tf-mode-chips').getByText('UPI')\n    2) <div class=\"chip\" data-mode=\"upi\" onclick=\"selectMode(this,'av')\">UPI</div> aka locator('#av-mode-chips').getByText('UPI')\n\nCall log:\n\u001b[2m  - waiting for locator('[data-mode=\"upi\"]')\u001b[22m\n\n\n  283 |     await page.locator('#tf-other').selectOption({ index: 1 });\n  284 |     await page.locator('#tf-amount').fill('5000');\n> 285 |     await page.locator('[data-mode=\"upi\"]').click();\n      |                                             ^\n  286 |     await page.locator('#tf-ref').fill('UPI-REF-123');\n  287 |     await page.locator('#tf-notes').fill('some notes');\n  288 |     await page.locator('button.btn-s', { hasText: 'Clear' }).click();\n    at /var/www/360lm/tests/fundcustodian.spec.js:285:45"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:10:13.024Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-eff59-ton-resets-form-to-defaults-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Transfer-For-eff59-ton-resets-form-to-defaults-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 45,
                        "line": 285
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-980ba8254336a5f5fb57",
              "file": "fundcustodian.spec.js",
              "line": 282,
              "column": 3
            }
          ]
        },
        {
          "title": "Advance Form",
          "file": "fundcustodian.spec.js",
          "line": 300,
          "column": 6,
          "specs": [
            {
              "title": "\"Other\" employee reveals manual name field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1094,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:12.650Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-bd1008c75cbe58ea95cb",
              "file": "fundcustodian.spec.js",
              "line": 308,
              "column": 3
            },
            {
              "title": "selecting a named employee hides manual name field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 952,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:14.140Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-789e7bcaff6c81f31fd9",
              "file": "fundcustodian.spec.js",
              "line": 314,
              "column": 3
            },
            {
              "title": "cash mode default, ref field hidden",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 656,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:15.122Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-1e0e9761c2c9feb7e8a1",
              "file": "fundcustodian.spec.js",
              "line": 321,
              "column": 3
            },
            {
              "title": "UPI mode shows reference field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 805,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:15.802Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-695750155217d06b7bfc",
              "file": "fundcustodian.spec.js",
              "line": 325,
              "column": 3
            },
            {
              "title": "NEFT mode shows reference field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 813,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:16.628Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-90edef50db895b34874c",
              "file": "fundcustodian.spec.js",
              "line": 330,
              "column": 3
            },
            {
              "title": "IMPS mode shows reference field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1161,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:17.473Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-e5806dd79ff96a582b59",
              "file": "fundcustodian.spec.js",
              "line": 335,
              "column": 3
            },
            {
              "title": "no cheque option in advance form (transfers only)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1022,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:18.707Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-5e323dab2963d2b2d4e8",
              "file": "fundcustodian.spec.js",
              "line": 340,
              "column": 3
            },
            {
              "title": "submit with no employee shows error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1659,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:19.785Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-1bd8746c11abd3c9af44",
              "file": "fundcustodian.spec.js",
              "line": 345,
              "column": 3
            },
            {
              "title": "submit with \"Other\" but empty name shows error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1366,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:21.526Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-5c5748754a84c60cced3",
              "file": "fundcustodian.spec.js",
              "line": 351,
              "column": 3
            },
            {
              "title": "submit with no amount shows error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1049,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:22.954Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-4680c0c0cd5c22296a37",
              "file": "fundcustodian.spec.js",
              "line": 358,
              "column": 3
            },
            {
              "title": "today date is pre-filled",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1099,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:24.046Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-99c525f4b3ab3f19eb0c",
              "file": "fundcustodian.spec.js",
              "line": 364,
              "column": 3
            },
            {
              "title": "\"Other\" employee reveals manual name field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1357,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:16.404Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-5c6d097353ad649d8d99",
              "file": "fundcustodian.spec.js",
              "line": 308,
              "column": 3
            },
            {
              "title": "selecting a named employee hides manual name field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1342,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:18.147Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-c741d11383cbe9a327bf",
              "file": "fundcustodian.spec.js",
              "line": 314,
              "column": 3
            },
            {
              "title": "cash mode default, ref field hidden",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1089,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:19.605Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-fbac97618131384c3c7e",
              "file": "fundcustodian.spec.js",
              "line": 321,
              "column": 3
            },
            {
              "title": "UPI mode shows reference field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 914,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:20.744Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-37b1cf276059a17862a2",
              "file": "fundcustodian.spec.js",
              "line": 325,
              "column": 3
            },
            {
              "title": "NEFT mode shows reference field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 987,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:21.720Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-fc4b459a4b26e02deacc",
              "file": "fundcustodian.spec.js",
              "line": 330,
              "column": 3
            },
            {
              "title": "IMPS mode shows reference field",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 894,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:22.756Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-7292e8dca011f3e58da1",
              "file": "fundcustodian.spec.js",
              "line": 335,
              "column": 3
            },
            {
              "title": "no cheque option in advance form (transfers only)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1137,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:23.681Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-e2934f3895efc0802b02",
              "file": "fundcustodian.spec.js",
              "line": 340,
              "column": 3
            },
            {
              "title": "submit with no employee shows error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1088,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:24.882Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-27505533382af670f229",
              "file": "fundcustodian.spec.js",
              "line": 345,
              "column": 3
            },
            {
              "title": "submit with \"Other\" but empty name shows error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 745,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:26.007Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-6d7e50d815ddbc2bf4ad",
              "file": "fundcustodian.spec.js",
              "line": 351,
              "column": 3
            },
            {
              "title": "submit with no amount shows error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 889,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:26.784Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-3be5bc5840d507cebb49",
              "file": "fundcustodian.spec.js",
              "line": 358,
              "column": 3
            },
            {
              "title": "today date is pre-filled",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 635,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:27.707Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-dede24ad6db44e6e0606",
              "file": "fundcustodian.spec.js",
              "line": 364,
              "column": 3
            }
          ]
        },
        {
          "title": "Ledger — Transfers tab",
          "file": "fundcustodian.spec.js",
          "line": 373,
          "column": 6,
          "specs": [
            {
              "title": "Transfers tab active by default",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1166,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:25.246Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-e57c07202882cdf3a822",
              "file": "fundcustodian.spec.js",
              "line": 381,
              "column": 3
            },
            {
              "title": "shambhu ledger shows transfer rows",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 838,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:26.485Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-e493735869a94e6541d7",
              "file": "fundcustodian.spec.js",
              "line": 387,
              "column": 3
            },
            {
              "title": "status badges present in transfer rows",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 974,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:27.386Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-6c71a1e8e23d5545818f",
              "file": "fundcustodian.spec.js",
              "line": 393,
              "column": 3
            },
            {
              "title": "switching to Advances tab shows advances panel",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1400,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:28.383Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-eaf76ec5b56aa7863fd6",
              "file": "fundcustodian.spec.js",
              "line": 397,
              "column": 3
            },
            {
              "title": "no custodian filter for non-admin",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1046,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:29.870Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-e50e79ea7c8995f141a7",
              "file": "fundcustodian.spec.js",
              "line": 404,
              "column": 3
            },
            {
              "title": "Transfers tab active by default",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 653,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:28.377Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-aefcde38c2032ecc1167",
              "file": "fundcustodian.spec.js",
              "line": 381,
              "column": 3
            },
            {
              "title": "shambhu ledger shows transfer rows",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 702,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:29.060Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-71d6b8b8ae9059fe8bf2",
              "file": "fundcustodian.spec.js",
              "line": 387,
              "column": 3
            },
            {
              "title": "status badges present in transfer rows",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 768,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:29.792Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-335a7b8c0c60f9928824",
              "file": "fundcustodian.spec.js",
              "line": 393,
              "column": 3
            },
            {
              "title": "switching to Advances tab shows advances panel",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1010,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:30.596Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-2d71cb941d942a192eac",
              "file": "fundcustodian.spec.js",
              "line": 397,
              "column": 3
            },
            {
              "title": "no custodian filter for non-admin",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 772,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:31.648Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-07916bfb4aab00ca5be7",
              "file": "fundcustodian.spec.js",
              "line": 404,
              "column": 3
            }
          ]
        },
        {
          "title": "Ledger — admin (harish) with custodian filter",
          "file": "fundcustodian.spec.js",
          "line": 412,
          "column": 6,
          "specs": [
            {
              "title": "admin sees custodian filter dropdown",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1114,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:30.973Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-a59d920e2132ee7fefea",
              "file": "fundcustodian.spec.js",
              "line": 413,
              "column": 3
            },
            {
              "title": "admin sees custodian filter dropdown",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 767,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:32.453Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-c12a16483317dcc85e8c",
              "file": "fundcustodian.spec.js",
              "line": 413,
              "column": 3
            }
          ]
        },
        {
          "title": "Ledger — Advances tab data",
          "file": "fundcustodian.spec.js",
          "line": 428,
          "column": 6,
          "specs": [
            {
              "title": "advances show status badges (outstanding / partially_settled / settled)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1463,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:32.168Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-bf6b30ae3c42f031b684",
              "file": "fundcustodian.spec.js",
              "line": 429,
              "column": 3
            },
            {
              "title": "partially settled advance shows outstanding amount",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 654,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:33.670Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-05263987a6087fa1405e",
              "file": "fundcustodian.spec.js",
              "line": 441,
              "column": 3
            },
            {
              "title": "advances show status badges (outstanding / partially_settled / settled)",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 838,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:33.248Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-fbe477291331dbb17c6e",
              "file": "fundcustodian.spec.js",
              "line": 429,
              "column": 3
            },
            {
              "title": "partially settled advance shows outstanding amount",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 998,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:34.119Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-0a704304aab8aaebf84a",
              "file": "fundcustodian.spec.js",
              "line": 441,
              "column": 3
            }
          ]
        },
        {
          "title": "Manage Custodians (admin only)",
          "file": "fundcustodian.spec.js",
          "line": 456,
          "column": 6,
          "specs": [
            {
              "title": "custodian list loads all 4 custodians",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 693,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:34.358Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-24a5ba9ed0bb01036ea0",
              "file": "fundcustodian.spec.js",
              "line": 466,
              "column": 3
            },
            {
              "title": "primary custodian shows ⭐ Primary badge",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1223,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:35.067Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-d0c9ca9097e82f4d314d",
              "file": "fundcustodian.spec.js",
              "line": 472,
              "column": 3
            },
            {
              "title": "add custodian form — empty ID shows error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1421,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:36.329Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-39d6c9c5dd6eed803eb7",
              "file": "fundcustodian.spec.js",
              "line": 477,
              "column": 3
            },
            {
              "title": "add custodian form — empty name shows error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1885,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:37.860Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-d10e902cdd4122cdb627",
              "file": "fundcustodian.spec.js",
              "line": 483,
              "column": 3
            },
            {
              "title": "back button returns to dashboard",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 20,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30263,
                      "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": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 70,
                            "line": 490
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('button').filter({ hasText: '← Back to Dashboard' })\u001b[22m\n\u001b[2m    - locator resolved to <button class=\"btn-s\" onclick=\"showScreen('s-dash')\">← Back to Dashboard</button>\u001b[22m\n\u001b[2m  - attempting click action\u001b[22m\n\u001b[2m    2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m      - element is visible, enabled and stable\u001b[22m\n\u001b[2m      - scrolling into view if needed\u001b[22m\n\u001b[2m      - done scrolling\u001b[22m\n\u001b[2m      - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m    - retrying click action\u001b[22m\n\u001b[2m    - waiting 20ms\u001b[22m\n\u001b[2m    2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m      - element is visible, enabled and stable\u001b[22m\n\u001b[2m      - scrolling into view if needed\u001b[22m\n\u001b[2m      - done scrolling\u001b[22m\n\u001b[2m      - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m    - retrying click action\u001b[22m\n\u001b[2m      - waiting 100ms\u001b[22m\n\u001b[2m    54 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m       - element is visible, enabled and stable\u001b[22m\n\u001b[2m       - scrolling into view if needed\u001b[22m\n\u001b[2m       - done scrolling\u001b[22m\n\u001b[2m       - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m     - retrying click action\u001b[22m\n\u001b[2m       - waiting 500ms\u001b[22m\n\n\n  488 |\n  489 |   test('back button returns to dashboard', async ({ page }) => {\n> 490 |     await page.locator('button', { hasText: '← Back to Dashboard' }).click();\n      |                                                                      ^\n  491 |     await expect(page.locator('#s-dash')).toHaveClass(/active/);\n  492 |   });\n  493 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:490:70"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:06:39.792Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Manage-Custo-6a9fb-button-returns-to-dashboard-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Manage-Custo-6a9fb-button-returns-to-dashboard-android-chrome/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 21,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30187,
                      "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": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 70,
                            "line": 490
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('button').filter({ hasText: '← Back to Dashboard' })\u001b[22m\n\u001b[2m    - locator resolved to <button class=\"btn-s\" onclick=\"showScreen('s-dash')\">← Back to Dashboard</button>\u001b[22m\n\u001b[2m  - attempting click action\u001b[22m\n\u001b[2m    2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m      - element is visible, enabled and stable\u001b[22m\n\u001b[2m      - scrolling into view if needed\u001b[22m\n\u001b[2m      - done scrolling\u001b[22m\n\u001b[2m      - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m    - retrying click action\u001b[22m\n\u001b[2m    - waiting 20ms\u001b[22m\n\u001b[2m    2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m      - element is visible, enabled and stable\u001b[22m\n\u001b[2m      - scrolling into view if needed\u001b[22m\n\u001b[2m      - done scrolling\u001b[22m\n\u001b[2m      - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m    - retrying click action\u001b[22m\n\u001b[2m      - waiting 100ms\u001b[22m\n\u001b[2m    53 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m       - element is visible, enabled and stable\u001b[22m\n\u001b[2m       - scrolling into view if needed\u001b[22m\n\u001b[2m       - done scrolling\u001b[22m\n\u001b[2m       - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m     - retrying click action\u001b[22m\n\u001b[2m       - waiting 500ms\u001b[22m\n\n\n  488 |\n  489 |   test('back button returns to dashboard', async ({ page }) => {\n> 490 |     await page.locator('button', { hasText: '← Back to Dashboard' }).click();\n      |                                                                      ^\n  491 |     await expect(page.locator('#s-dash')).toHaveClass(/active/);\n  492 |   });\n  493 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:490:70"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:07:12.520Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Manage-Custo-6a9fb-button-returns-to-dashboard-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Manage-Custo-6a9fb-button-returns-to-dashboard-android-chrome-retry1/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-0b06a2728ba51186727f",
              "file": "fundcustodian.spec.js",
              "line": 489,
              "column": 3
            },
            {
              "title": "non-admin cannot reach manage screen via nav",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 910,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:07:44.263Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-d2ff9d722362f27be951",
              "file": "fundcustodian.spec.js",
              "line": 494,
              "column": 3
            },
            {
              "title": "custodian list loads all 4 custodians",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 840,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:35.156Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-93c2ee71dd3329528b9d",
              "file": "fundcustodian.spec.js",
              "line": 466,
              "column": 3
            },
            {
              "title": "primary custodian shows ⭐ Primary badge",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1103,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:36.054Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-53baee608415d70d0402",
              "file": "fundcustodian.spec.js",
              "line": 472,
              "column": 3
            },
            {
              "title": "add custodian form — empty ID shows error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1250,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:37.238Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-af2638cfeeb8c5dda02e",
              "file": "fundcustodian.spec.js",
              "line": 477,
              "column": 3
            },
            {
              "title": "add custodian form — empty name shows error",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1392,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:38.573Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-297b829ff49d7f5eec1e",
              "file": "fundcustodian.spec.js",
              "line": 483,
              "column": 3
            },
            {
              "title": "back button returns to dashboard",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 45,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30231,
                      "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": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 70,
                            "line": 490
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('button').filter({ hasText: '← Back to Dashboard' })\u001b[22m\n\u001b[2m    - locator resolved to <button class=\"btn-s\" onclick=\"showScreen('s-dash')\">← Back to Dashboard</button>\u001b[22m\n\u001b[2m  - attempting click action\u001b[22m\n\u001b[2m    2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m      - element is visible, enabled and stable\u001b[22m\n\u001b[2m      - scrolling into view if needed\u001b[22m\n\u001b[2m      - done scrolling\u001b[22m\n\u001b[2m      - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m    - retrying click action\u001b[22m\n\u001b[2m    - waiting 20ms\u001b[22m\n\u001b[2m    2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m      - element is visible, enabled and stable\u001b[22m\n\u001b[2m      - scrolling into view if needed\u001b[22m\n\u001b[2m      - done scrolling\u001b[22m\n\u001b[2m      - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m    - retrying click action\u001b[22m\n\u001b[2m      - waiting 100ms\u001b[22m\n\u001b[2m    54 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m       - element is visible, enabled and stable\u001b[22m\n\u001b[2m       - scrolling into view if needed\u001b[22m\n\u001b[2m       - done scrolling\u001b[22m\n\u001b[2m       - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m     - retrying click action\u001b[22m\n\u001b[2m       - waiting 500ms\u001b[22m\n\n\n  488 |\n  489 |   test('back button returns to dashboard', async ({ page }) => {\n> 490 |     await page.locator('button', { hasText: '← Back to Dashboard' }).click();\n      |                                                                      ^\n  491 |     await expect(page.locator('#s-dash')).toHaveClass(/active/);\n  492 |   });\n  493 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:490:70"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:10:40.006Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Manage-Custo-6a9fb-button-returns-to-dashboard-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Manage-Custo-6a9fb-button-returns-to-dashboard-desktop-chrome/error-context.md"
                        }
                      ]
                    },
                    {
                      "workerIndex": 46,
                      "parallelIndex": 0,
                      "status": "timedOut",
                      "duration": 30432,
                      "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": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 70,
                            "line": 490
                          },
                          "message": "Error: locator.click: Test timeout of 30000ms exceeded.\nCall log:\n\u001b[2m  - waiting for locator('button').filter({ hasText: '← Back to Dashboard' })\u001b[22m\n\u001b[2m    - locator resolved to <button class=\"btn-s\" onclick=\"showScreen('s-dash')\">← Back to Dashboard</button>\u001b[22m\n\u001b[2m  - attempting click action\u001b[22m\n\u001b[2m    2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m      - element is visible, enabled and stable\u001b[22m\n\u001b[2m      - scrolling into view if needed\u001b[22m\n\u001b[2m      - done scrolling\u001b[22m\n\u001b[2m      - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m    - retrying click action\u001b[22m\n\u001b[2m    - waiting 20ms\u001b[22m\n\u001b[2m    2 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m      - element is visible, enabled and stable\u001b[22m\n\u001b[2m      - scrolling into view if needed\u001b[22m\n\u001b[2m      - done scrolling\u001b[22m\n\u001b[2m      - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m    - retrying click action\u001b[22m\n\u001b[2m      - waiting 100ms\u001b[22m\n\u001b[2m    52 × waiting for element to be visible, enabled and stable\u001b[22m\n\u001b[2m       - element is visible, enabled and stable\u001b[22m\n\u001b[2m       - scrolling into view if needed\u001b[22m\n\u001b[2m       - done scrolling\u001b[22m\n\u001b[2m       - <button class=\"bnav-btn\" id=\"nav-advance\" onclick=\"showScreen('s-advance')\">…</button> from <nav id=\"bnav\" class=\"bnav\">…</nav> subtree intercepts pointer events\u001b[22m\n\u001b[2m     - retrying click action\u001b[22m\n\u001b[2m       - waiting 500ms\u001b[22m\n\n\n  488 |\n  489 |   test('back button returns to dashboard', async ({ page }) => {\n> 490 |     await page.locator('button', { hasText: '← Back to Dashboard' }).click();\n      |                                                                      ^\n  491 |     await expect(page.locator('#s-dash')).toHaveClass(/active/);\n  492 |   });\n  493 |\n    at /var/www/360lm/tests/fundcustodian.spec.js:490:70"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:11:13.142Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Manage-Custo-6a9fb-button-returns-to-dashboard-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Manage-Custo-6a9fb-button-returns-to-dashboard-desktop-chrome-retry1/error-context.md"
                        }
                      ]
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-7e5e194816d8d75cc7d8",
              "file": "fundcustodian.spec.js",
              "line": 489,
              "column": 3
            },
            {
              "title": "non-admin cannot reach manage screen via nav",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 2215,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:11:47.705Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-96b51e50ce4e2d6578c7",
              "file": "fundcustodian.spec.js",
              "line": 494,
              "column": 3
            }
          ]
        },
        {
          "title": "Reject Transfer Modal",
          "file": "fundcustodian.spec.js",
          "line": 505,
          "column": 6,
          "specs": [
            {
              "title": "clicking reject button opens reject modal",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 743,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:07:45.397Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-c0f89785aa80f2dc2453",
              "file": "fundcustodian.spec.js",
              "line": 506,
              "column": 3
            },
            {
              "title": "cancel button closes reject modal",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 635,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:07:46.174Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-9f82e9d3279becc0f6d4",
              "file": "fundcustodian.spec.js",
              "line": 515,
              "column": 3
            },
            {
              "title": "clicking reject button opens reject modal",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1034,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:11:50.566Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-17feaf856c6481abb7a8",
              "file": "fundcustodian.spec.js",
              "line": 506,
              "column": 3
            },
            {
              "title": "cancel button closes reject modal",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1453,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:11:51.659Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-21e56049a73a4b288c61",
              "file": "fundcustodian.spec.js",
              "line": 515,
              "column": 3
            }
          ]
        },
        {
          "title": "Bottom Navigation",
          "file": "fundcustodian.spec.js",
          "line": 528,
          "column": 6,
          "specs": [
            {
              "title": "nav → Transfer shows transfer screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 602,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:07:46.845Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-1fe5c51479cb627e6017",
              "file": "fundcustodian.spec.js",
              "line": 535,
              "column": 3
            },
            {
              "title": "nav → Advance shows advance screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 483,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:07:47.473Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-d6cf3c3e21a7d3674ed1",
              "file": "fundcustodian.spec.js",
              "line": 542,
              "column": 3
            },
            {
              "title": "nav → Ledger shows ledger screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 555,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:07:47.986Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-b6162d87517fdb5f7f64",
              "file": "fundcustodian.spec.js",
              "line": 548,
              "column": 3
            },
            {
              "title": "nav → Dashboard returns home",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 530,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:07:48.571Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-551b6bf70781ebd5731f",
              "file": "fundcustodian.spec.js",
              "line": 554,
              "column": 3
            },
            {
              "title": "Hub button is visible on every screen",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 22,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5519,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    14 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    14 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:564:54",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 54,
                          "line": 564
                        },
                        "snippet": "  562 |     for (const screen of ['#nav-transfer', '#nav-advance', '#nav-ledger', '#nav-dash']) {\n  563 |       await page.locator(screen).click();\n> 564 |       await expect(page.locator('.hub-btn').first()).toBeVisible();\n      |                                                      ^\n  565 |     }\n  566 |   });\n  567 | });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 54,
                            "line": 564
                          },
                          "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('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    14 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n\n  562 |     for (const screen of ['#nav-transfer', '#nav-advance', '#nav-ledger', '#nav-dash']) {\n  563 |       await page.locator(screen).click();\n> 564 |       await expect(page.locator('.hub-btn').first()).toBeVisible();\n      |                                                      ^\n  565 |     }\n  566 |   });\n  567 | });\n    at /var/www/360lm/tests/fundcustodian.spec.js:564:54"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:07:49.119Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Bottom-Navig-43240--is-visible-on-every-screen-android-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Bottom-Navig-43240--is-visible-on-every-screen-android-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 54,
                        "line": 564
                      }
                    },
                    {
                      "workerIndex": 23,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 5740,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    14 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    14 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:564:54",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 54,
                          "line": 564
                        },
                        "snippet": "  562 |     for (const screen of ['#nav-transfer', '#nav-advance', '#nav-ledger', '#nav-dash']) {\n  563 |       await page.locator(screen).click();\n> 564 |       await expect(page.locator('.hub-btn').first()).toBeVisible();\n      |                                                      ^\n  565 |     }\n  566 |   });\n  567 | });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 54,
                            "line": 564
                          },
                          "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('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    14 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n\n  562 |     for (const screen of ['#nav-transfer', '#nav-advance', '#nav-ledger', '#nav-dash']) {\n  563 |       await page.locator(screen).click();\n> 564 |       await expect(page.locator('.hub-btn').first()).toBeVisible();\n      |                                                      ^\n  565 |     }\n  566 |   });\n  567 | });\n    at /var/www/360lm/tests/fundcustodian.spec.js:564:54"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:07:55.667Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Bottom-Navig-43240--is-visible-on-every-screen-android-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Bottom-Navig-43240--is-visible-on-every-screen-android-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 54,
                        "line": 564
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-db2bab9ebcfa601ddfc3",
              "file": "fundcustodian.spec.js",
              "line": 561,
              "column": 3
            },
            {
              "title": "nav → Transfer shows transfer screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1020,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:11:53.187Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-1403f351436cbb8d6daa",
              "file": "fundcustodian.spec.js",
              "line": 535,
              "column": 3
            },
            {
              "title": "nav → Advance shows advance screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 990,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:11:54.265Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-efea879496cabf15649a",
              "file": "fundcustodian.spec.js",
              "line": 542,
              "column": 3
            },
            {
              "title": "nav → Ledger shows ledger screen",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 754,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:11:55.340Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-567dd23c0791430f34c0",
              "file": "fundcustodian.spec.js",
              "line": 548,
              "column": 3
            },
            {
              "title": "nav → Dashboard returns home",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 629,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:11:56.128Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-e4a4288e8881ff9d44df",
              "file": "fundcustodian.spec.js",
              "line": 554,
              "column": 3
            },
            {
              "title": "Hub button is visible on every screen",
              "ok": false,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 47,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6583,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:564:54",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 54,
                          "line": 564
                        },
                        "snippet": "  562 |     for (const screen of ['#nav-transfer', '#nav-advance', '#nav-ledger', '#nav-dash']) {\n  563 |       await page.locator(screen).click();\n> 564 |       await expect(page.locator('.hub-btn').first()).toBeVisible();\n      |                                                      ^\n  565 |     }\n  566 |   });\n  567 | });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 54,
                            "line": 564
                          },
                          "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('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n\n  562 |     for (const screen of ['#nav-transfer', '#nav-advance', '#nav-ledger', '#nav-dash']) {\n  563 |       await page.locator(screen).click();\n> 564 |       await expect(page.locator('.hub-btn').first()).toBeVisible();\n      |                                                      ^\n  565 |     }\n  566 |   });\n  567 | });\n    at /var/www/360lm/tests/fundcustodian.spec.js:564:54"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:11:56.786Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Bottom-Navig-43240--is-visible-on-every-screen-desktop-chrome/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Bottom-Navig-43240--is-visible-on-every-screen-desktop-chrome/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 54,
                        "line": 564
                      }
                    },
                    {
                      "workerIndex": 48,
                      "parallelIndex": 0,
                      "status": "failed",
                      "duration": 6335,
                      "error": {
                        "message": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n",
                        "stack": "Error: \u001b[2mexpect(\u001b[22m\u001b[31mlocator\u001b[39m\u001b[2m).\u001b[22mtoBeVisible\u001b[2m(\u001b[22m\u001b[2m)\u001b[22m failed\n\nLocator:  locator('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n    at /var/www/360lm/tests/fundcustodian.spec.js:564:54",
                        "location": {
                          "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                          "column": 54,
                          "line": 564
                        },
                        "snippet": "  562 |     for (const screen of ['#nav-transfer', '#nav-advance', '#nav-ledger', '#nav-dash']) {\n  563 |       await page.locator(screen).click();\n> 564 |       await expect(page.locator('.hub-btn').first()).toBeVisible();\n      |                                                      ^\n  565 |     }\n  566 |   });\n  567 | });"
                      },
                      "errors": [
                        {
                          "location": {
                            "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                            "column": 54,
                            "line": 564
                          },
                          "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('.hub-btn').first()\nExpected: visible\nReceived: hidden\nTimeout:  5000ms\n\nCall log:\n\u001b[2m  - Expect \"toBeVisible\" with timeout 5000ms\u001b[22m\n\u001b[2m  - waiting for locator('.hub-btn').first()\u001b[22m\n\u001b[2m    13 × locator resolved to <button class=\"hub-btn\" onclick=\"location.href='/hub/'\">🏡 Hub</button>\u001b[22m\n\u001b[2m       - unexpected value \"hidden\"\u001b[22m\n\n\n  562 |     for (const screen of ['#nav-transfer', '#nav-advance', '#nav-ledger', '#nav-dash']) {\n  563 |       await page.locator(screen).click();\n> 564 |       await expect(page.locator('.hub-btn').first()).toBeVisible();\n      |                                                      ^\n  565 |     }\n  566 |   });\n  567 | });\n    at /var/www/360lm/tests/fundcustodian.spec.js:564:54"
                        }
                      ],
                      "stdout": [],
                      "stderr": [],
                      "retry": 1,
                      "startTime": "2026-05-20T06:12:06.853Z",
                      "annotations": [],
                      "attachments": [
                        {
                          "name": "screenshot",
                          "contentType": "image/png",
                          "path": "/var/www/360lm/test-results/fundcustodian-Bottom-Navig-43240--is-visible-on-every-screen-desktop-chrome-retry1/test-failed-1.png"
                        },
                        {
                          "name": "error-context",
                          "contentType": "text/markdown",
                          "path": "/var/www/360lm/test-results/fundcustodian-Bottom-Navig-43240--is-visible-on-every-screen-desktop-chrome-retry1/error-context.md"
                        }
                      ],
                      "errorLocation": {
                        "file": "/var/www/360lm/tests/fundcustodian.spec.js",
                        "column": 54,
                        "line": 564
                      }
                    }
                  ],
                  "status": "unexpected"
                }
              ],
              "id": "1caa50027b536c34a40f-df6b398b147755b5374a",
              "file": "fundcustodian.spec.js",
              "line": 561,
              "column": 3
            }
          ]
        },
        {
          "title": "Status Badge Rendering",
          "file": "fundcustodian.spec.js",
          "line": 572,
          "column": 6,
          "specs": [
            {
              "title": "admin ledger shows all expected transfer statuses",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "android-chrome",
                  "projectName": "android-chrome",
                  "results": [
                    {
                      "workerIndex": 24,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 984,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:08:03.870Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-23285101eada7bb8d05b",
              "file": "fundcustodian.spec.js",
              "line": 573,
              "column": 3
            },
            {
              "title": "admin ledger shows all expected transfer statuses",
              "ok": true,
              "tags": [],
              "tests": [
                {
                  "timeout": 30000,
                  "annotations": [],
                  "expectedStatus": "passed",
                  "projectId": "desktop-chrome",
                  "projectName": "desktop-chrome",
                  "results": [
                    {
                      "workerIndex": 49,
                      "parallelIndex": 0,
                      "status": "passed",
                      "duration": 1462,
                      "errors": [],
                      "stdout": [],
                      "stderr": [],
                      "retry": 0,
                      "startTime": "2026-05-20T06:12:15.694Z",
                      "annotations": [],
                      "attachments": []
                    }
                  ],
                  "status": "expected"
                }
              ],
              "id": "1caa50027b536c34a40f-6d6b62b2b820568852bd",
              "file": "fundcustodian.spec.js",
              "line": 573,
              "column": 3
            }
          ]
        }
      ]
    }
  ],
  "errors": [],
  "stats": {
    "startTime": "2026-05-20T06:03:00.775Z",
    "duration": 556998.1290000001,
    "expected": 112,
    "skipped": 0,
    "unexpected": 24,
    "flaky": 0
  }
}
